我向用户询问字典中的一组问题:
questions = {
"strong": "Do ye like yer drinks strong? ",
"salty": "Do ye like it with a salty tang? ",
"bitter": "Are ye a lubber who likes it bitter? ",
"sweet": "Would ye like a bit of sweetness with yer poison? ",
"fruity": "Are ye one for a fruity finish? "
}
这些键与另一个字典相关联:
ingredients = {
"strong": ["glug of rum", "slug of whiskey", "splash of gin"],
"salty": ["olive on a stick", "salt-dusted rim", "rasher of bacon"],
"bitter": ["shake of bitters", "splash of tonic", "twist of lemon peel"],
"sweet": ["sugar cube", "spoonful of honey", "splash of cola"],
"fruity": ["slice of orange", "dash of cassis", "cherry on top"]
}
然后我通过为每个问题设置“简单” if / elif来问他们问题,并将他们的答案分配给新词典:
beverage = {}
def drink():
"""Find out user preferences and assign to new dictionary"""
if raw_input(questions["strong"]).lower() == "yes":
beverage["strong"] = ingredients["strong"]
elif raw_input(questions["strong"]).lower() == "no":
return False
if raw_input(questions["salty"]).lower() == "yes":
beverage["salty"] = ingredients["salty"]
elif raw_input(questions["salty"]).lower() == "no":
return False
...
drink()
最后打印饮料:
print beverage
如果用户说“是”,则一切正常。
但是,如果用户回答“否”,则会再次询问第一个问题(大概是由于我使用raw_input()的if / elif结构),然后跳过所有其他问题以完成脚本。
我如何组织它,以便如果用户对第一个问题说“否”,然后又问下一个问题,而不是每个问题两次?
打印:
Do ye like yer drinks strong? yes
Do ye like it with a salty tang? no
Do ye like it with a salty tang? yes
Are ye a lubber who likes it bitter? no
Are ye a lubber who likes it bitter? yes
Would ye like a bit of sweetness with yer poison? no
Would ye like a bit of sweetness with yer poison? yes
Are ye one for a fruity finish? no
Are ye one for a fruity finish? yes
Yer cocktail is a made of a
['glug of rum']
发生此问题的原因是,在每种if..elif
情况下,您都会获得一个新的输入字符串。相反,您需要将输入分配给变量,然后使用进行检查if..elif
。
提出问题两次:
if raw_input(questions["strong"]).lower() == "yes":
beverage["strong"] = ingredients["strong"]
elif raw_input(questions["strong"]).lower() == "no":
return False
提出问题一次:
answer = raw_input(questions["strong"]).lower()
if answer == "yes":
beverage["strong"] = ingredients["strong"]
elif answer == "no":
return False
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句