ififelse与ifelifelse州政府

2024-04-19 21:38:01 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么即使选择了正确的选项,也会打印“else”语句?在

    ch=0
    print"Do you need Ice-Cream?"
    ans=raw_input()
    if ans=='y':
        print"Pick a flavor"
        ch=raw_input() # ch is a string
        if ch=='1':
            print"Vanilla"
        if ch=='2':
            print"Chocolate"
        if ch=='3':
            print"Strawberry"
        if ch=='4':
            print"Kiwi"
        if ch=='5':
            print"orange"
        if ch=='6':
            print"mango"
        if ch=='7':
            print"pineapple"
        if ch=='8':
            print"grapes"               
        print"You are done picking up a flavor, pay now"    
    if ans=='n':
        print"Good, you can go!"
    else:
        print"wrong choice" 

输出是打印“错误的选择”,即使选择了一个有效的选择。在


Tags: youinputrawif选项语句chneed
3条回答

看起来你把你的if系列和if-elifs的系列混为一谈。在

请注意:

if cond0:
    ...
if cond1:
    ...
else:
    bar()

不等于:

^{pr2}$

如果cond0是{},那么前者将调用bar(),而后者则不会。在前者中,它只是一个if,后跟一个完全独立的if-else。在

把前者写成这样可能会有帮助:

if cond0:
    ...

# Note spacing here, emphasizing that the above construct is separate from the one below.

if cond1:
    ...
else:
    bar()

因为if语句检查“y”和第二个if语句检查“n”是两个不同的。else只连接到带有“n”检查的第二个if语句。你想要最外面的陈述

if "y":
    ....
elif "n":
    ....
else:
    ....

你有两个条件不是一个。在

  1. 第一个条件检查ans与{}。在

    如果ans'y',那么用户可以输入一个整数1-8,相应的字符串将被打印到控制台。然后处理进入第二个条件(#2)。在

    如果ans不是{},那么用户就不会给出任何输入,并且处理移动到第二个条件(#2)。

  2. 第二个条件检查ans与{}。在

    如果ans是{},那么“好,你可以走了!”打印到控制台,处理继续跳过else块。在

    如果ans不是'n'(用户输入'y'),则执行else块,并将“错误选择”打印到控制台。

你的逻辑设置是,除了'n'之外的任何输入最终都会打印出“错误的选择”。您需要从用户的初始输入中做出一个单独的决定。现在你的逻辑是两个。在

使用if elif else构造。在

相关问题 更多 >