Python - Почему мой оператор else игнорируется в этом фрагменте кода?

seats = 3
rating = 12

print('Hello and welcome to Daisy\'s cinema.')

while seats > 0:
    name = input('What is your name?')
    print('Hello',name,'\n')
    print('We are currently showing Mockingjay at out cinema.')
    film = input('What film would you like to watch?')
    if film != 'Mockingjay' or 'mockingjay':
        print('I\'m sorry but we aren\'t showing that film.\n\n')
    else:
        print('This film currently has',seats,'free seats and a certificate of',rating,'\n')
        age = int(input('How old are you?'))
        if age > 15 or age == 15:
            print('You have booked a ticket to see this film.\n\n')
            seats == seats-1
        else:
            print('I\'m sorry but you\'re too young to see this film.\n\n')

print('Mockingjay is now full. Thank you for booking your tickets. \n\n')

Этот кусок кода просто не работает. Когда я добавляю что-то другое, чем Mockingjay или mockingjay для названия фильма, это работает нормально, но если я добавлю это в него, все равно будет сказано, что этот фильм не показывается. Когда следует указать, сколько свободных мест и какой сертификат. Есть идеи? Я использую Python 3.1.

1 ответ

if film != 'Mockingjay' or 'mockingjay':

Должно быть

if film.upper() != 'MOCKINGJAY':

Причина в том, что or 'mockingjay' всегда True, (bool('mockingjay') = True)

С помощью film.upper() помогает гарантировать, что независимо от ввода ввода, например: mocKinjay, MOCKINgjay, mockingjay etc, it will always catch.

If you want to check against 2 different strings then use either:

if film not in ['Mockingjay', 'mockingjay']:
if film != 'mockingjay' and film != 'Mockingjay':

Обратите внимание на and, if we use or here and pass in Mockingjay the statement would still evaluate because film != 'mockingjay',

Другие вопросы по тегам