Простая задача (Лотерея) на Python
Активно изучаю Python не хватает обратной связи. Пожалуйста подскажите правильное ли решение задачи у меня? Можно ли решить поставленную задачу более лаконично? Например используя классы?
9.14. Лотерея:
- создайте список или кортеж, содержащий серию из 10 чисел и 5 букв.
- Случайным образом выберите 4 числа или буквы из списка.
- Выведите сообщение о том, что билет, содержащий эту комбинацию из четырех цифр или букв, является выигрышным.
from random import choice
numbers = [0, 1, 'A', 2, 3, 'B', 4, 5, 'C', 6, 7, 'D', 8, 9, 'E']
def get_sim(*args):
number = str(choice(args))
return number
win_ticket = get_sim(*numbers) + get_sim(*numbers) + get_sim(*numbers) + get_sim(*numbers)
print(f'Выиграл билет №: {win_ticket}')
Ответы (5 шт):
Автор решения: Владислав Харламов
→ Ссылка
Можно так:
from random import choice
def generator_ticket():
ticket_alphabet = '0123456789ABCD'
winner_ticker = [choice(ticket_alphabet) for _ in range(4)]
return ''.join(winner_ticker)
print(generator_ticket()) # C162
Можно совсем коротко:
from random import choice
winner_ticker = lambda: 'Выигрышный билет: ' + ''.join([choice('0123456789ABCD') for _ in range(4)])
print(winner_ticker()) # Выигрышный билет: 1517
Автор решения: CrazyElf
→ Ссылка
Не шибко короче, но сильно универсальнее (легко задать нужное число букв, цифр и длину выигрышного билета):
from random import choice
numbers = list(range(10)) + [chr(ord('A') + i) for i in range(5)]
win_ticket = ''.join(map(str, (choice(numbers) for _ in range(4))))
print(f'Выиграл билет №: {win_ticket}')
Автор решения: ПИТОНИСТ версия-3-8
→ Ссылка
Вот ответ на задачу:
from random import choice
numbers = '0 1 A 2 3 B 4 5 C 6 7 D 8 9 E'.split()
print("Выиграл билет "+choice(numbers)+choice(numbers)+choice(numbers)+choice(numbers))
В 3 строки
Автор решения: moondust
→ Ссылка
Еще можно пройтись по списку циклом for, хотя при этом скорость исполнения может немного хромать
from random import choice
limit = 4 # количество чисел в билете
result = []
numbers = [0, 1, 'A', 2, 3, 'B', 4, 5, 'C', 6, 7, 'D', 8, 9, 'E']
for f in range(limit):
result.append(choice(numbers))
print(*result, sep='')
Автор решения: Vach
→ Ссылка
#Вот так тоже можно
#9.14 Лоторея
from random import choice
class Lotoreya(object):
def __init__(self):
self.x = ['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
def printing(self):
print("The following number combination you got: ")
for p in range(4):
p = choice(self.x)
print(p)
x = Lotoreya()
x.printing()