@AnnoyingWolf

Как можно сократить код Python?

Создал вот такую программку и сразу задался вопросом, как можно уменьшить такое количество операторов elif или вложить их в друг-друга, потому что когда я вкладываю функции elif в if или if в elif, то выполнение команд просто игнорируется.

Код:
a = -1
b = 1
c = 0
Try = 'Попробуйте снова...'
run = True
print('Сколько будет 3+4-4*2, 9%4 и ~-1')
while run:
	answer1 = int(input('Введите первое число:'))
	answer2 = int(input('Введите второе число:'))
	answer3 = int(input('Введите третье число:'))
	if answer1 == a and answer2 == b and answer3 == c:
		print('Поздравляю,вы ответили верно')
		run = False
	elif answer1 == a and answer2 == b:
		print('Вы ответили верно на 1 и 2 вопрос')
		print(Try)
	elif answer2 == b and answer3 == c:
		print('Вы ответили верно на 2 и 3 вопрос')
		print(Try)
	elif answer1 == a and answer3 == c:
		print('Вы ответили верно на 1 и 3 вопрос')
		print(Try)
	elif answer1 == a:
		print('Вы ответили верно лишь на 1-й вопрос')
		print(Try)
	elif answer2 == b:			
		print('Вы ответили верно лишь на 2-й вопрос')
		print(Try)
	elif answer3 == c:
		print('Вы ответили верно лишь на 3-й вопрос')
		print(Try)	
	else:
		print('Вы ответили не верно')		
		print(Try)
print('Хорошая работа!!!')
input('Нажмите ENTER чтобы завершить')
  • Вопрос задан
  • 515 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
right_answers = [-1, 1, 0]

print('Сколько будет 3+4-4*2, 9%4 и ~-1?')
while True:
    user_answers = (int(input('Введите {} число:'.format(i))) for i in ('первое', 'второе', 'третье'))
    equalities = [a == b for a, b in zip(right_answers, user_answers)]
    if all(equalities):
        print('Поздравляю, вы ответили верно!')
        break
    else:
        if sum(equalities):
            nums = ', '.join('{}-й'.format(n) for n, i in enumerate(equalities, start=1) if i)
            print('Вы ответили верно на {} вопрос'.format(nums))
        else:
            print('Вы ответили не верно')
    print('Попробуйте снова...')

print('Хорошая работа!!!')
input('Нажмите ENTER чтобы завершить')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы