仅显示反应时间的第6位数

时间:2013-02-09 20:44:43

标签: python

我正在进行反应时间实验。我是python的新手,我正在使用一个名为psychopy的软件包(虽然我猜这是一个python问题)。我有一个反应时间和我只想一直显示小数点后的第6位数(微秒)

此代码显示RT到6位数字:

msg="Correct! RT=%.6f" %(resp.rt)在显示屏上显示:0.427716

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

我已成功使用此代码:

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

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

2 个答案:

答案 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