我必须做一个游戏,就像我的彩票一样,我的程序从1-50号列表中生成5个随机数,并从1-20号列表中生成一个另外的数字,并将它们组合成最终列表,例如: (20、26、49、01、11,+ 06),其中两个数字从不重复,例如(22、11、34、44、01,+ 22)<---这就是我不想要的
下面附上了我编写的代码,但我该如何使它不再重复两个或多个数字,并将+添加到我的列表中而没有“”符号
输入: 随机导入
a = list(range(1,51))
b = random.randint(1, 20)
temp = []
for i in range(5):
random.shuffle(a)
temp.append(random.choice(a[:5]))
temp.append('+')
temp.append(b)
print(temp)
输出:
[14, 12, 3, 16, 23, '+', 9]
答案 0 :(得分:1)
如果没有+
,则不能添加'
-它们将+标记为字符串。
也:您可以随机排列列表-只需取前5个值-它们是随机的,并且列表中不包含任何重复项,因此您很黄金:
nums = list(range(1,51))
random.shuffle(nums)
five_nums = nums[:5]
print(five_nums) # [44, 23, 34, 38, 3]
为简单起见,请使用:
import random
# creates 5 unique elements from 1..50 and adds a + and a [0-19]+1 number
randlist = random.sample(range(1,51),k=5) + ["+", random.choice(range(20))+1]
print(randlist)
现在您已经得到了混合数字和字符串-您可以通过以下方式创建组合字符串:
print("You drew {} {} {} {} {} {} {}".format(*randlist))
要创建类似
的字符串[48, 2, 9, 6, 41, '+', 8]
You drew 48 2 9 6 41 + 8
Doku:
答案 1 :(得分:0)
您可以尝试以下操作:
import random
randList, run = [], 0
while run < 6:
number = random.randint(1,51)
if number not in randList:
if run == 5:
randList.append('+'+str(number))
break
randList.append(number)
run += 1
print(randList)
列表中不能有没有引号的字符串,但是,如果要打印列表中的每个项目(使用for循环或连接),引号就不会出现。
答案 2 :(得分:-1)
它没有用,因为您需要
import random