Причина в том, что вы используете elif
вместо if
. Если вы используете комбинацию if
и elif
, она всегда будет выполняться в этом порядке, и первое пойманное условие захватит все выполнение.
Например:
if name == 'Alice':
print('how old are you?')
age = int(input())
elif name == "Alice" and True:
print("won't be executed")
Для чтобы исправить это, вы можете вложить условия через:
if name == "Alice":
if age == 123:
do_stuff()
, который совпадает с:
if name == "Alice" and age == 123:
do_stuff()
, или вы можете отредактировать дерево условий (если вы хотите продолжить поток кода) вместо if
s и перехватить каждый из случаев индивидуально:
print('Hi there, what is your name')
name = input()
if name == 'Alice':
print('Hello, Alice')
if name != 'Alice':
print('how old are you?')
age = int(input())
if name == "Alice" and age < 12:
print('You are not Alice Kiddo.')
if name == "Alice" and age > 2000:
print('Unlike you, Alice is not an undead, immortal vampire.')
if age > 100:
print(f'You are not Alice, Grannie, but you might be {name}')
if name == "Bob":
print("Hi Bob")