Python:If / Elif会问一个问题两次而不是在回答之后继续吗?

查尔斯·沃森

我向用户询问字典中的一组问题:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个对象在Python中创建两次

来自分类Dev

如果使用子进程,Python会两次打开文件.Popen用于运行另一个脚本

来自分类Dev

Python,Apscheduler问题-作业运行两次,而不是一次

来自分类Dev

bash等待第一个python文件启动,然后继续

来自分类Dev

在python'elif'中可以有一个对象(例如一个列表)而不是一个测试表达式吗?

来自分类Dev

如何找到一个在列表中出现两次的数字并用python打印出来?

来自分类Dev

为什么python会读取我的文件两次?

来自分类Dev

这是一个关于python中列表的问题。我们可以连接两个列表吗

来自分类Dev

为什么python在`pass`之后继续评估代码?

来自分类Dev

Python:如何在“ Return True”之后继续覆盖代码

来自分类Dev

两次导入一个模块会怎样?

来自分类Dev

坚持一个简单的python程序“elif”

来自分类Dev

Python 说 elif 语句是一个语法错误

来自分类Dev

使python代码在异常后继续

来自分类Dev

一个分支而不是两个分支的 Python 条件表达式

来自分类Dev

python - 在异常之后继续前进并在之后提出它

来自分类Dev

Python:总有一次只能初始化一个变量吗?

来自分类Dev

JS:我有一个功能可以激活两次而不是一次?

来自分类Dev

JS:我有一个功能可以激活两次而不是一次?

来自分类Dev

python模块是否被导入两次?

来自分类Dev

Python:如何两次使用DictReader?

来自分类Dev

Python脚本打印线两次

来自分类Dev

python两次引用的单行输入

来自分类Dev

在Python中使用两次替换

来自分类Dev

Python,两次写入文件

来自分类Dev

Python代码运行两次

来自分类Dev

python打印两次的for循环

来自分类Dev

Python dict是一个对象吗?

来自分类Dev

Python赋予另一个名称而不是`* args`的可读性是一个好习惯吗?

Related 相关文章

  1. 1

    一个对象在Python中创建两次

  2. 2

    如果使用子进程,Python会两次打开文件.Popen用于运行另一个脚本

  3. 3

    Python,Apscheduler问题-作业运行两次,而不是一次

  4. 4

    bash等待第一个python文件启动,然后继续

  5. 5

    在python'elif'中可以有一个对象(例如一个列表)而不是一个测试表达式吗?

  6. 6

    如何找到一个在列表中出现两次的数字并用python打印出来?

  7. 7

    为什么python会读取我的文件两次?

  8. 8

    这是一个关于python中列表的问题。我们可以连接两个列表吗

  9. 9

    为什么python在`pass`之后继续评估代码?

  10. 10

    Python:如何在“ Return True”之后继续覆盖代码

  11. 11

    两次导入一个模块会怎样?

  12. 12

    坚持一个简单的python程序“elif”

  13. 13

    Python 说 elif 语句是一个语法错误

  14. 14

    使python代码在异常后继续

  15. 15

    一个分支而不是两个分支的 Python 条件表达式

  16. 16

    python - 在异常之后继续前进并在之后提出它

  17. 17

    Python:总有一次只能初始化一个变量吗?

  18. 18

    JS:我有一个功能可以激活两次而不是一次?

  19. 19

    JS:我有一个功能可以激活两次而不是一次?

  20. 20

    python模块是否被导入两次?

  21. 21

    Python:如何两次使用DictReader?

  22. 22

    Python脚本打印线两次

  23. 23

    python两次引用的单行输入

  24. 24

    在Python中使用两次替换

  25. 25

    Python,两次写入文件

  26. 26

    Python代码运行两次

  27. 27

    python打印两次的for循环

  28. 28

    Python dict是一个对象吗?

  29. 29

    Python赋予另一个名称而不是`* args`的可读性是一个好习惯吗?

热门标签

归档