Ни одна ветвь if-else не выполняется - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в Python и пытаюсь написать программу, чтобы определить, является ли буква гласной или согласной, используя список и для l oop. У меня есть два условия, которые оба что-то печатают, но ни одно из них не выполняется, и мой вывод пуст. Почему?

Код выглядит следующим образом:

    al=input("Enter the alphabet")

    list=['a','e','i','o','u']


    for p in list:
      if al==p:
          print("The alphabet is a vowel")


    else:
      print("The alphabet is a consonant")

Вывод:

C: \ Users \ dell \ PycharmProjects \ HelloWorld \ venv \ Scripts \ python .exe

C: / Users / dell / PycharmProjects / HelloWorld / app.py

Введите алфавит

Процесс завершен с кодом выхода 0

Может кто-нибудь сказать мне, где я иду не так?

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Существует три проблемы с этим кодом:

  • на некоторых платформах (python 2) вы должны использовать raw_input вместо input: python input () работает не так, как ожидалось

  • сопоставление списка можно выполнить следующим образом: if al in <ref_list>

  • , как указано @ AryaMcCarthy else в for l oop выполняется только тогда, когда не было достигнуто break

Так что вы можете попробовать код, совместимый с python2 + 3

import sys
if sys.version_info < (3,):
    input = raw_input

al = input("Enter the alphabet")
ref_list = ['a', 'e', 'i', 'o', 'u']

if al in ref_list:
    print("The alphabet is a vowel")
else:
    print("The alphabet is a consonant")

ПРИМЕЧАНИЕ, как отмечает @ThierryLathuille, использование пакета past.builtins может оказаться излишним, поэтому я заменил его использование в приведенном выше примере кода проверкой информации о версии sys.

Теперь, если у вас есть проблема с raw_input или input в интерактивном режиме, возможно, это из-за того, что ваш терминал этого не разрешает?

1 голос
/ 01 апреля 2020

Вы можете сделать

al=input("Enter the alphabet")
vowels=['a','e','i','o','u']
if al in vowels:
  print("The alphabet is a vowel")
else:
  print("The alphabet is a consonant")

Для этого не нужно l oop, даже если это работает так, как ожидалось. Он печатает 5 строк, например, если введенный символ 'e', ​​как в данном примере:

Алфавит является согласной

Алфавит гласный

согласный алфавит

согласный алфавит

алфавит согласный

1 голос
/ 01 апреля 2020

else не работает так, как вы думаете. Он выполняется только если нет break для выхода из l oop. (Обратите внимание, что он присоединен к for l oop, а не к оператору if.)

Попробуйте это.

al=input("Enter the alphabet")

list_=['a','e','i','o','u']


for p in list_:
  if al==p:
      print("The alphabet is a vowel")
      break  # exit the loop

else:  # triggers if we haven’t seen a vowel and exited.
  print("The alphabet is a consonant")

Кстати, вы не должны называть переменные list в Python. Вы будете скрывать встроенное имя, которое может вызвать непредвиденные проблемы далее в коде. Кажется, я назвал чайник черным здесь; спасибо @ NanduRaj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...