Здесь начинающий Python программист, изо всех сил пытающийся использовать логический оператор ИЛИ - PullRequest
0 голосов
/ 29 мая 2020

Написал приведенный ниже фрагмент кода на Python IDLE и получил правильный ответ ниже:

>>> cars = ["audi", "bmw", "daimler", "toyota", "vw"]
>>> for car in cars:
    if "a" in car:
        print(car.title())
    else:
        print(car.upper())

РЕЗУЛЬТАТ:

Audi
BMW
Daimler
Toyota
VW

Затем я изменил код, чтобы я мог печатать автомобили без гласной ВВЕРХ и остальное название, как показано ниже, но я напечатал все автомобили Название:

>>> cars = ["audi", "bmw", "daimler", "toyota", "vw"]
>>> for car in cars:
    if "a" or "e" in car:
        print(car.title())
    else:
        print(car.upper())

РЕЗУЛЬТАТ:

Audi
Bmw
Daimler
Toyota
Vw

Может ли кто-нибудь любезно помочь сказать, что не так последний блок кода, цель состоит в том, чтобы напечатать все автомобили без гласных полностью в верхнем регистре, а остальные как заголовок.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 29 мая 2020

Ваше выражение:

"a" or "e" in car

эквивалентно:

"a" or ("e" in car)

, что является всегда "a", истинным значением. Вот почему он выполняет title() для всего.

Вместо этого вы должны использовать:

if "a" in car or "e" in car

или (полушутя), так как любую проблему можно решить, добавив в него больше регулярных выражений. :

if re.search("[ae]", car) is not None: # needs import re
0 голосов
/ 29 мая 2020

TBH, с которыми вы не очень разбираетесь, или операторы без проблем, но это желаемый способ передачи оператора or if, который я сделал для вас.

cars = ["audi", "bmw", "daimler", "toyota", "vw"]
for car in cars:
    if "a" in car or 'e' in car or 'i' in car or 'o' in car or 'u' in car:
        print(car.title())
    else:
        print(car.upper()) 

Результат:

Audi
BMW
Daimler
Toyota
VW

Process finished with exit code 0

Надеюсь, вы найдете это полезным

0 голосов
/ 29 мая 2020

if "a" or "e" in car всегда будет True, поскольку a логически True. Попробуйте вместо этого:

if "a" in car or "e" in car:
    print(car.title())
else:
   print(car.upper())

или вы можете использовать any, если вы хотите проверить больше символов и хотите избежать нескольких or s:

# any will return True if `car` contains one of the chars in the provided list.
if any(map(lambda c: c in car,["a","e"])):
    print(car.title())
else:
   print(car.upper())

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