猿问

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

我想要做的是根据用户放置程序的数字打开文件夹、浏览器或由字典关闭,其中每个数字都有一个功能。问题是它在所有情况下都返回 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()


aluckdog
浏览 192回答 3
3回答

守候你守候我

您忘记从 中返回值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()

皈依舞

您必须从switch_demo 另外返回一个函数,更改print(switch_demo(var)))为print(switch_demo(var)()). 可以这样重写以更有意义:var = "something"function = switch_demo(var)print(function())如果这是您想要的,这实际上会调用function并打印出它返回的任何内容。

不负相思意

字典值作为要调用的函数:切换器[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")
随时随地看视频慕课网APP

相关分类

Python
我要回答