Python генератор случайных чисел лотереи - PullRequest
0 голосов
/ 24 февраля 2019

Я должен создать игру, в которой, как и в лотерее, моя программа генерирует 5 случайных чисел из списка чисел 1-50 и одно дополнительное число из списка чисел 1-20 и объединяет их в окончательный список, например:(20, 26, 49, 01, 11, + 06), где два числа никогда не повторяются, как (22, 11, 34, 44, 01, + 22) <--- это то, что я не хочу </p>

ниже приведен код, который я уже написал, как мне сделать так, чтобы два или более числа никогда не повторялись и чтобы добавить + в мой список без знака ""

input: import random

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]

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Нельзя добавить + без ' вокруг них - они помечают + как строку.

Кроме того: вы перетасовываете свой список - просто берете первые 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

Доку:

0 голосов
/ 24 февраля 2019

Вы можете попробовать следующее:

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 или объединение), кавычки не было бы там.

...