我需要使用.split()
从字符串中制作iPhone模型列表。
这不是问题,但我还必须使用0-9之间的随机数来挑选一个单词, 然后使用while / for循环显示3个随机单词。
在我的代码中,当我输入:
import random
iPhone = 'Original 3G 3GS 4 4S 5 5C 5S 6 6Plus'.split()
z = 0
while z < 4:
for y in range (1,3):
for x in iPhone:
x = random.randint(0,10)
print (iPhone[x])
它说:
Traceback (most recent call last):
File "C:\Users\zteusa\Documents\AZ_wordList2.py", line 15, in <module>
print (iPhone[x])
IndexError: list index out of range
我不确定是什么造成的。
答案 0 :(得分:5)
random.randint
的两个参数都包含在内:
>>> import random
>>> random.randint(0, 1)
1
>>> random.randint(0, 1)
0
>>>
因此,当您执行x = random.randint(0,10)
时,x
有时可能等于10
。但是您的列表iPhone
只有十个项目,这意味着最大索引为9
:
>>> iPhone = 'Original 3G 3GS 4 4S 5 5C 5S 6 6Plus'.split()
>>> len(iPhone)
10
>>> iPhone[0] # Python indexes start at 0
'Original'
>>> iPhone[9] # So the max index is 9, not 10
'6Plus'
>>> iPhone[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>
你需要这样做:
x = random.randint(0, 9)
以便x
始终位于iPhone
的有效索引范围内。
关于您的评论,您说您需要从列表中打印三个随机项。所以,你可以这样做:
import random
iPhone = 'Original 3G 3GS 4 4S 5 5C 5S 6 6Plus'.split()
z = 0
while z < 3:
x = random.randint(0,9)
print (iPhone[x])
z += 1 # Remember to increment z so the while loop exits when it should