Простая задача (Лотерея) на Python

Активно изучаю Python не хватает обратной связи. Пожалуйста подскажите правильное ли решение задачи у меня? Можно ли решить поставленную задачу более лаконично? Например используя классы?

9.14. Лотерея:

  1. создайте список или кортеж, содержащий серию из 10 чисел и 5 букв.
  2. Случайным образом выберите 4 числа или буквы из списка.
  3. Выведите сообщение о том, что билет, содержащий эту комбинацию из четырех цифр или букв, является выигрышным.
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()
→ Ссылка