Python 在while循环中将变量从int转换为str?
我正在学习Python速成课程,在其中一个练习中遇到了一个小问题。基本上,它要求您创建一个while循环,告诉用户输入他们的年龄,然后根据他们的年龄返回机票价格。这应该重复,直到用户键入“退出”。非常简单,只是我不知道如何将输入从整数(它们的年龄)转换为字符串(“退出”)。每当我尝试键入quit时,就会出现错误:“以10为基数的int()的文本无效:'quit'”。这就是我到目前为止所做的:Python 在while循环中将变量从int转换为str?,python,string,loops,while-loop,integer,Python,String,Loops,While Loop,Integer,我正在学习Python速成课程,在其中一个练习中遇到了一个小问题。基本上,它要求您创建一个while循环,告诉用户输入他们的年龄,然后根据他们的年龄返回机票价格。这应该重复,直到用户键入“退出”。非常简单,只是我不知道如何将输入从整数(它们的年龄)转换为字符串(“退出”)。每当我尝试键入quit时,就会出现错误:“以10为基数的int()的文本无效:'quit'”。这就是我到目前为止所做的: age_prompt = "\nWrite in your age: " age_prompt += "
age_prompt = "\nWrite in your age: "
age_prompt += "\nType 'quit' to exit "
while True:
age = int(input(age_prompt))
if age < 3:
print("Your ticket is free.")
elif age < 12:
print("Your ticket is $10")
else:
print("Your ticket is $15")
if age == 'quit':
break
age\u prompt=“\n在您的年龄中书写:”
年龄提示+=“\n键入“退出”退出”
尽管如此:
年龄=整数(输入(年龄提示))
如果年龄<3岁:
打印(“您的票是免费的。”)
elif年龄<12岁:
打印(“您的票是10美元”)
其他:
打印(“您的票是15美元”)
如果年龄==“退出”:
打破
在转换为整数之前,您需要测试变量是否为“quit”
(因为“quit”
显然不是数字,所以Python会正确地抱怨)
以下是您如何做到这一点:
while True:
age = input(age_prompt)
if age == 'quit':
break
try:
age = int(age)
if age < 3:
print("Your ticket is free.")
elif age < 12:
print("Your ticket is $10")
else:
print("Your ticket is $15")
except ValueError:
print("Invalid input. Please enter a valid number or 'quit'")
为True时:
年龄=输入(年龄提示)
如果年龄==“退出”:
打破
尝试:
年龄=int(年龄)
如果年龄<3岁:
打印(“您的票是免费的。”)
elif年龄<12岁:
打印(“您的票是10美元”)
其他:
打印(“您的票是15美元”)
除值错误外:
打印(“无效输入。请输入有效数字或“退出”)
age\u prompt=“\n按您的年龄书写:”
年龄提示+=“\n键入“退出”退出”
尽管如此:
尝试:
年龄=输入(年龄提示)
年龄=int(年龄)
如果年龄<3岁:
打印(“您的票是免费的。”)
elif年龄<12岁:
打印(“您的票是10美元”)
其他:
打印(“您的票是15美元”)
除值错误外:
如果年龄==“退出”:
打破
检查它是否为int。如果不是,请检查它是否为'quit'您必须使用单独的变量(或异常-无示例)
为True时:
ui=输入(年龄提示)
如果ui==“退出”:
打破
年龄=int(用户界面)
如果年龄<3岁:
打印(“您的票是免费的。”)
elif年龄<12岁:
打印(“您的票是10美元”)
其他:
打印(“您的票是15美元”)
用户输入作为字符串从调用input()
接收。在您的示例中,您直接将input()
的输出转换为整数:
age=int(输入(年龄提示))
一旦将输入转换为整数,就不能再将整数与字符串“quit”
进行比较,因为它们不能直接进行比较。可以在转换为整数之前处理输入字符串
#将用户输入读取为字符串
用户输入=输入(年龄提示)
如果用户输入=“退出”:
退出
elif user_input==某些其他命令:
其他_命令()
其他:
#尝试将输入转换为整数
尝试:
年龄=整数(用户输入)
除值错误外:
打印“输入“%s”无效!”
退出
如果年龄<3岁:
...
试试这个:
age_prompt = "\nWrite in your age: "
age_prompt += "\nType 'quit' to exit "
while True:
age = raw_input(age_prompt)
if age == 'quit':
break
else:
age = int(age)
if age < 3:
print("Your ticket is free.")
elif age < 12:
print("Your ticket is $10")
else:
print("Your ticket is $15")
age\u prompt=“\n在您的年龄中书写:”
年龄提示+=“\n键入“退出”退出”
尽管如此:
年龄=原始输入(年龄提示)
如果年龄==“退出”:
打破
其他:
年龄=int(年龄)
如果年龄<3岁:
打印(“您的票是免费的。”)
elif年龄<12岁:
打印(“您的票是10美元”)
其他:
打印(“您的票是15美元”)
这仍然可能导致ValueError
如果然后输入除quit
之外的内容非常正确,我现在就更正它。还可以通过添加isNumeric()年龄检查来避免可能的错误,如果没有,则“继续”循环。您在此处使用异常的具体原因是什么?OP是python的新手,所以这可能不是最好的推荐方法。@kirkpatt是python的新手,这是我们应该了解异常的更多原因。HadlingException是编写python代码的基础。它们并不复杂,而且是必要的。我的意思是,根据OP的水平,在他们解决其他问题时,最好不要尝试引入新概念。这个问题提到了Python速成班,它有一个关于异常的部分,所以他们会到达那里。太棒了,谢谢!是的,我几天前才开始学习,所以所有这些对我来说都是新的。如果用户键入“退出”,你仍然会在int(ui)
上遇到异常。@whrrgarbl愚蠢的复制粘贴错误修复了我想OP是在使用python3,因为他使用了input()而不是raw\u input(),而且他还使用了print()函数你说得对!我只是在使用python2.7,没有意识到他在使用python3。
while True:
ui = input(age_prompt)
if ui == 'quit':
break
age = int(ui)
if age < 3:
print("Your ticket is free.")
elif age < 12:
print("Your ticket is $10")
else:
print("Your ticket is $15")
age_prompt = "\nWrite in your age: "
age_prompt += "\nType 'quit' to exit "
while True:
age = raw_input(age_prompt)
if age == 'quit':
break
else:
age = int(age)
if age < 3:
print("Your ticket is free.")
elif age < 12:
print("Your ticket is $10")
else:
print("Your ticket is $15")