我是python新手,以前没有编码经验。我的程序应该根据年龄显示票价。为什么它不起作用?

我是python新手,以前没有编码经验。我的程序应该根据年龄显示票价。为什么它不起作用?,python,python-3.7,Python,Python 3.7,我的代码将根据年龄显示票价。为什么它不起作用?这是Python速成课程手册中的练习7-5 prompt = "\nEnter Age: " prompt += "\nEnter 'quit' when done." age = '' while age != 'quit': age = input(prompt) print(age) if age != 'quit': if age > '13': print(f'Yo

我的代码将根据年龄显示票价。为什么它不起作用?这是Python速成课程手册中的练习7-5


prompt = "\nEnter Age: "
prompt += "\nEnter 'quit' when done."
age = ''

while age != 'quit':

    age = input(prompt)
    print(age)
    if age != 'quit':
        if age > '13':
            print(f'You ticket price is $15.00.')
            print(f'Retrieve your ticket(s) below')

        if age <= '13' and age > '2':
            print(f'Your ticket price is $10.00.')
            print(f'Retrieve your ticket(s) below')

        if age < '3':
            print(f'Your ticket price is free')
            print(f'Retrieve your ticket below')

print(f'Thank You Enjoy the show')

prompt=“\n输入年龄:”
提示符+=“\n完成后输入“退出”
年龄=“”
而年龄退出':
年龄=输入(提示)
印刷品(年龄)
如果年龄退出':
如果年龄大于'13':
打印(您的票价为$15.00.)
打印(f'在下面检索您的票证')
如果年龄为“2”:
打印(您的票价为$10.00.)
打印(f'在下面检索您的票证')
如果年龄<'3':
打印(f‘您的票价是免费的’)
打印(f“在下面检索您的票证”)
打印(f“感谢您欣赏节目”)

在if语句中,将您的数字从
if age<'13':
更改为
if age<13:

(对所有if语句进行更改)否则13将被读取为字符串,不能用作int。

我想我有一个答案。首先,为什么要使用print(f“”)?您可以使用print(“”)。此外,不需要键入prompt='\nEnter';您只需键入prompt='Enter'

在使用比较器之前,必须将输入值转换为整数

  • lower()表示将其转换为较低的字符

  • strip()表示删除文本周围的空格

prompt=''
当提示.lower().strip()!='退出':
提示符=输入(“输入您的年龄(输入'quit'退出):”)
如果提示.lower().strip()!='退出':
age=int(提示符)#将提示符转换为整数
打印(f“您的年龄:{age}”)
如果年龄>13岁:
打印(您的票价为$15.00.)
打印(f'在下面检索您的票证\n')
如果年龄=3岁:
打印(您的票价为$10.00.)
打印(f'在下面检索您的票证\n')
如果年龄<3岁:
打印(f‘您的票价是免费的’)
打印(f'在下面检索您的票证\n')
打印(f“感谢您欣赏节目”)
结果如下:

Enter your age (enter 'quit' to exit) : 2
Your age : 2
Your ticket price is free
Retrieve your ticket below

Enter your age (enter 'quit' to exit) : 3
Your age : 3
Your ticket price is $10.00.
Retrieve your ticket(s) below

Enter your age (enter 'quit' to exit) : 13
Your age : 13
Your ticket price is $10.00.
Retrieve your ticket(s) below

Enter your age (enter 'quit' to exit) : 16
Your age : 16
You ticket price is $15.00.
Retrieve your ticket(s) below

Enter your age (enter 'quit' to exit) : QuIt # Caps doesn't matter
Thank You Enjoy the show

首先,您需要将输入转换为int。input将所有内容作为字符串读取

age = int(input(prompt))
这也意味着你需要改变

age != 'quit' 

在这之后,您需要确保您正在比较int的而不是字符串。一个字符串可以大于或小于另一个字符串,但不能在使用它们的上下文中。将
'13'
更改为
13
,依此类推

如果您这样做,它将修复您的问题:“if int(age)>13:”(在所有if语句中)这样您的“退出”功能仍然有效!快乐编码

我希望您的代码简化有助于:

age = int(input("Enter Age: "))
if age > 13:
    print('You ticket price is $15.00.')
    print('Retrieve your ticket(s) below')
if age <= 13 and age > 2:
    print(f'Your ticket price is $10.00.')
    print(f'Retrieve your ticket(s) below')
if age < 3:
    print('Your ticket price is free')
    print('Retrieve your ticket below')
age=int(输入(“输入年龄:”)
如果年龄>13岁:
打印('您的票价为$15.00')
打印('在下面检索您的票证')
如果2岁:
打印(您的票价为$10.00.)
打印(f'在下面检索您的票证')
如果年龄<3岁:
打印('您的票价是免费的')
打印('在下面检索您的票证')

您能定义“不工作”吗?您是否看到任何错误消息?这个程序运行吗?你看到的是一个空白屏幕吗?我不能重现我个人认为“不工作”的行为,我的意思是“不工作”。快速猜测:将输入作为字符串进行比较。这意味着31将被分类在3和4之间。将输入转换为int(
int(age)
)并与数字进行比较:
如果int(age)>13:
这些事实都不是阻止程序按预期“工作”的原因。否,@ptan9o已经提出了正确的解决方案。原始代码尝试比较两个字符串并使用比较运算符。我对stackoverflow和python不太熟悉。谢谢大家的帮助。我现在看到了这个简单代码的错误。当我能够为python问题提供答案时,我会很高兴。字符串可以比其他字符串大(或小),这是按字母顺序排列的。对不起,这是错误的,愚蠢的我。。。如果您这样做,它将解决您的问题:“if int(age)>13:”这样您的“退出”功能仍然有效!快乐编码!!你可以编辑你的另一个答案来添加这个,而不是添加一个新的答案。哦,糟糕,我一定做错了。。。我想我确实编辑了它。