该计划的一些背景知识。它设置了一个图形窗口,其中有两张候选图片,一些说明和一个输入框,然后用户将缩写放入输入框并点击其中一个候选人,它显示的投票数相当于输入的任何状态。我在编写异常处理程序时遇到问题,如果用户进入不在我的列表中的状态,则应该打印错误消息。下面是我遇到问题的代码部分:
while True:
vote = win.getMouse()
voteX = vote.getX()
voteY = vote.getY()
#Romney
if voteX >= 163 and voteX <= 237 and voteY <= 100:
enteredtext = entrybox.getText()
enteredtextu = enteredtext.upper()
for i, s in enumerate(STATE_LIST):
if enteredtextu != s:
print('Not a state')
else:
totalvotesr += STATE_VOTES[enteredtextu]
votesnumr = ('VOTES:' ,totalvotesr)
displayvotesr.setText(votesnumr)
entrybox = Entry(Point(WINDOW_WIDTH/2, WINDOW_HEIGHT/1.1), 10)
entrybox.draw(win)
if totalvotesr >= 270:
circle_winner(win, Point(WINDOW_WIDTH/4, WINDOW_HEIGHT/12))
cross_out_loser(win, Point(WINDOW_WIDTH/(4/3), WINDOW_HEIGHT/12))
STATE_LIST是缩写的所有50个州的列表。我试图做的是使用枚举并让它检查entereredtextu列表中的所有项目,如果它不存在它将打印“不是状态”。我遇到的问题是,当我进入一个不在我的列表中的状态时,它打印“非状态”50次,当我进入列表中的状态时,它显示的投票数量应该是,但也打印“非状态”50次
答案 0 :(得分:2)
检查每个状态是否其名称与输入的文本匹配,因为该检查位于for循环内。因此,你得到“非状态”50(或49)次是有道理的。
请尝试使用以下代码。它只检查enteredtextu
是否在状态列表中,并进入循环以查找投票数。只有当它是。
...
enteredtext = entrybox.getText()
enteredtextu = enteredtext.upper()
if not enteredtextu in STATE_LIST:
print 'Not a state'
else:
for i, s in enumerate(STATE_LIST):
# ... etc
答案 1 :(得分:1)
这是发生了什么。假设用户输入AR
:
让我们开始'枚举'状态列表:
AK != AR ? Yup! print 'Not a state'
AL != AR ? Yup! print 'Not a state'
AR != AR ? Oh these are the same! Print the number of votes!
AZ != AR ? Yup! print 'Not a state'
... so on ...