2016-11-21 2 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

私はあなたのプログラムが2つの変更を行うことができると思います。まず、読み込みを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? ")) 
関連する問題