import random
def usertype():
randletter = random.choice('qwer')
userinput = raw_input('Press '+str(randletter))
if userinput == randletter:
return 'Correct'
else:
return 'Incorrect'
def usertypetest(x,y,result):
while x <= 9:
result = usertype()
if result == 'Correct':
x = x+1
y = y+5
else:
x = x+1
y = y-2
return str(y)+'is your score'
print usertypetest(0,0,usertype)
这是我的代码。我想让它要求用户按下一个按钮,从集合(Q、W、E、R)中随机选择,然后打印正确或不正确,具体取决于他们按下的按钮。我希望这种情况发生 10 次。十次尝试后,它将打印他们的分数:每个“正确”为 5,“不正确”为 -2。相反,我收到了这个。
Press e(e)
Press e(e)
Press w(e)
Press q(e)
Press q(e)
Press q(e)
Press r(e)
Press e(e)
Press w(e)
Press q(e)
Press e(e)
Press e(e)
Press e(e)
Press e(e)
Press q(e)
Press w(e)
Press r(e)
Press w(e)
Press r(e)
Press w(e)
Press r(e)
Press r(e)
无论我输入什么,它都不会返回“正确”或“不正确”。它也继续过去 10 并且不显示他们的分数。显然存在我没有发现的问题。
我的输入在括号中。
为了澄清,这就是我想要的:
Press q(q)
Correct
Press e(q)
Incorrect
Press w(w)
Correct
Press q(q)
Correct
Press e(eq)
Incorrect
Press e(e)
Correct
Press q(q)
Correct
Press q(r)
Incorrect
Press w(w)
Correct
Press r(r)
Correct
29 is your score
在 Python 中缩进非常重要。
在这段代码中,while
循环的 x
永远不会改变,因为 if
block 与 while
循环。所以唯一的循环指令是 result = usertype()
while x <= 9:
result = usertype()
if result == 'Correct':
x = x+1
y = y+5
两个额外的批评:
您在两个地方递增 x
,而它只需要完成一次。
while x <= 9:
result = usertype()
if result == 'Correct':
y = y+5
else:
y = y-2
x += 1
此外,由于您要循环固定次数,为什么不忽略递增的 x
并使用 for 循环,如下所示:
for x in range(10):
result = usertype()
if result == 'Correct':
y = y+5
else:
y = y-2
我是一名优秀的程序员,十分优秀!