2016-11-21 120 views
0

我需要比較2個值:列表中的第一個變量和用戶的輸入。用戶的輸入已經是一個整數,但代碼不會讓我將另一個值轉換爲整數形式。爲什麼我無法將此數字設置爲整數?

我試過「int」,「float」和「complex」只是爲了看,但沒有成功。

這裏是我的代碼:

Stock = open("stock.txt","r") 
Next = False 
print("Products avaliable are: ") 
for loop in range (10): 
    StockProduct = Stock.readline() 
    product = StockProduct.split("\t") 
    print(product[0] , product[1]) 
while Next != True: 
    USERproduct = int(input("Which product did you buy? ")) 
    Amount = int(input("How many did you buy? ")) 
    for loop in range (10): 
     StockProduct = Stock.readline() 
     product = StockProduct.split("\t") 
     productONE = product[0] 

     if USERproduct == int(productONE) : 
      USER2 == product 
      print(USER2) 
      Next = True 
     else: 
      USERproduct = int(input(" 2 Which product did you buy? ")) 
     # Amount = int(input("2 How many did you buy? ")) 

,輸出是:

Traceback (most recent call last): 
    File "C:\Users\User\Documents\Task 3.py", line 20, in <module> 
    if USERproduct == int(productONE) : 
ValueError: invalid literal for int() with base 10: '' 
>>> 

這是在學校控制的評估。

+8

您有一行以製表符開頭的行。當您在製表符分隔符上分割該行時,第一個元素是一個空字符串,它不是數字。 – TigerhawkT3

+0

就在壞行之前,添加'print(product)'。在發生程序崩潰之前,您可能會獲得幾張不錯的照片。但看看壞的第一個元素,然後看看輸入文本中的哪一行是壞的。您可以嘗試檢測壞行 - 但如果您的程序需要嚴格有效的輸入,則在此處崩潰也是合法的。例如,Python不會嘗試修復輸入的壞行,它會引發語法錯誤。 – tdelaney

+0

你的輸入文件有多大? readline()在到達文件末尾時返回一個空字符串。而分割一個空字符串最後是'['']',這看起來很像你的錯誤。 – tdelaney

回答

0

我認爲你可以讓你的程序工作兩個變化。首先,不是將讀取限制爲10行,而是遍歷文件。其次,一旦你完成了這個文件,你需要將它倒回到開始或重新打開它。

Stock = open("stock.txt","r") 
Next = False 
print("Products avaliable are: ") 
for StockProduct in Stock: 
    product = StockProduct.split("\t") 
    print(product[0] , product[1]) 
while Next != True: 
    USERproduct = int(input("Which product did you buy? ")) 
    Amount = int(input("How many did you buy? ")) 
    Stock.seek(0) 
    for StockProduct in Stock: 
     product = StockProduct.split("\t") 
     productONE = product[0] 

     if USERproduct == int(productONE) : 
      USER2 == product 
      print(USER2) 
      Next = True 
     else: 
      USERproduct = int(input(" 2 Which product did you buy? ")) 
     # Amount = int(input("2 How many did you buy? ")) 
相關問題