Аналог goto в Python
Пишу программу "тест", и нужно делать так чтобы если номер вопроса повторяется(выбирается он через random), то номер вопроса подбирался заново, через while сделать не вариант. Сначала хотел сделать через метку, но вспомнил что код я пишу на Pythone и такого в нем нет. Долго ломал голову, в итоге как-то по-другому сделать не вариант, либо я просто не додумываюсь. Есть ли какие-то варианты заменить goto или сделать программу по другому? Этот кусок кода вышел в 30 строчек и переписывать не хочу, надо было додумывать это сразу. Буду очень признателен за помощь
НЕ НАДО выбирать номер вопроса через random. Надо взять массив (в терминах Python - список) с теми номерами вопросов, из которых необходимо выбирать, и перемешать его функцией random.shuffle. А потом последовательно брать из этого массива очередное значение. Это гарантирует и случайный выбор вопросов, и отсутствие повторов вопросов.
В Python нет прямого аналога goto, и это не случайно. goto часто приводит к запутанному и сложному коду, который трудно читать и отлаживать.
Однако, в твоем случае вместо goto можно использовать цикл while в комбинации с условным оператором if.
Вот пример:
import random
def ask_question(question, answer):
"""Задает вопрос и проверяет ответ."""
print(question)
user_answer = input("Ответ: ")
if user_answer == answer:
print("Верно!")
else:
print("Неверно.")
questions = {
1: ("Какой язык программирования самый популярный?", "Python"),
2: ("Какая столица Франции?", "Париж"),
3: ("Что такое HTML?", "Язык разметки"),
}
used_questions = set()
while len(used_questions) < len(questions):
question_number = random.choice(list(questions.keys()))
if question_number not in used_questions:
used_questions.add(question_number)
ask_question(*questions[question_number])
else:
continue
print("Тест завершен!")