Elif声明显示我何时不想要它

时间:2019-06-13 03:28:58

标签: python

我试图获取它,以便elif语句仅在输入不是1,2,3,4时显示。我们刚刚了解了if和elif语句,因此我对它们仍然不确定。目前,无论输入多少数字,elif语句都会显示。

Season=input("Pick a number.(1,2,3,4): ")
if Season.lower()=='1':
    print('Winter is cold.')
if Season.lower()=='2':
    print('Spring is warm.')
if Season.lower()=='3':
    print('Summer is hot.')
if Season.lower()=='4':
    print('Fall is cool.')
elif Season.lower():
    print('error')

3 个答案:

答案 0 :(得分:1)

lower()是不必要的,因为该函数用于将大写字母更改为小写字母。对于您的情况,您希望输入内容落入4个不同的情况下,其中任何其他情况都会产生错误。为此,您可以重组if案例。第一个if检查条件,如果失败,则按顺序关闭,然后检查下一个elif。这继续在列表中。如果最后一个elif失败了,那么它将落入else部分。

Season=input("Pick a number.(1,2,3,4): ")
print(Season)
if Season == '1':
    print('Winter is cold.')
elif Season =='2':
    print('Spring is warm.')
elif Season =='3':
    print('Summer is hot.')
elif Season =='4':
    print('Fall is cool.')
else:
    print('error')

答案 1 :(得分:0)

当前elif仅是最后一个if的替代项。因此,在执行所有其他if条语句之后,您需要检查-是4吗?如果是,秋天很酷。如果不是,则检查它是否不为空(例如,是否为1、2、3、7、13 ...),然后报错。如果为空,将不会获得任何输出。

除了第一个,您都需要elif而不是if;并且您需要else而不是最后一个elif,因为我不希望看到小写输入是否为空。

此外,请注意,将数字"1"小写仍会得到相同的字符串:"1"。因此,这里的下壳体操作是无用的。这不是错误,但可能会导致进一步维护中的错误,因为它不必要地增加了复杂性,而更高的复杂性则会导致更高的程序员错误率。这也会导致代码变得非常非常慢。

我还选择将您的Season更改为season,因为Python约定不对变量使用标题大小写。标题大小写应用于类名。有时在翻译公式时将大写字母用于变量,例如L;但这不是事实。

season=input("Pick a number.(1,2,3,4): ")
if season=='1':
    print('Winter is cold.')
elif season=='2':
    print('Spring is warm.')
elif season=='3':
    print('Summer is hot.')
elif season=='4':
    print('Fall is cool.')
else:
    print('error')

答案 2 :(得分:0)

将第二个开始的所有if更改为elif,最新的elif应该为else(因此从{删除Season.lower() {1}}行)

在这种情况下,当数字为1、2或3时,所有情况都将是else语句上的True(对于任何非空字符串,则为elif返回bool(x)

您可能想进一步研究控制流。

顺便说一句,在这种情况下不需要True,并且变量名应使用所有非大写字母。