0

我正在做一个反应时间实验。我对python很陌生,我正在使用一个名为psychopy的包(尽管我猜这是一个python问题)。我有一个反应时间,我只想始终显示小数点后的第 6 位(微秒)

此代码将 RT 显示为 6 位数字:

msg="Correct! RT=%.6f" %(resp.rt)在显示器上产生这个:0.427716

但我只想显示最后一位数字,在本例中为 6。

我已成功使用此代码:

msg= str(resp.rt)[-7]

但是,显示的相应数字有时是第 5 位,有时是第 6 位。而不是总是第 6 个。我不知道为什么。

4

2 回答 2

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'
于 2013-02-09T20:48:33.530 回答
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
于 2013-02-09T20:52:51.217 回答