Python:If/Elif只问两个问题,而不是在回答之后继续问?

2024-10-02 00:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我从字典里问用户一组问题:

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? "
}

这些键与另一个字典相关联:

^{pr2}$

我通过为每个问题设置一个“简单”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']  

Tags: ofnoinputrawwithitdoare
1条回答
网友
1楼 · 发布于 2024-10-02 00:25:00

出现此问题是因为在每个if..elif情况下都会得到一个新的输入字符串。相反,您需要将输入分配给一个变量,并使用if..elif进行检查。在

问两次问题:

if raw_input(questions["strong"]).lower() == "yes":
    beverage["strong"] = ingredients["strong"]
elif raw_input(questions["strong"]).lower() == "no":
    return False

问一次问题:

^{pr2}$

相关问题 更多 >

    热门问题