开关返回语句中的多个指令

时间:2018-07-27 14:22:27

标签: python

我是Python的新手。这是我的问题:

import sys

def main():
        print "option 1) check updates 2) rewrite index 3) ..."
        option = raw_input()
        print "\nthe option: is: " + option
        switch_option(option)

def switch_option (option):
        return {
                1:
#                   print "option is 1",
                   1,
                2: 2

        }.get(option, 0)

if __name__ == '__main__':
        main()

该程序运行正常,但是如果我取消注释<print "option is 1",则会收到错误消息。
我收到此错误:

  

SyntaxError:语法无效。

我想念什么?我尝试添加<,><;>

问题:

  • 如何在return语句中包含诸如print之类的调试语句?
  • 在我的情况下,Python语法是否正在等待某个模板?
  • 退货接受多条指令吗?
  • 打印是否会中断执行流程?

2 个答案:

答案 0 :(得分:1)

我不确定您为什么要在字典中放入打印语句

您可以在退货前打印

def switch_option (option):
    print "option is %r" ‰ option 
    return {
            1: 1,
            2: 2
    }.get(option, 0)

那么您将需要获得结果

o = switch_option(option)

是的,python支持多个返回值

答案 1 :(得分:1)

简短的答案是,您不能以提议的方式在表达式内使用print语句。您必须回答某些语言可以回答的问题,例如“何时对其进行评估”,而Python则不能。

话虽如此,尤其是如果您是Python的新手,但熟悉其他功能语言,则可以创建一个以值作为函数的字典。这是重铸示例的方法:

#!/usr/bin/env python3

def main():
  print("option 1) check updates 2) rewrite index 3) ...")
  option = input().strip()
  print("the option: is: " + option)
  switch_option(option)

def switch_option (option):
  options = {
    '1': option_one,
    '2': lambda: 2
  }
  f = options[option]
  result = f()
  print("the result is: " + str(result))

def option_one():
  print("option is 1")
  return 1

if __name__ == '__main__':
  main()
相关问题