问题:“电影院根据个人年龄收取不同的票价。如果一个人未满3岁,则该机票是免费的;如果他们在3到12之间,门票是10美元;如果他们超过12岁,门票是15美元。写一个循环,在其中询问用户的年龄,然后告诉他们电影票的费用。“
我放置!='quit'的原因是为最终用户提供退出程序的选项。我不知道这是否有意义。这就是我到目前为止所做的:
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)
我在最后一个print语句中遇到语法错误。
答案 0 :(得分:1)
序言:通常,您应该编写代码应该完成的内容。此外,如果您在.py文件中为我(以及任何其他想要帮助的人)方便的代码编写代码会很有帮助。我无法将您的代码粘贴到python解释器中,因此我必须将其粘贴到文件中,但我必须删除所有这些&#34;&gt;&gt;&gt;&#34;和&#34; ...&#34;。
在这种情况下,我将推断您的要求是
你遇到的问题是戒烟的条件会导致问题:
~/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'
因此,让我们得到我们想要的逻辑,然后我们将在python中看到如何做到这一点。
<get a valid input>
<decide the ticket price based on said valid input>
需要注意的一点是,在python中,由于输入有效,如果它可以转换为int,我们可以尝试将其转换为int,如果转换成功,则调用输入有效。
通过阅读错误消息,我们可以看到写作&#39;退出&#39;导致ValueError,我们可以推断出这个:
prompt = 'What is your age? '
age = ' '
input_valid = False
while !input_valid:
age = input(prompt)
try:
age = int(age)
except ValueError:
input_valid = False
continue
if age > 0:
break
if age < 3:
price = 0
if age > 3:
price = 10
if age < 12:
price = 15
print('The price of your ticket is ' + str(price))
现在,在这一点上,我认为你会满足你的要求。然而,lemme会给你更多的知识:
如果您阅读以下代码该怎么办:
age = get_age()
price = ticket_price(age)
print("The price of your ticked is " + str(age))
这让我想起了我在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))
另外,另一个提示:每当我有类似
的东西时while True:
...
if <something>:
break
将while循环放在函数中并用break语句替换break是个好主意。
鉴于我没有您的要求,我无法确定我是否解决了您的问题。话虽如此,主要的内容应该是
答案 1 :(得分:0)
您需要更改设置循环的方式。如果用户输入“退出”作为年龄,则不应终止。对于变量年龄,这对于其余逻辑没有意义。您可以改为使用for循环并为多个用户打印价格,而不是使用while循环
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))