Проблема с циклом While. Даже если условие не сработало, все равно продолжается цикл
user_naber_1 = ('1. В компании (на вечеринке) Вы a) общаетесь со многими, включая и незнакомцев б) общаетесь с немногими - Вашими знакомыми. \n Введите ответ: ')
user_naber_2 = ('2. Вы человек скорее а) реалистичный, чем склонный теоретизировать б) склонный теоретизировать, чем реалистичный. \n Введите ответ: ')
def user_naber_func(user_naber):
user_naber = input(user_naber)
while user_naber != 'а' or user_naber != 'б':
print("Введите ответ а или б!")
user_naber = input()
return user_naber
user_naber_1 = user_naber_func(user_naber_1)
user_naber_2 = user_naber_func(user_naber_2)
print(user_naber_1)
print(user_naber_2)`
Выводится "Введите ответ а или б!" и просит еще раз ввести значение user_naber. И так бесконечно.
Ответы (3 шт):
Автор решения: sLoNcE
→ Ссылка
Вместо оператора or нужно использовать оператор and
def user_naber_func(user_naber):
user_naber = input(user_naber)
while user_naber != 'а' and user_naber != 'б':
print("Введите ответ а или б!")
user_naber = input()
return user_naber
Автор решения: Leonid
→ Ссылка
def user_naber_func(user_naber):
user_naber = input(user_naber)
while user_naber != 'а' and user_naber != 'б':
print("Введите ответ а или б!")
user_naber = input()
return user_naber
Автор решения: Дмитрий
→ Ссылка
Логическая ошибка:
while user_naber != 'а' or user_naber != 'б':
выполняется до тех пор пока ответ не равен "а" ИЛИ "б". Одновременно ответ никогда не будет равен обоим значениям )))
Немного переделал:
def ask_query(number, question):
print(f'{number}.', question)
answer = ''
while answer not in ['а', 'б']:
answer = input('Введите ответ "а" или "б": ')
return answer
questionnaire = [
'В компании (на вечеринке) Вы \n\ta) общаетесь со многими, включая и незнакомцев\n\tб) общаетесь с немногими вашими знакомыми.',
'Вы человек скорее\n\tа) реалистичный, чем склонный теоретизировать\n\tб) склонный теоретизировать, чем реалистичный.'
]
answers = []
counter = 1
for query in questionnaire:
answers.append(ask_query(counter, query))
counter += 1
print()
counter = 1
for answer in answers:
print(f'Ответ {counter}: "{answer}"')
counter += 1