问题: 我正在编写一个程序,用随机字母(Q,W,E,R)测试玩家反应。最终程序的想法是,当玩家按下空格时,计时器将开始。然后程序会向它们显示一个随机字母(Q,W,E,R)。当他们按下正确的键然后按回车键时,它将打印“正确”并显示下一个字母。如果他们按错了键,然后按回车键,程序将返回'不正确'。在十个字母之后,它将它们的总时间除以十,以给它们反射时间。由于问题,我还没有添加计时部分,它每3次只打印一次“正确”或“不正确”。其他时间似乎被忽略,也没有添加到乐谱中。感谢您帮我解决此问题。在回答时,请记住我是一名新程序员,所以尽量使其尽可能接近普通英语。
我认为这与我多次使用/打印usertype有关,但我不确定这是不是问题,如果是如何修复它。
*编辑 我更改了代码并使用了你的代替Martijn,它解决了我原来的问题,但是,现在我在result = usertype()的结果中的“t”上收到缩进错误。
程序输出:(我的输入用粗斜体表示)
q
瓦特
不正确的
[R
- [R
瓦特
瓦特
q
q
正确
q
q
[R
- [R
[R
- [R
正确
代码:
import random
def usertype(raw_input):
randletter = random.choice('qwer')
print randletter
userinput = raw_input('')
if userinput == randletter:
return 'Correct'
if userinput != randletter:
return 'Incorrect'
def usertypetest(raw_input):
x=0
y=0
while x <= 9:
print usertype(raw_input)
if usertype(raw_input) == 'Correct':
x = x+1
y = y+5
if usertype(raw_input) == 'Incorrect':
x = x+1
y = y-2
return y
print usertypetest(raw_input)
答案 0 :(得分:3)
每次循环迭代都要调用usertype()
3次。只需将其命名为一次,将结果存储在变量中:
while x <= 9:
result = usertype()
if result == 'Correct':
x = x+1
y = y+5
else:
x = x+1
y = y-2
你不需要在这里任何地方使用raw_input
作为函数参数;只需从调用和函数参数列表中删除它;然后是usertype()
:
def usertype():
randletter = random.choice('qwer')
print randletter
userinput = raw_input('')
if userinput == randletter:
return 'Correct'
else:
return 'Incorrect'
而不是测试反向,只需使用else
。