我不希望它打印'当我输入汤姆或姐妹时,你最喜欢的食物是什么?我把它们都放在一个if语句中,但它会保留打印“你最喜欢的食物是什么”
def question(person_name, favourite_food):
return(person_name + ' favourite food is ' + favourite_food)
while True:
q1 = str(input("Please enter your name:").title())
if q1 == 'quit':
break
if q1 == 'Tom':
print("My creator favourite food is fried chicken")
if q1 == 'Sister':
print("Her favorite food is chicken too")
q2 =input("Please enter you favourite food:")
if q2 == 'quit':
break
if 'Tom' or 'Sister' in q1:
questions = question(q1)
print(questions)
questions = question(q1, q2)
print(questions)
答案 0 :(得分:0)
你的代码中有一个无限循环,所以它继续执行。如果您想在用户输入“Tom”或“Sister”时退出。
你应该使用: -
if q1 == "Tom" or q1 == "Sister":
break;
或者您可以将这些放入列表中并使用“in”运算符来完成任务;像这样 -
dont_ask_list = ["Tom", "Sister"]
if q1 in dont_ask_list:
break;
答案 1 :(得分:0)
当名称条目被转换为标题大小写时,退出将变为Quit,您需要对其进行测试。
添加了elif行,如果名称不正确则继续。
在喜欢的食物输入之后测试q1似乎是多余的,因为它已经在名字输入后进行了测试。
def question(person_name, favourite_food):
return(person_name + ' favourite food is ' + favourite_food)
while True:
q1 = input("Please enter your name:").title()
if q1 == 'Quit':
break
elif q1 == 'Tom':
print("My creator favourite food is fried chicken")
elif q1 == 'Sister':
print("Her favorite food is chicken too")
else:
# Show help and then continue the loop from the while statement.
print('Choose from Quit, Tom or Sister.')
continue
q2 = input("Please enter you favourite food:")
if q2 == 'Quit':
break
# Already tested q1 above.
#~ if 'Tom' or 'Sister' in q1:
questions = question(q1, q2)
print(questions)