到目前为止我的代码:
prompt = "\nEnter 'quit' when you are finished."
prompt += "\nPlease enter your age: "
while True:
age = input(prompt)
age = int(age)
if age == 'quit':
break
elif age <= 3:
print("Your ticket is free")
elif age <= 10:
print("Your ticket is $10")
else:
print("Your ticket is $15")
该程序运行正常,除非您输入&#39;退出&#39;结束循环。我知道age = int(age)
将用户输入定义为整数。我的问题是如何将其更改为不处理&#39;退出&#39;作为一个整数,并在退出时结束循环&#39;输入。
答案 0 :(得分:1)
如果age
为'quit'
,则无论如何都会中断。因此,您可以使用if
代替下一个。只要你这样做,你就可以在if
之后将它变成一个int:
while True:
age = input(prompt)
if age == 'quit':
break
age = int(age)
if age <= 3:
print("Your ticket is free")
elif age <= 10:
print("Your ticket is $10")
else:
print("Your ticket is $15")
当用户输入其他内容时,您可能应该处理这些情况,但是,我建议如下:
while True:
age = input(prompt)
if age == 'quit':
break
elif not age.isdigit():
print("invalid input")
continue
age = int(age)
if age <= 3:
print("Your ticket is free")
elif age <= 10:
print("Your ticket is $10")
else:
print("Your ticket is $15")
答案 1 :(得分:0)
我实际上会在这里介绍try/except
。
您的应用程序的主要目标是收集年龄。因此,使用try / except包装输入以始终获取整数。如果您获得ValueError
,则会进入您的例外区域并检查您是否输入了quit
。
应用程序将告诉用户它正在退出并中断。但是,如果用户没有输入quit
,而是输入其他字符串,则会告知您该条目无效,并且它将继续询问用户是否有效年龄。
另外,只是为了确保你永远不会错过退出&#39;可以使用不同情况键入的消息,您始终可以将输入设置为lower
以始终比较字符串中的相同大小写。换句话说,当您检查条目为age.lower
时,请quit
。
这是一个有效的演示:
prompt = "\nEnter 'quit' when you are finished."
prompt += "\nPlease enter your age: "
while True:
age = input(prompt)
try:
age = int(age)
except ValueError:
if age.lower() == 'quit':
print("Quitting your application")
break
else:
print("You made an invalid entry")
continue
if age <= 3:
print("Your ticket is free")
elif age <= 10:
print("Your ticket is $10")
else:
print("Your ticket is $15")