Задача из книги Эрика Мэтиза "Изучаем Python. Программирование игр, визуализация данных, веб-приложения".

JohnPejon

Новичок
Пользователь
Мар 19, 2024
1
0
1
9.14. Лотерея: создайте список или кортеж, содержащий серию из 10 чисел и 5 букв. Случайным образом выберите 4 числа или буквы из списка. Выведите сообщение о том, что
билет, содержащий эту комбинацию из четырех цифр или букв, является выигрышным.

9.15. Анализ лотереи: напишите цикл, который проверяет, насколько сложно выиграть
в смоделированной вами лотерее. Создайте список или кортеж с именем my_ticket. Напишите цикл, который продолжает генерировать комбинации до тех пор, пока не выпадет выигрышная комбинация. Выведите сообщение с информацией о том, сколько выполнений
цикла понадобилось для получения выигрышной комбинации.

Пробовал разные способы, какие знаю, но всё не выходит добиться нужного результата.
Никак не пойму, где ошибка.

В своём коде я уменьшил количество букв в списках из-за лени.

Код:
import random

def make_ticket(tickets, winners): #создает список из трёх случайных букв
    counter = 0
    while counter < 3:
        win = random.choice(tickets)
        winners.append(win)
        counter += 1
    return winners
    
ticket = ['a', 'b', 'c', 'd', 'e']
winner = []
my_ticket = ['a', 'b', 'c']
my_counter = 0
flag = 1

while flag == 1:
    if my_ticket != winner:
        my_counter += 1
        make_ticket(ticket, winner)
    else:
        flag = 0
        print(my_counter)
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
из функции список возвращаете но никуда его не присваиваете

Python:
import random


def make_ticket(tickets):  # создает список из трёх случайных букв
    winners = []
    counter = 0
    while counter < 3:
        win = random.choice(tickets)
        winners.append(win)
        counter += 1
    return winners


ticket = ['a', 'b', 'c', 'd', 'e']
winner = []
my_ticket = ['a', 'b', 'c']
my_counter = 0
flag = 1

while flag == 1:
    if my_ticket != winner:
        my_counter += 1
        winner = make_ticket(ticket)
    else:
        flag = 0
        print(my_counter)
 

Форум IT Специалистов