Python 这是开始循环的正确方法吗?
问题:电影院根据不同的年龄收取不同的票价。如果一个人年龄在3岁以下,票价是免费的;如果一个人年龄在3到12岁之间,票价是10美元;如果一个人年龄在12岁以上,票价是15美元。写一个循环,询问用户的年龄,然后告诉他们电影票的价格 我之所以使用!=“退出”是为了让最终用户可以选择退出该程序。我不知道这是否有意义。这就是我目前的情况:Python 这是开始循环的正确方法吗?,python,Python,问题:电影院根据不同的年龄收取不同的票价。如果一个人年龄在3岁以下,票价是免费的;如果一个人年龄在3到12岁之间,票价是10美元;如果一个人年龄在12岁以上,票价是15美元。写一个循环,询问用户的年龄,然后告诉他们电影票的价格 我之所以使用!=“退出”是为了让最终用户可以选择退出该程序。我不知道这是否有意义。这就是我目前的情况: prompt = 'What is your age? ' age = ' ' while age != 'quit': age = input(prompt
prompt = 'What is your age? '
age = ' '
while age != 'quit':
age = input(prompt)
age = int(age)
if age < 3:
price = 0
if age > 3:
price = 10
if age < 12:
price = 15
print('The price of your ticket is ' + price)
prompt='您的年龄是多少?'
年龄=“”
而年龄!=“退出”:
年龄=输入(提示)
年龄=int(年龄)
如果年龄<3岁:
价格=0
如果年龄>3岁:
价格=10
如果年龄<12岁:
价格=15
打印('您的机票价格为'+价格)
我在最后一个print语句中不断遇到语法错误。您需要更改设置循环的方式。如果用户输入'quit'作为年龄,则循环不应终止。这对于变量年龄的其余逻辑没有意义。您可以使用for循环,而不是使用while循环来打印price适用于许多用户
for user in range(5):
age = int(input('What is your age?'))
if age < 3: price = 0
if 3 <= age <= 12: price = 10
if age > 12: price = 15
print('The price of your ticket is: $' + str(price))
适用于范围(5)内的用户:
年龄=int(输入('你的年龄是多少?'))
如果年龄<3岁:价格=0
如果3序言:一般来说,您应该编写您的代码应该完成的任务。此外,为了方便我(以及其他任何想帮助我的人)的使用,如果您将代码编写在.py文件中会很有帮助;我无法将您的代码粘贴到python解释器中,因此我必须将其粘贴到文件中,但我必须删除所有这些“>>>”和“…”
在这种情况下,我将推断您的需求是
从用户处获取年龄并打印它
验证输入并继续询问年龄,直到输入有效
您的问题是,您的戒烟条件会导致以下问题:
~/Desktop $ python3 stack_overflow.py
What is your age? 32
Age : 32
What is your age? quit
Age : quit
Traceback (most recent call last):
File "stack_overflow.py", line 6, in <module>
age = int(age)
ValueError: invalid literal for int() with base 10: 'quit'
这让我想起了我在YouTube上的一次演讲中看到的一件事,我认为这件事非常棒:使用您希望存在的函数编写代码,然后实现这些函数
def get_age():
while True:
age = input('What is your age : ')
try:
age = int(age)
except ValueError:
continue
if age > 0:
return age
def ticket_price(age):
if age < 3:
# Under 3 years old don't pay
return 0
if age < 12:
# between 3 and 12, price is 10$
return 10
# 12 and above pay 15
return 15
age = get_age()
price = ticket_price(age)
print('The price of your ticket is ' + str(price))
def get_age():
尽管如此:
年龄=输入('您的年龄:')
尝试:
年龄=int(年龄)
除值错误外:
持续
如果年龄>0:
回归年龄
def门票价格(年龄):
如果年龄<3岁:
#3岁以下不付钱
返回0
如果年龄<12岁:
#在3到12之间,价格是10$
返回10
#12岁及以上薪酬15
返回15
年龄=获得年龄()
价格=票价(年龄)
打印('您的机票价格为'+str(价格))
还有,另一个提示:每当我有
while True:
...
if <something>:
break
为True时:
...
如果:
打破
最好将while循环放在函数中,并用return语句替换break
考虑到我没有你的要求,我不能肯定我解决了你的问题。也就是说,主要的收获应该是
分离输入的获取和从年龄到年龄的转换
价格
将代码放入函数中是值得的,即使对于玩具示例也是如此
这样做是因为这是实际编码的实践
用伪代码写出程序的逻辑也很有帮助
欢迎使用SO。请仔细查看。在这里,您不提供输出、错误或预期行为。学习调试技术是学习编程的主要部分,因此,学习调试技术不是一般的技能,而是开发人员的一般技能。每次设置价格变量后添加中断语句。如果您需要键入“退出”作为您的年龄to使循环中断,这将始终中断行age=int(age)
因此,此代码永远不会正常工作。我似乎无法正确理解这不是问题描述,任何建议?都不是具体问题。当您创建帐户时,建议您阅读并阅读页面,以便熟悉网站。请特别注意,然后再回来发布您的帖子清楚地描述问题并提出具体问题。当你做这件事的时候,你可以改进一些描述性的标题。课程名称没有意义。错误信息是什么?确切的错误信息应该始终包括在中断代码提示中:如果age==“quit”
,价格的价值是什么?如果age=='quit'
,运行的下一行是什么?您希望int('quit')
的值是什么?或者int('jibberish')
?您可以运行快速的小代码段,在
age = get_age()
price = ticket_price(age)
print("The price of your ticked is " + str(age))
def get_age():
while True:
age = input('What is your age : ')
try:
age = int(age)
except ValueError:
continue
if age > 0:
return age
def ticket_price(age):
if age < 3:
# Under 3 years old don't pay
return 0
if age < 12:
# between 3 and 12, price is 10$
return 10
# 12 and above pay 15
return 15
age = get_age()
price = ticket_price(age)
print('The price of your ticket is ' + str(price))
while True:
...
if <something>:
break