我正在为a&p课程的当前部分编写一个基本上是学习指南/实践测试的程序(它让我比一遍又一遍地重读笔记更投入)。测试工作没有任何问题,但我有一个问题,我的一些问题使用“enterbox”输入,我可以有问题循环,如果答案是不正确的,但我不能让它打破没有一个正确的答案。 我找到了一种方法,将整个函数放回初始的“else”树中,这样无论是对是错,你都可以进入下一个问题,但它看起来非常难看,我不敢相信没有更好的方法。 所以我的“解决方案”是这样的:
def question82():
x = "which type of metabolism provides the maximum amount of ATP needed for contraction?"
ques82 = enterbox(msg = x, title = version)
#version is a variable defined earlier
if ques82.lower() in ["aerobic"]:
add() #a function that is explained in the example further below
question83()
else:
loss() #again its a housecleaning function shown below
ques82b = enterbox(msg = x, title = version)
if ques82b.lower() in ["aerobic"]:
add()
question83()
else:
loss()
question83()
好吧,这样就行了,但是对每个“enterbox”问题使用嵌套if树看起来有点草率。我自学成才,所以这可能是唯一的解决办法,但如果有更好的东西,我很想了解它。你知道吗
下面是我课程的完整部分:
from easygui import *
import sys
version = 'A&P EXAM 3 REVIEW'
points = 0
def add():
global points
msgbox("Correct", title = version)
points = points + 1
def loss():
global points
msgbox("Try Again", title = version)
points = points - 1
def question81():
x = "What chemical is stored by muscle as a source of readily available energy for muscle contractions"
ques81 = enterbox(msg = x, title = version)
if ques81.lower() in ["creatine"]:
add()
question82()
else:
loss()
question81()
它是这样工作的,所以从什么提供的任何错误可能是我的错误,从复制和粘贴。 如果有帮助的话,我还在python2.7rc1中运行它。 谢谢你的帮助。你知道吗
我不知道是否有一种方法,结合“enterbox”有一个按钮“跳过”,因为这也将是一个解决方案。你知道吗
考虑以下方法:
ask_question
函数,我们可以调用它来处理所有的问题。这样,如果我们想改变我们如何实现我们的问题逻辑,我们只需要在一个地方(而不是在每个questionXX
函数中)。你知道吗==
和非in
比较用户输入和答案(in
将做其他事情,而不是你所期望的)。你知道吗ResultsStore
的一个实例,但是它可以是任何东西,让我们试着远离全局变量。你知道吗retry_on_fail is False
),循环将重复。你知道吗store.display_results()
方法来实现这一点。你知道吗那么,关于:
现在,返回值目前不起任何作用,但它可以!你知道吗
快速而肮脏的解决方案可以使用默认值“skip”作为答案:
但你真的应该研究犹太矮人给出的答案。有很多东西要学 程序设计。他不是给你鱼,他是教你钓鱼。你知道吗
相关问题 更多 >
编程相关推荐