【发布时间】:2018-10-28 07:11:51
【问题描述】:
我正在尝试编写一段代码来计算三个不同候选人的选票,并且我正在使用一个函数,该函数使用变量名称(A、B 或 C)作为参数。
我正在尝试使用它,以便每当为该候选人计票时,它都会调用该函数以将该候选人的变量增加 1。但是,我尝试过的所有方式都将始终是所有 3 位候选人计为 0 票,除非我完全删除该功能。
我尝试了几种不同的方法来使变量成为全局变量,但它们都给出了相同的结果。
A = 0
B = 0
C = 0
def after_vote(letter):
letter = letter + 1
print("Thank you for your vote.")
def winner(winner_letter, winner_votes):
print("The winner was", winner_letter, "with", str(winner_votes), "votes.")
while True:
vote = input("Please vote for either Candidate A, B or C. ").upper()
if vote == "A":
after_vote(A)
elif vote == "B":
after_vote(B)
elif vote == "C":
after_vote(C)
elif vote == "END":
print("Cadidate A got", str(A), "votes, Candidate B got", str(B), "votes, and Candidate C got", str(C), "votes.")
if A > B and A > C:
winner("A", A)
break
elif B > A and B > C:
winner("B", B)
break
elif C > A and C > B:
winner("C", C)
break
else:
print("There was no clear winner.")
break
else:
print("Please input a valid option.")
【问题讨论】:
-
你不能在 Python 中传递变量。见nedbatchelder.com/text/names.html
-
整数是不可变对象,在函数内部更改它们不会影响调用者。更好的方法是使用字典,将这些字母作为键,将投票计数作为值,然后在每次投票后不断更新每个键的相应计数。
标签: python python-3.x function global-variables parameter-passing