2016-11-10 55 views
-8

为了练习我建立了一个基本的投票程序,但我不明白为什么我的“else”语句永远不会被调用?我不明白为什么我的else语句不会被称为

import random 

vote = input("Please submit a vote for candA, candB or choose a third party: \n") 

candA = "Person1" 
candB = "Person2" 
other = "A third party candidate" 

if candA: 
    print("Thankyou! Vote submitted!") 
elif candB: 
    print("Thankyou! Vote submitted!") 
elif other: 
    print("Thankyou! Vote submitted!") 
else: 
    print("You did not submit a vote!") 

total_votes = random.choice([candA, candB, other]) 
amount = random.randint(1, 10) 

print(total_votes + " won the election by " + str(amount) + " votes!") 

预先感谢您

+8

'如果candA == vote'可能是你所追求的,类似于其他子句。在它自己的'如果candA' *总是*'真'作为一个非空字符串。 –

+0

可能是开关的情况下是合理 –

+0

“如果候选人A”可能意味着在一个偶然的谈话语境的东西给你,但是如果'不candA' *不*意味着“如果用户输入候选A的值”到Python ...... – deceze

回答

1

如果一个变量是不同的,那么无或“”,那么其视为真。 。 当你调用`如果坎达”,坎达包含字符串‘PERSON1’至极就会造成真正的 你可以尝试这样的:

if vote == candA: 
    etc 
elif vote == candB: 
    etc 
elif vote == candC: 
    etc 
else: 
    etc 
+2

整数'''0''',浮点值''''0.0''',空列表'''''''',空字符''''''',空集合,空元组等等***不是***被认为是** truthy **。 –

0

您需要在vote执行与candA一个平等检查和运行基于关闭的代码。现在你说if string candA exists: do x,你需要说if vote is the same as candA: do x

要执行此计算可以使用==(注意不是=这是留给分配,将让你说if set string candA: do x这始终是True)喜欢所以:

if vote == candA: 
    print("Thankyou! Vote submitted!") 
elif vote == candB: 
    print("Thankyou! Vote submitted!") 
elif vote == other: 
    print("Thankyou! Vote submitted!") 
else: 
    print("You did not submit a vote!") 

注:

获得更好的结果通过使用.lower()上投票,问题中的字符串忽略方程情况。例如。 if vote.lower() == candA.lower():

+0

我最初添加了==投票,但没有改变结果。我会再试一次。我也不知道为什么我被拒绝投票?我老实说,只是想学习大声笑 – DFC302

+0

结果是什么?你期待什么?好吧,欢迎来到Stackoverflow。 –

+0

当我添加“==票”或“票==”它总是然后运行else语句的代码完成的其余部分,但它永远不会运行,如果还是ELIF。希望这是有道理的 – DFC302

相关问题