Force the user to answer a valid alternative in a multiple choice Python question system

Asked

Viewed 23 times

-3

The code below works well, but I would like it to ask the specified question again if the user does not type one of the three available alternatives.

perguntas = {
    'Pergunta 1': {
        'pergunta': 'Quanto é 2+2? ',
        'respostas': {'a': '1', 'b': '4', 'c': '5',},
        'resposta_certa': 'b'
    },
    'Pergunta 2': {
        'pergunta': 'Quanto é 5*3? ',
        'respostas': {'a': '10', 'b': '40', 'c': '15',},
        'resposta_certa': 'c'
    },
}

respostas_certas = 0

for pk, pv in perguntas.items():
    print(f'{pk}: {pv["pergunta"]}')

    print('Respostas: ')
    for rk, rv in pv['respostas'].items():
        print(f'[{rk}]: {rv}')
    
    resposta_usuario = input('Sua resposta: ')

    if resposta_usuario == pv['resposta_certa']:
        print('Certa a Resposta!')
        respostas_certas +=1
    else:
        print('Resposta errada!')

    print()

qtd_perguntas = len(perguntas)
porcentagem_acerto = respostas_certas / qtd_perguntas * 100  

print(f'Você acertou {respostas_certas} respostas')
print(f'Sua porcentagem de acerto foi de {porcentagem_acerto}%')

1 answer

2


Use a little bow while that continually asks for user input until it enters one of the possible alternatives:

resposta_usuario = input('Sua resposta: ')
while resposta_usuario not in ('a', 'b', 'c'):
    resposta_usuario = input("Resposta inválida, digite apenas a, b ou c:")
  • Thank you very much.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.