Что не так с моими операторами if-else и назначениями переменных? - PullRequest
0 голосов
/ 01 октября 2018

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

Проблема:Код выдаст: вращение шин для любого ввода, который я ввожу для auto_serv.Где я допустил ошибку?Есть лучшие идеи для программирования этого?Имейте в виду, я впервые программист, который делает это для класса, и я только что выучил операторы if-else.

Код:

# dictionary assigns the cost for each service
services = {'Oil change': 35,
            'Tire rotation': 19,
            'Car wash': 7,
            'Car wax': 12}
# auto_serv is the user's desired car service
auto_serv = input('Desired auto service:')
# The following four 'if' statements are to allow the user multiple variances in spelling of desired auto service
if auto_serv == 'Tirertation' or 'tirerotation':

    auto_serv = 'Tire rotation'
elif auto_serv == 'Oilchange' or 'oilchange':

    auto_serv = 'Oil change'
elif auto_serv == 'Carwash' or 'carwash':

    auto_serv = 'Car wash'
elif auto_serv == 'Carwax' or 'carwax':

    auto_serv = 'Car wax'

# the if-else statements are to give a result for each service the user requests
if auto_serv == 'Tire rotation':

    print('You entered:', auto_serv)

    print('Cost of %s: $%d' % (auto_serv, services[auto_serv]))
elif auto_serv == 'Oil change':

    print('You entered:', auto_serv)

    print('Cost of %s: $%d' % (auto_serv, services[auto_serv]))
# ...there are more elif statements that follow this code with the other auto services

1 Ответ

0 голосов
/ 01 октября 2018

Порядок операций в Python будет обрабатывать == перед or, а 'tirerotation' всегда равен True.

Вместо этого используйте оператор in, например: *

if auto_serv in ['Tirertation', 'tirerotation']:
...