Почему мой оператор сравнения не работает в цикле for?

Я новичок в Python и написал программу, которая определяет, является ли буква в введенной строке гласной или согласной. Если буква является гласной, программа печатает гласную, но если согласная, то печатает согласную.

Я написал программу двумя разными способами и не могу понять, почему второй кодовый набор не работает. При запуске он возвращает «гласный» для всех букв в введенной строке.

#this code works
word = input("Please enter a word: ")
for letter in word.lower():
    if letter == 'a':
        print("vowel")
    elif letter == 'e':
        print("vowel")
    elif letter == 'i':
        print("vowel")
    elif letter == 'o':
        print("vowel")
    elif letter == 'u':
        print("vowel")
    else:
        print(letter)

#this code doesn't work

word = input("Please enter a word: ")
for letter in word.lower():
    if letter == 'a' or 'e' or 'i' or 'o' or 'u':
        print("vowel")
    else:
        print(letter)

Если я введу «David» в первом наборе кода, он вернет [d, vowel, v, vowel, d]. Мне интересно, почему логика в выражении for второго набора кода не работает. Почему я не могу использовать оператор сравнения »или« так, как он есть во втором примере кода? Когда запускается второй набор кода, я получаю слово «гласный», возвращаемое для всех букв в строке

2
Оператор «if» вашего второго примера кода немного ошибочен - каждый из ваших тестов «или» после первого возвращает true ... попробуйте использовать букву «if» в ['a', 'e', ​​'i', 'ОУ']"
добавлено автор ccbunney, источник

1 ответы

Так что у вас есть путаница, в python болейн может быть довольно запутанным. пустой список, пустой символ будет иметь значение False. непустой список, и char будет оценивать True.

# when your are doing :
if letter == 'a' or 'e' or 'i' or 'o' or 'u':

Вы проверяете, является ли буква == 'a', но если 'e' не пустой символ. Правильная форма:

if letter == 'a' or letter == 'e' or letter == 'i' or letter == 'o': # continue

Здесь вы тестируете каждый случай, и первый, и второй способ эквивалентны.

0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community