在python中使用循环验证正确答案

时间:2009-12-13 19:52:23

标签: python user-interface

对于非描述性问题,我不知道如何说出来。

我正在尝试编写一个程序(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 =“”等等

4 个答案:

答案 0 :(得分:4)

这里的问题似乎是你误解了GUI的运作方式。它不像大多数编程指令开始的顺序打印/读取代码。 GUI小部件仅创建自己,绘制到屏幕并等待事件。

这一行:

Answer1 = entAnswer.getText()

最终会将Answer1设置为空字符串,因为此时用户尚未在文本框中输入任何内容。相反,您必须创建一个回调函数,当用户点击按钮对答案进行评分时,GUI将调用该函数。然后在该功能中,您将能够阅读用户的答案并将其标记为正确或不正确。

我建议再次浏览GUI库的教程,以了解事件驱动的GUI编程风格。

答案 1 :(得分:0)

我建议您从显示问题,获取答案和确定正确性的问题中抽象出用户界面细节。您可以使用命令行,基于文本的用户界面对所有这些进行排序。一旦你有了这个,那么你可以放心地继续进行用户界面设计,因为他们知道调查问卷背后的逻辑是合理的。

这个想法有几个名字:分层,MVC等。我推荐它用于解决这个问题,因为它可以帮助你学习那些难以解决的问题的想法。

答案 2 :(得分:0)

我没有看到逻辑失败的原因,但你确定你是按“A”而不是“a”。

答案 3 :(得分:0)

我不能对这个特定问题说些什么,但我会做一个

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

我遇到过类似字符串的包装类(在其他情况下) 但实际上并不是字符串。此外,可以在任何地方添加空格和换行符:)