2009-12-13 122 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编程风格。