2016-11-21 72 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? ")) 
相关问题