2016-11-09 5 views
0

私のコードは次のとおりです。文のエラーの場合:ValueErrorを:int型のための無効なリテラル()ベース10と次のように「」と注文intのうち()

allnums = [] 
odds = [] 
evens = [] 

number = 0 

while True: 
    number = input("Enter a number or type 'done':") 

    if number.lower() == 'done': 
     print("=============================") 
     print("Your even numbers are", str(evens)) 
     print("Your odds numbers are", str(odds)) 
     print("=============================") 
     print("Your smallest number is '"+str(allnums[0])+"'") 
     break 
    if int(number) % 2 == 0: 
     evens.append(number) 
     evens.sort() 
     allnums.append(number) 
     allnums.sort()  
    if int(number) % 2 != 0: 
     odds.append(number) 
     odds.sort() 
     allnums.append(number) 
     allnums.sort() 
    else: 
     print("Invalid input") 

私はそのプログラムを作成しようとしています数字のリストを読み取り、最低値を決定し、偶数および奇数のリストも提供する。 、私は答えとして単にスペース(」「)を使用する場合、私はまた、次のエラーを取得する

Enter a number or type 'done':33 
Enter a number or type 'done':4 
Invalid input 
Enter a number or type 'done':6 
Invalid input 
Enter a number or type 'done':4 
Invalid input 
Enter a number or type 'done':6 
Invalid input 
Enter a number or type 'done':7 
Enter a number or type 'done':44 
Invalid input 
Enter a number or type 'done':88 
Invalid input 
Enter a number or type 'done':done 
============================= 
Your even numbers are ['4', '4', '44', '6', '6', '88'] 
Your odds numbers are ['33', '7'] 
============================= 
Your smallest number is '33' 

た:私は、例えば、最低数は、多くの場合、正しくない私のコードには2つの問題に実行していますよ私は、印刷番号または行わないものに(「無効な入力」)応答を書くことが好きで、いつもになります:

Traceback (most recent call last): 
    File "XXXX", line 17, in <module> 
    if int(number) % 2 == 0: 
ValueError: invalid literal for int() with base 10: ' ' 

私は、これはイベントの順序で行うことをほとんど持って知っているが、どのような私は行方不明ですか?

答えて

0
allnums = [] 
odds = [] 
evens = [] 

number = 0 

while True: 
    try: 
     number = input("Enter a number or type 'done':") 

     if number.lower() == 'done': 
      print("=============================") 
      print("Your even numbers are", str(sorted(evens))) 
      print("Your odds numbers are", str(sorted(odds))) 
      print("=============================") 
      print("Your smallest number is '"+str(sorted(allnums)[0])+"'") 
      break 
     elif int(number) % 2 == 0: 
      evens.append(number) 
      #evens.sort() 
      allnums.append(number) 
      #allnums.sort()  
     elif int(number) % 2 != 0: 
      odds.append(number) 
      #odds.sort() 
      allnums.append(number) 
      #allnums.sort() 
     pass 

    except: 
     print("Invalid input") 
    pass 

あなたが確信している、これは私の出力

[email protected]:~/Desktop/d$ python3 code.py 
Enter a number or type 'done':12 
Enter a number or type 'done': 
Invalid input 
Enter a number or type 'done': 
Invalid input 
Enter a number or type 'done':qwe 
Invalid input 
Enter a number or type 'done': 
Invalid input 
Enter a number or type 'done':wqew 
Invalid input 
Enter a number or type 'done':done 
============================= 
Your even numbers are ['12'] 
Your odds numbers are [] 
============================= 
Your smallest number is '12' 
+0

はまだ同じ 'トレースバックを(最新の呼び出しの最後)を返します10: '' ' – maaier

+0

あなたは確かですか、それをテストして、私に完璧な結果を与えました。出力を貼り付けるのを待ちます。 –

+0

ああ、私はパスを持っていませんでした。今すぐ無効な応答が無効になります。恐ろしい:) – maaier

0

エラーメッセージはかなり明確です。numberにはスペースが含まれていますが、これは整数に解析できません。そのような入力を無効にフラグを設定する場合は、の前にを整数に変換しようとする前にテストしなければなりません。

+0

あなたは、変更/追加は何を示唆していますか?私は別のテスターを追加しようとしたが、同じ結果を受け取ったので、ちょっと馬鹿げている。ベースとint型のための無効なリテラル(): で ファイル "XXXX"、ライン17、INT(数値)%2 == 0の場合: とValueError – maaier

0

であるあなたは二つの問題があります。

  1. をあなたはそれから数を取得しようとしているの前にスペースをチェックする必要があります。

  2. 次に、あなたはそれがstring代わりのnumberをソートしますよう間違ったソート結果で終了しますあなたのリストに文字列として番号の入力を追加しています。


allnums = [] 
odds = [] 
evens = [] 

number = 0 

    if number.lower() == 'done': 
    evens.sort() 
    odds.sort() 
    allnums.sort() 
    print("=============================") 
    print("Your even numbers are", str(evens)) 
    print("Your odds numbers are", str(odds)) 
    print("=============================") 
    print("Your smallest number is '"+str(allnums[0])+"'") 
    break 

if number.isspace(): 
    print("Invalid input") 
else: 
    number = int(number) 
    if int(number) % 2 == 0: 
     evens.append(number) 
     allnums.append(number) 
    elif int(number) % 2 != 0: 
     odds.append(number) 
     allnums.append(number) 
0
allnums = [] 
odds = [] 
evens = [] 

number = 0 

while True: 
    number = input("Enter a number or type 'done':") 

    if number.lower() == 'done': 
     print("=============================") 
     print("Your even numbers are", str(evens)) 
     print("Your odds numbers are", str(odds)) 
     print("=============================") 
     print("Your smallest number is '" + sorted(allnums)[0] + "'") 
     break 
    if not number.isnumeric(): 
     print("Invalid input") 
     continue 
    if int(number) % 2 == 0: 
     evens.append(number) 
     evens.sort() 
     allnums.append(number) 
     allnums.sort() 
    if int(number) % 2 != 0: 
     odds.append(number) 
     odds.sort() 
     allnums.append(number) 
     allnums.sort() 
関連する問題