为什么'其他'即使选择了正确的选择,也会打印出声明?
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"
输出正在打印"错误的选择"即使选择了有效的选择。
答案 0 :(得分:5)
因为if语句检查“y”和第二个if语句检查“n”是两个不同的。 else只连接到带有“n”-check的第二个if语句。你想拥有像
这样的最外面的陈述if "y":
....
elif "n":
....
else:
....
答案 1 :(得分:2)
您似乎将<canvas id="pieChart" width=200 height=200></canvas>
系列if
与一系列if
- elifs
混为一谈。
请注意:
if cond0:
...
if cond1:
...
else:
bar()
与不相同:
if cond0:
...
elif cond1:
...
else:
bar()
如果cond0
为True
,则前者会调用bar()
,而后者则不会。if
在前者中,只有if-else
后跟完全独立的 if cond0:
...
# Note spacing here, emphasizing that the above construct is separate from the one below.
if cond1:
...
else:
bar()
。
这样写前者可能会有所帮助:
./stuff.sh PRM*
答案 2 :(得分:1)
ans
不是'n'
所以else
子句会触发。您可能需要elif
:
if ans == 'y':
...
elif ans == 'n':
...
else:
...
答案 3 :(得分:1)
此代码块中的else
仅指代if ans=='n'
。
它没有考虑你的第一个if语句。您将要将其更改为此
elif ans=='n':
print"Good, you can go!"
else:
print"wrong choice"
答案 4 :(得分:0)
你有两个条件而不是一个。
第一个条件会针对ans
检查'y'
。
如果ans
为'y'
,则用户可以输入1-8的整数,并且相应的字符串将打印到控制台。然后处理进入第二个条件(#2)。
如果ans
不是'y'
,则用户不会给出任何输入,处理会移至第二个条件(#2)。
第二个条件会针对ans
检查'n'
。
如果ans
是'n'
那么&#34;好,你可以去!&#34;打印到控制台,处理继续跳过else
块。
如果ans
不是'n'
(用户输入'y'
的情况),则会执行else
块打印&#34;错误选择&#34 ;到控制台。
正在发生的事情是你的逻辑设置是'n'
以外的任何输入都会打印错误的选择&#34;最终。您需要来自用户初始输入的单个决策。目前你的逻辑有两个。
使用if elif else
构造。