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'
,