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, ))

yields

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 に答える