[英]enumerate trouble in python
關於程序的一些背景。 它建立了一個帶有兩張候選圖片,一些說明和一個輸入框的圖形窗口,然后用戶將縮寫詞放入輸入框,然后單擊其中一個候選,它顯示的票數等於然后輸入的任何狀態。 我在編寫異常處理程序時遇到麻煩,如果用戶輸入的狀態不在我的列表中,該異常處理程序應該打印一條錯誤消息。 這是我遇到麻煩的代碼部分:
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到列表中的所有項目,如果不存在,它將打印“ Not a state”。 我遇到的問題是,當我輸入不在列表中的狀態時,它會打印“不是狀態” 50次;當我進入列表中的狀態時,它會顯示應有的投票數量,而且打印“不是狀態” 50次
您檢查每個狀態的名稱是否與輸入的文本匹配,因為該檢查位於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
這是怎么回事。 假設用戶輸入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 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.