2016-10-29 8 views
0

テキストファイルを繰り返し処理して合計を求めるプログラムを作成していますが、必要な値を下回る値はすべて請求書ファイルに追加する必要があります。しかし、私が作成したコードは、補充する必要があるすべてのものではなく、1つの製品を書き込むだけです。ここでPython - テキストファイルの検索

がメインのコードされています。ここでは、請求書ファイル

def createRestockFile(productName,minimumStockLevel,currentStock, amountNeeded,costToUs): 
    with open("invoice.txt", 'r+') as f: 
     f.write("#Product Name\tMinimum Stock Level\tCurrent Stock Level\tAmount Needed\tCost To Re-Order \n") 
     f.write("%s\t%s\t%s\t%s\t%s" % (productName,minimumStockLevel,currentStock,amountNeeded,costToUs)) 

def checkStock(): 
    with open("stock.txt",'r+') as f: 
     for line in f: 
      if int(line.split()[2]) < int(line.split()[5]): 
       amountNeeded = int(line.split()[5]) - int(line.split()[2]) 
       total = '£{:,.2f}'.format(float(line.split()[3])*amountNeeded) 
       createRestockFile(line.split()[1],line.split()[5],line.split()[2],amountNeeded,total) 
       print(line.split()) 


def startProgramme(): 
    yesInput = ["yes", "yes please", "y"] 
    noInput = ["no","nope","n"] 
    print("Welcome to Sean's Stock re-order programme") 
    choice = input("Would you like to check which products need re-ordering ") 
    if choice in yesInput: 
     checkStock() 
    elif choice in noInput: 
     import time 
     print("Thank you for using Sean's re-order programme") 
     print("Ending Programme") 
     time.sleep(0.6) 
     exit() 



startProgramme() 

さ:

45678948 Twix 12 0.42 0.65 25 50 
12345670 Wispa 6 0.34 0.85 16 40 
26073125 Crunchie 37 0.37 0.69 8 43  
24785122 Flake 47 0.24 0.65 10 35 
45678914 Snickers 42 0.46 0.75 8 32  
78945617 Maltesers 78 0.32 0.56 12 65  
85146945 Galaxy 57 0.32 0.76 9 54 

与えられた付:

#Product Name Minimum Stock Level Current Stock Level Amount Needed Cost To Re-Order 
Wispa 16 6 10 £3.4003.40 

ここでは、ストック・ファイルでありますストックファイル内の値、プログラムはtwixとwispaの両方を請求書ファイルに追加する必要がありますが、wispaだけが追加されます。どんな助けも大いにありがたいです

答えて

0

あなたはinvoice.txtを開いてモードを変更する必要があります。機能については、r+からa+に変更する必要があります。 twix請求書を書いてそれを削除してwispaを書いています。

0

次のコードは私に適しています。

インボイスファイルをメインプログラムに開くコードの位置を移動して、オープニングモードを "w +"にすることができます。また、入力行を1回だけ分割する(時間を節約してコードを短くする)ようにコードを書いたことにも注意してください。

def createRestockFile(productName,minimumStockLevel,currentStock, amountNeeded,costToUs, f): 
    f.write("%s\t%s\t%s\t%s\t%s" % (productName,minimumStockLevel,currentStock,amountNeeded,costToUs) + "\n") 


def checkStock(invoiceFile): 
    with open("stock.txt",'r+') as f: 
     for line in f: 
      splits = line.split() 
      if int(splits[2]) < int(splits[5]): 
       amountNeeded = int(splits[5]) - int(splits[2]) 
       total = '£{:,.2f}'.format(float(splits[3])*amountNeeded) 
       createRestockFile(splits[1],splits[5],splits[2],amountNeeded,total, invoiceFile) 
       print(splits) 


def startProgramme(): 
    yesInput = ["yes", "yes please", "y"] 
    noInput = ["no","nope","n"] 
    print("Welcome to Sean's Stock re-order programme") 
    choice = input("Would you like to check which products need re-ordering ") 
    if choice in yesInput: 
     invoice_f = open("invoice.txt", 'w+') 
     invoice_f.write("#Product Name\tMinimum Stock Level\tCurrent Stock Level\tAmount Needed\tCost To Re-Order \n") 
     checkStock(invoice_f) 
     invoice_f.close() 
    elif choice in noInput: 
     import time 
     print("Thank you for using Sean's re-order programme") 
     print("Ending Programme") 
     time.sleep(0.6) 
     exit() 

startProgramme() 
関連する問題