2013-07-19 54 views
2

我在while循環中遇到if語句有問題。Python - if語句裏面while循環沒有響應

while pressed == 8 : 
    print(answerlistx[randomimage], answerlisty[randomimage]) 
    entryx = e1.get() 
    entryy = e2.get() 
    answerx = answerlistx[randomimage] 
    answery = answerlisty[randomimage] 
    print(entryx, entryy) 
    if e1 == answerx and e2 == answery: 
     print("correct") 
     canvas.delete(images) 
     randomimage = random.randrange(0,49+1) 
     scorecounter = scorecounter + 1 
     game = PhotoImage(file=imagelist[randomimage]) 
     images = canvas.create_image(30, 65, image = game, anchor = NW) 
     e1.delete(0, END) 
     e2.delete(0, END) 
     pressed = '' 
    else: 
     print("incorrect") 
     e1.delete(0, END) 
     e2.delete(0, END) 
     pressed = '' 

while循環應該檢查是否從入插件的輸入匹配的答案,但即使答案是正確的它轉到else語句。我在打印輸入的if語句之前有兩個打印語句,而且它的答案是什麼,只是它沒有,但它確實顯示了它。我也認爲它可能是字符串和整數的混合,所以我把答案列表中的所有答案都改成了沒有運氣的字符串。 任何人都能弄清楚它有什麼問題嗎? 在此先感謝。

+0

只是使用常識。如果它轉到'else','e1 == answerx和e2 == answery'不是真的。期。現在,找出原因。你有沒有檢查過這些變量的類型和值?一些跟蹤消息可以創造奇蹟...... –

+1

只是從查看代碼的觀察,但你確定你並不是要將'entryx'和'entryy'與'answerx'和'answery'進行比較嗎?因爲這是您在比較前打印的內容。目前您正在比較您未打印的'e1'和'e2'進行視覺驗證。 – justinfay

+0

@KarolyHorvath OP說:「即使答案是正確的,它也會轉到else語句」。 – TerryA

回答

6

您正在測試條目對象與答案是否相同。使用的實際值:

if entryx == answerx and entryy == answery: 

,而不是測試對e1e2

+0

現在這只是猜測,雖然我懷疑這是正確的答案。 – justinfay

+0

是的,這是正確的,但它告訴我,我不能接受答案,並感謝答案Martijn彼得斯堆! – ThatsNotMyName

+0

很高興能有幫助! @justinfay:這不僅僅是猜測。 :-) –