2009-12-13 39 views
0

對不起,我不知道如何說出它的非描述性問題。驗證python中的循環的正確答案

我想寫一個程序(GUI),我問用戶的問題,然後作爲回報他們回答,看看他們是否正確,但是當我輸入正確的答案時,它仍然顯示爲不正確。

我的代碼看起來像這樣。

提示問題1

txtQuestion = Text(Point(5,8), "Question 1") 
txtQuestion.setTextColor("red") 
txtQuestion.setSize(16) 
txtQuestion.setStyle("bold") 
txtQuestion.draw(win) 

txtAnswer = Text(Point(1.5,4), "Answer 1: ") 
txtAnswer.setTextColor(color_rgb(255,127,80)) 
txtAnswer.setSize(14) 
txtAnswer.setStyle("bold") 
txtAnswer.draw(win) 

txtAnswer2 = Text(Point(1.5,3), "Answer 2: ") 
txtAnswer2.setTextColor(color_rgb(255,127,80)) 
txtAnswer2.setSize(14) 
txtAnswer2.setStyle("bold") 
txtAnswer2.draw(win) 

txtAnswer3 = Text(Point(1.5,2), "Answer 3: ") 
txtAnswer3.setTextColor(color_rgb(255,127,80)) 
txtAnswer3.setSize(14) 
txtAnswer3.setStyle("bold") 
txtAnswer3.draw(win) 

txtAnswer4 = Text(Point(1.5,1), "Answer 4: ") 
txtAnswer4.setTextColor(color_rgb(255,127,80)) 
txtAnswer4.setSize(14) 
txtAnswer4.setStyle("bold") 
txtAnswer4.draw(win) 

txtEnterAn = Text(Point(8,3), "Enter your answer below: ") 
txtEnterAn.setTextColor("black") 
txtEnterAn.draw(win) 

entAnswer = Entry(Point(8,2), 3) 
entAnswer.draw(win) 

Answer1 = entAnswer.getText() 


win.getMouse() 

#loop for answer 
if Answer1 == "A": 
    txtCorrect = Text(Point(5,9), "Correct!") 
    txtCorrect.setTextColor("black") 
    txtCorrect.draw(win) 
else: 
    txtCorrect = Text(Point(5,9), "Inorrect!") 
    txtCorrect.setTextColor("black") 
    txtCorrect.draw(win) 

現在,我不知道爲什麼,每次我進入時間「A」,它仍然顯示不正確的,我知道在其他程序中,我不得不浮動entAnswer可變的,但我想這時間我不會因爲它是一個字符串。

我必須忽略這種情況,但我不能放下手指,任何幫助將不勝感激,謝謝!

p.s.我沒有把它放在代碼中,但我確實有最初初始化的變量,例如Answer1 =「」等等

回答

0

我建議您從顯示問題的問題中抽象出用戶界面細節,獲得答案,並確定正確性。除了命令行,基於文本的用戶界面外,您可以將所有這些內容排序。一旦你有了,那麼你就可以放心地繼續用戶界面設計,知道問卷背後的邏輯是正確的。

這個想法有幾個名字:分層,MVC等。我推薦它解決這個問題,因爲它會幫助你學習那些更難以解決的問題的想法,它將是不可或缺的。

0

我沒有看到邏輯會失敗的原因,但是您確定您正在按「A」而不是「a」。

0

我不能說這個特定的問題什麼,但我會做一個

print "'" + answer + "'" 
print answer.__class__ 

我曾經遇到過的包裝類(在其他情況下),它表現得像琴絃 但實際上不是字符串。此外,空格和換行符可以添加到任何地方:)

4

這裏的問題似乎是你誤解了GUI的工作原理。這不像大多數編程指令開始的順序打印/讀取代碼。 GUI小部件僅創建自己,繪製到屏幕並等待事件。

這條線:

Answer1 = entAnswer.getText() 

最終將正確答案爲設置爲空字符串,因爲在這一點上,用戶沒有輸入在文本框中輸入任何內容。相反,您必須創建一個回調函數,當用戶點擊一個按鈕來評分答案時,該函數將由GUI調用。然後在該功能中,您將能夠閱讀用戶的答案並將其標記爲正確或不正確。

我建議再次瀏覽GUI庫的教程,以瞭解事件驅動的GUI編程風格。

相關問題