首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,else块可以有更多的if-elif-else块吗?

在Python中,else块可以有更多的if-elif-else块吗?
EN

Stack Overflow用户
提问于 2017-01-21 16:24:04
回答 3查看 142关注 0票数 1

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

我希望这个程序有退出的价值。我本可以使用0作为退出值,但我想使用' quit‘。

代码语言:javascript
复制
prompt = "What is your age? "
prompt += "\nEnter 'quit' to close program."

age = 0

while True:


     age = raw_input(prompt)
        if age == 'quit':
            break
        else:
            age = int(age)
            if age < 3:
                print("The movie ticket is FREE for you.")
            elif 3 <= age < 12:
                print("The movie ticket is $10 for you.")
            elif age >= 12:
                print("The movie ticker is $15 for you.")
EN

回答 3

Stack Overflow用户

发布于 2017-01-21 16:28:10

我想指出的是,您不需要else子句。您可以在先前的缩进级别包括其余的条件条件,因为break将退出循环,而不是继续循环主体的其余部分。

而不是

代码语言:javascript
复制
    if age == 'quit':
        break
    else:
        age = int(age)

简单地说:

代码语言:javascript
复制
    if age == 'quit':
        break

    age = int(age)

如果不清楚这一点,这里是整个程序的变化:

代码语言:javascript
复制
prompt = "What is your age? "
prompt += "\nEnter 'quit' to close program."

while True:

    age = raw_input(prompt)
    if age == 'quit':
        break

    age = int(age)
    if age < 3:
        print("The movie ticket is FREE for you.")
    elif 3 <= age < 12:
        print("The movie ticket is $10 for you.")
    elif age >= 12:
        print("The movie ticker is $15 for you.")

我还删除了无用的赋值:age = 0,因为在读取该值之前,该值已被age = raw_input(prompt)替换。

票数 6
EN

Stack Overflow用户

发布于 2017-01-21 16:56:17

是的,如果你喜欢,你可以嵌套if语句,但我总是尝试先找到一种更好的方法。在这种情况下,我们可以使用while语句的条件部分。

代码语言:javascript
复制
age = 0
while age != "quit":
    age = raw_input(prompt)
    age = int(age)
    if age < 3:
        print("The movie ticket is FREE for you.")
    elif 3 <= age < 12:
        print("The movie ticket is $10 for you.")
    elif age >= 12:
        print("The movie ticker is $15 for you.")

现在,只要age不等于"quit",代码就会循环。

票数 2
EN

Stack Overflow用户

发布于 2017-01-21 17:21:07

您可以使用try:通过输入其他值而不是整数来避免脚本崩溃。

代码语言:javascript
复制
prompt = "What is your age? [quit to Exit the program] : "
while True:
     age = raw_input(prompt)
     if age == 'quit':
        break
     try:
        age = int(age)
        if age < 3:
            print("The movie ticket is FREE for you.")
        elif 3 <= age < 12:
            print("The movie ticket is $10 for you.")
        elif age >= 12:
            print("The movie ticker is $15 for you.")
     except:
        print 'Invalid Age entered !!!'
        pass
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41777211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档