我正在进行反应时间实验。我是python的新手,我正在使用一个名为psychopy的软件包(虽然我猜这是一个python问题)。我有一个反应时间和我只想一直显示小数点后的第6位数(微秒)。
此代码显示RT到6位数字:
msg="Correct! RT=%.6f" %(resp.rt)
在显示屏上显示:0.427716
但我想只显示最后一位数,在本例中为6。
我已成功使用此代码:
msg= str(resp.rt)[-7]
但是,显示的相应数字有时是第5位,有时是第6位。而不是总是第6。我不明白为什么。
答案 0 :(得分:2)
您可以直接索引字符串:
>>> val = 0.427716
>>> print str(val)[7]
6
...但这会导致数字丢失的惊喜:
>>> val = 0.5
>>> str(val)[7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
...所以你最好将字符串输出格式化为指定的位数,然后将其编入索引:
>>> def GetSixthDigit(f):
... s = "%2.6f" % f
... return s[7]
...
>>> GetSixthDigit(0.427716)
'6'
>>> GetSixthDigit(0.5)
'0'
答案 1 :(得分:2)
tests = [
0.4277169,
0.427716,
0.42771,
999.42771,
999.427716
]
for rt in tests:
print('Correct! RT = %d' % (rt*10**6 % 10, ))
产量
Correct! RT = 6 # This shows the correct digit if rt has more than 6 significant digits
Correct! RT = 6
Correct! RT = 0 # This shows a zero is used if rt has < 6 significant digits
Correct! RT = 0
Correct! RT = 6