OS X上的Python 2.7.6或CentOS上的Python 2.6.6
给定一个字符串:'abcdefghijklmno'从该字符串中选择一个随机字符:
#!/usr/bin/env python
import random
symbols = 'abcdefghijklmnop'
print symbols[random.randint(1, len(symbols))]
结果通常是我所期望的,该字符串中的一个随机字符。但是多次运行:
$ for i in {1..100}; do python test.py; done;
偶尔返回IndexError:
....
h
f
f
Traceback (most recent call last):
File "test.py", line 6, in <module>
print symbols[random.randint(1, len(symbols))]
IndexError: string index out of range
b
n
....
我首先认为随机数生成器可能在OS X中存在错误,因此我也在CentOS上进行了尝试,但是得到了相同的结果。
列表索引从零开始,而不是一个。因此,randint()
通话应显示为
randint(0, len(symbols) - 1)
可以说使用random.choice()
而不是直接处理索引会更清晰:
print random.choice(symbols)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句