Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这是开始循环的正确方法吗?_Python - Fatal编程技术网

Python 这是开始循环的正确方法吗?

Python 这是开始循环的正确方法吗?,python,Python,问题:电影院根据不同的年龄收取不同的票价。如果一个人年龄在3岁以下,票价是免费的;如果一个人年龄在3到12岁之间,票价是10美元;如果一个人年龄在12岁以上,票价是15美元。写一个循环,询问用户的年龄,然后告诉他们电影票的价格 我之所以使用!=“退出”是为了让最终用户可以选择退出该程序。我不知道这是否有意义。这就是我目前的情况: prompt = 'What is your age? ' age = ' ' while age != 'quit': age = input(prompt

问题:电影院根据不同的年龄收取不同的票价。如果一个人年龄在3岁以下,票价是免费的;如果一个人年龄在3到12岁之间,票价是10美元;如果一个人年龄在12岁以上,票价是15美元。写一个循环,询问用户的年龄,然后告诉他们电影票的价格

我之所以使用!=“退出”是为了让最终用户可以选择退出该程序。我不知道这是否有意义。这就是我目前的情况:

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