我正在尝试编写包含以下内容的代码:
1)在while语句中使用条件测试来停止循环。
2)使用活动变量来控制循环运行的时间。
3)当用户输入“退出”时,使用break语句退出循环。值。
这是我的代码:
prompt = "What is your age?"
prompt += "\nEnter 'quit' to exit: "
while True:
age = input(prompt)
age = int(age)
if age == 'quit':
break
elif age < 3:
print("Your ticket is free.")
elif 3 <= age <=12:
print("Your ticket is $10.")
elif 12 < age:
print("Your ticket is $15.")
else:
print("Please enter a valid age.")
我相信我已经正确回答了第1部分和第2部分,但每当我进入&#39;退出&#39;或者测试第3部分的任何其他单词,我收到一条错误消息,指出:&#34; ValueError:对于带有基数10的int()的无效文字:&#39;退出&#39;&#34;
有没有人对我的代码中的错误提出任何建议?谢谢你的时间。
答案 0 :(得分:5)
您正在将用户的输入转换为数字,然后再检查该输入是否实际为数字。从这里开始:
age = input(prompt)
age = int(age)
if age == 'quit':
break
elif age < 3:
print("Your ticket is free.")
对此:
age = input(prompt)
if age == 'quit':
break
age = int(age)
if age < 3:
print("Your ticket is free.")
这将在假定用户输入数字之前检查退出请求。
答案 1 :(得分:1)
您将年龄转换为int()
的整数,因此它永远不会等于'quit'
。首先进行quit
检查,然后转换为整数:
age = input(prompt)
if age == 'quit':
break;
age = int(age)
...
现在检查它是否等于字符串文字 first ,这样如果它是,它会正确地中断。如果没有,那么继续照常进行。
答案 2 :(得分:1)
您正在将字符串“quit”转换为整数,而python告诉您它是错误的。
这将有效:
prompt = "What is your age?"
prompt += "\nEnter 'quit' to exit: "
while True:
age = input(prompt)
if age == 'quit':
break
age = int(age)
if age < 3:
print("Your ticket is free.")
elif 3 <= age <=12:
print("Your ticket is $10.")
elif 12 < age:
print("Your ticket is $15.")
else:
print("Please enter a valid age.")
答案 3 :(得分:1)
为了显示不同的内容,您实际上可以在此处使用try/except
来捕获ValueError
,并且在您的例外区块中,您可以检查quit
和{ {1}}因此。此外,您可以稍微简化输入提示以节省几行。
你也可以强制break
的外壳为小写,这样你就可以把它写在任何一个外壳中,只需将它强行放到一个外壳中并检查quit
(如果有人碰巧写的话) QuIt或QUIT它仍然可以工作。)
quit
答案 4 :(得分:0)
正如上面评论中提出的那样,您应该使用raw_input()而不是input来处理用户输入为字符串,以便您可以检查'quit'字符串。如果用户输入不等于'quit',则可以尝试将输入字符串作为整数进行管理。如果用户传递了无效的字符串(例如'hgkjhfdjghd'),您可以将其作为例外处理。
在下面找到一段代码,演示我上面描述的内容:
prompt = "What is your age?"
prompt += "\nEnter 'quit' to exit: "
while True:
age = raw_input(prompt)
if age == 'quit':
break
try:
age = int(age)
if age < 3:
print("Your ticket is free.")
elif 3 <= age <=12:
print("Your ticket is $10.")
elif 12 < age:
print("Your ticket is $15.")
except Exception as e:
print 'ERROR:', e
print("Please enter a valid age.")