Python 在while循环中将变量从int转换为str?

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 += "

我正在学习Python速成课程,在其中一个练习中遇到了一个小问题。基本上,它要求您创建一个while循环,告诉用户输入他们的年龄,然后根据他们的年龄返回机票价格。这应该重复,直到用户键入“退出”。非常简单,只是我不知道如何将输入从整数(它们的年龄)转换为字符串(“退出”)。每当我尝试键入quit时,就会出现错误:“以10为基数的int()的文本无效:'quit'”。这就是我到目前为止所做的:

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")