为什么整数输入给int()的错误无效的文​​字

时间:2017-04-27 03:53:21

标签: python python-3.x python-3.6

如果我输入的不是整数,我会一直收到错误。我希望循环重复,如果输入被按下或输入一个字母。我想向用户提供我在else语句中输入的错误消息,然后返回再次询问输入。谢谢。

pizza_high = 0

  while not repeat:
    pizza_high = int(input('How many pizzas would you like to order:'))
    if pizza_high != int:
      repeat = True
    else:
      print('**ERROR** Please use whole numbers only!!')
      pizza_high = 0
  for x in range(0, pizza_high): 
    print('pizzas')

如果选择“5”,这是输入,它可以正常工作。

How many pizzas would you like to order: 5
pizzas
pizzas
pizzas
pizzas
pizzas

但是如果我点击输入或输入一个字母就会出现此错误

How many pizzas would you like to order: t
ValueError: invalid literal for int() with base 10: ';'

1 个答案:

答案 0 :(得分:1)

有两种基本策略。您可以检查转换为整数是否有效或只是尝试并捕获错误。以下是两者的示例,并添加了其他清理。例如,它比一个额外的变量更直接地突破了。请注意你的4个缩进空间。

while True:
    pizza_high = input('How many pizzas would you like to order:')
    if pizza_high.isdigit():
        pizza_high = int(pizza_high)
        break
    else:
        print('**ERROR** Please use whole numbers only!!')

for x in range(0, pizza_high): 
    print('pizzas')


while True:
    try:
        pizza_high = int(input('How many pizzas would you like to order:'))
        break
    except ValueError:
        print('**ERROR** Please use whole numbers only!!')

for x in range(0, pizza_high): 
    print('pizzas')