为了账号安全,请及时绑定邮箱和手机立即绑定

使用字典调用方法时出现此错误(Python)

使用字典调用方法时出现此错误(Python)

aluckdog 2022-01-18 13:35:03
我想要做的是根据用户放置程序的数字打开文件夹、浏览器或由字典关闭,其中每个数字都有一个功能。问题是它在所有情况下都返回 none 而不是 return 或函数。输入 0 时应关闭程序。输入 1 时,应打开 windows 7 的默认 .mp3。输入 2 时,您应该只打开默认音乐文件夹。输入 3 时,只需在屏幕上输入“三”。最后通过输入 666 使用我输入的 URL 打开 google chrome。如果输入另一个号码,应留下“无效号码” import webbrowser import subprocess import sys opened = True   def  one():      print("Opening explorer.exe")      #subprocess.Popen(r'explorer /select,"C:\Users\reciclo"')      subprocess.call("explorer C:\\Users\\Public\\Music\\Sample       Music\Kalimba.mp3", shell=True)      return "opened"   def zero():      print("Exit the program")      opened = False      return "Exit"   def two():      subprocess.call("explorer C:\\Users\\Public\\Music\\Sample Music",       shell=True)      return "two"  def three():      return "three"  def demon():      demon_url = 'https://piv.pivpiv.dk/'      chrome_path = 'C:/Program Files       (x86)/Google/Chrome/Application/chrome.exe %s'      webbrowser.get(chrome_path).open(demon_url)      return "invoked"  def switch_demo(var):  switcher = {            0: zero,            1: one,            2: two,            3: three,           666: demon,  }   var = switcher.get(var, "Invalid num")   while opened: if opened == True:  var = int(input("enter a number between 1 and 9999999999 "))  print(switch_demo(var))) elif opened== False:  print("Goout")  sys.exit()
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您忘记从 中返回值switch_demo(),请检查以下代码:


 def switch_demo(var):


    switcher = {

            0: zero,

            1: one,

            2: two,

            3: three,


           666: demon,


    }

    return switcher.get(var, "Invalid num")



while opened:

    if opened == True:

        var = int(input("enter a number between 1 and 9999999999 "))

        print(switch_demo(var)))


    elif opened== False:


print("Goout")

sys.exit()


查看完整回答
反对 回复 2022-01-18
?
皈依舞

TA贡献1851条经验 获得超3个赞

您必须从switch_demo 另外返回一个函数,更改print(switch_demo(var)))为print(switch_demo(var)()). 可以这样重写以更有意义:


var = "something"

function = switch_demo(var)

print(function())

如果这是您想要的,这实际上会调用function并打印出它返回的任何内容。


查看完整回答
反对 回复 2022-01-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

字典值作为要调用的函数:


切换器[0] ()


def switch_demo(var):

    switcher = {

        0: zero,

        1: one,

        2: two,

        3: three,


        666: demon,

    }

    #var = switcher.get(var, "Invalid num")

    switcher[int(var)]() # exec function

-


def switch_demo(var):

    switcher = {

        0: zero,

        1: one,

        2: two,

        3: three,


        666: demon,

    }

    #var = switcher.get(var, "Invalid num")

    return (switcher[int(var)]())


while opened:


    if opened == True:

        var = int(input("enter a number between 1 and 9999999999 "))

        print (switch_demo(var))


    elif opened == False:

        print("Goout")


查看完整回答
反对 回复 2022-01-18
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信