2016-09-28 55 views
-2

每当我测试我的计算器,看看它如何处理输入不是数字,它会标记一个ValueError。更确切地说,这一个“ValueError:无法将字符串转换为浮点数:'a'”。我试图修改这个,所以有一个解决方案来处理非整数,但无济于事......非常感谢帮助。我的初学python项目(计算器)有输入问题

这里是我到目前为止的代码:

print("1. ADDITION ") 
print("2. MULTIPLICATION ") 
print("3. TAKEAWAY ") 
print("4. DIVISION ") 

Operator = int(input("please enter one of the numbers above to decide the operator you want. ")) 

while Operator > 4: 
    print("Please select a number from the options above. ") 
    Operator = int(input("please enter one of the numbers above to decide the operator you want. ")) 
    if Operator != (1 or 2 or 3 or 4): 
     print("please enter one of the options above. ") 
     Operator = int(input("please enter one of the numbers above to decide the operator you want. ")) 
    continue 

while True: 
    Num1 = float(input("Please enter first number. ")) 
    if Num1 == float(Num1): 
     print("thanks! ") 
    elif Num1 != float(Num1): 
     Num1 = float(input("Please enter first number. ")) 
    break 

while True: 
    Num2 = float(input("Please enter second number. ")) 
    if Num2 == float(Num2): 
     print("thanks ") 
    elif Num1 != float(Num1): 
     Num1 = float(input("Please enter first number. ")) 
    break 
+0

您需要查看['try/except'](https://docs.python.org/3/tutorial/errors.html#handling-exceptions)块。 –

+0

...并在这里的解决方案将告诉你如何:http://stackoverflow.com/questions/8420143/valueerror-could-not-convert-string-to-float-id –

回答

1

异常处理是什么你在找什么。 Smthng这样的:

input = 'a' 
try: 
    int(a) 
except ValueError: 
    print 'Input is not integer' 
0

注意:应在小写根据PEP8命名变量,请参阅:What is the naming convention in Python for variable and function names?

如果要重新输入,直到你没有得到ValueError,把它放在一个循环:

print("Please select a number from the options above.") 
while True: 
    try: 
     operator = int(input("please enter one of the numbers above to decide the operator you want: ")) 
    except ValueError: 
     print("Sorry, not a number. Please retry.") 
    else: 
     if 1 <= operator <= 4: 
      break 
     else: 
      print("Sorry, choose a value between 1 and 4.") 

注:使用input与Python 3.x或raw_input与Python 2.7

1. ADDITION 
2. MULTIPLICATION 
3. TAKEAWAY 
4. DIVISION 
Please select a number from the options above. 
please enter one of the numbers above to decide the operator you want: spam 
Sorry, not a number. Please retry. 
please enter one of the numbers above to decide the operator you want: 12 
Sorry, choose a value between 1 and 4. 
please enter one of the numbers above to decide the operator you want: 2 
+0

感谢Laurent,非常感谢的人。 –

+0

欢迎您。你解决了你的问题吗? Python很棒,不是吗? –