2016-11-09 83 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' 

我也得到了以下错误,当我使用只是一个空格(”“)作为一个答案,这我想编写一个Print(“无效输入”)响应的东西,是不是数字或完成,但结果总是在:

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

仍返回相同 '回溯(最近最后一次通话): 文件 “XXXX”,第17行,在 如果INT(数字)%2 == 0: ValueError异常:无效的字面INT()与基地10:''' – maaier

+0

你确定,我测试了它,给了我完美的结果..等待粘贴输出 –

+0

啊,我没有通行证。现在导致明显的无效响应。真棒:) – maaier

0

错误消息很明显:number包含一个空格,无法将其解析为整数。如果你想标记这样的输入无效,你必须在之前测试试图将其转换为整数(或捕获这样做的错误)。

+0

你会怎么建议添加/更改?我有点傻眼,因为我尝试添加不同的测试人员,但收到相同的结果。 – 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() 
相关问题