Python随机彩票号码生成器游戏

时间:2019-02-23 21:31:33

标签: python-3.x random code-generation google-colaboratory

我必须做一个游戏,就像我的彩票一样,我的程序从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]

3 个答案:

答案 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