【发布时间】:2019-02-05 13:15:29
【问题描述】:
首先,我想说我认为之前已经回答了完全相同的问题,但是经过简短的研究后,我找不到任何线索可以引导我在这里找到我想要的答案,这意味着我没有挖掘足够或错过了一些关键字。很抱歉,如果这个问题在那里。
无论如何,我已经开始学习 python 并且正在做一些练习。我需要创建一个列表,其中包含 10 个随机生成的整数,每个整数必须有不同的值。
所以我尝试将列表的第一个元素与下一个元素进行比较,如果它们相同,我尝试使用 if 语句生成一个新数字。
import random
listA = []
for i in range(0,10):
x=random.randint(1,100)
if listA[i] == listA[i-1]:
x=random.randint(1,100)
else:
listA.append(x)
listA.sort()
print(listA)
但是我有一个错误说; “列表索引超出范围”
我希望 if 语句从“0”索引开始并计数到“listA”的第 9 个索引,然后比较它们,如果相同,则生成另一个随机数。但显然,我的索引是错误的。
此外,代码中的任何其他 cmets 将不胜感激。
提前感谢您的宝贵时间。
【问题讨论】:
-
当列表为空时你正在这样做
if listA[i] == listA[i-1] -
尝试使用
if x in listA:,您可以使用random.sample(range(1, 100), 10)制作唯一列表 -
您想检查除第一次迭代之外的前一个元素,因此
if i>0 and listA[i] == listA[i-1]将解决您的问题。 -
谢谢。那很有帮助。就像我说的,因为我对 python 语法真的很陌生,而且我正在通过练习来学习,所以我真的不知道这是可能的。另外,random.sample 对我来说是全新的。