2015-10-13 153 views
-5

所以我要问客户端重新输入变量如果不是整数,或者是小于或等于0,我不能让它得到一个程序错误,并结束它。Python的验证,如果输入是int和大于0

def enter_amount(): 


amount=input("Enter amount:") 
while (not isinstance(amount, int)) or amount<=0: 
    amount=input("The amount can't be negative, please try again:") 
return amount 

试过这个,它总是失败了。如果您有任何想法,我将不胜感激。

+0

这是蟒蛇2.x或3.x的?在2.x中,_input_评估用户输入一个Python表达式,通常是一个不错的选择,而_raw_input_给你一个字符串。在3.x中,_input_给你一个字符串,而不是一个int。 – tdelaney

+2

“没有工作。”太好了,真棒,***如何。*** –

+0

这是蟒蛇3.x的Ook,那我该如何检查这一点,如果不符合,重试?如果输入的字符串不管用户写什么,那么在这种情况下这个例子几乎是没用的。 –

回答

1

您需要输入转换为整数,然后检查该值。由于用户可能会输入垃圾,因此您必须通过捕获值异常来处理整数转换。

def get_amount(): 
    while True: 
     amount = input("Enter amount: ") 
     try: 
      val = int(amount) 
      if val >= 0: 
       break 
      else: 
       print("Amount can't be negative, try again") 
     except ValueError: 
      print("Amount must be a number, try again") 
    return val 
-1

不能使用回的功能之外!把你的代码包装在一个函数中,它应该没问题。

def test(): 
    amount=input("Enter amount:") 
    while (not isinstance(amount, int)) or amount<=0: 
     amount=input("The amount can't be negative, please try again:") 
    print(amount) 
    return amount 

test() 
+0

这是一个功能,忘记把它放在那里,对不起。 –

0
def getUserAmount(): 
    while True: 
     amount = input("Enter amount: ") 
     try: 
      value = int(amount) 
      if value >= 0: 
       break 
      else: 
       print("Amount is negative, try again") 
     except ValueError: 
      print("Amount must be a number, try again") 

    return value 

main()