簡體   English   中英

列舉python中的麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM