【问题标题】:how to return variable in another function如何在另一个函数中返回变量
【发布时间】:2015-12-09 20:04:40
【问题描述】:

已解决!

def provera():

    komanda = input("\n>> ")
    while komanda not in ("1", "2"):
        print("\nUneli ste pogrešnu komandu.\n")
        unos()

如何将 komanda 返回到下一个函数?

def unos():

    provera()

    while komanda in ("1", "2"):
        if komanda == "1":
            unosNam()
        if komanda == "2":
            unosKat()

我在函数返回方面遇到了非常糟糕的问题,如果有人可以为我提供一些关于 python 函数的很好的解释

【问题讨论】:

  • 请再次解释你想要什么。那句话“将komanda返回到下一个函数”......我不明白你的意思。
  • 您是在问“我如何编写带参数的函数?”?看看4.6 Defining Functions
  • 它说我 komanda 没有定义,我必须在函数 unos() 中返回

标签: python function return


【解决方案1】:

你不应该循环调用函数。只需将komanda返回给unos中的调用者即可:

def provera():
    while True:
        komanda = input("\n>> ")
        if komanda in ("1", "2"):
            break
        print("\nUneli ste pogrešnu komandu.\n")
    return komanda

def unos():
    while True:
        komanda = provera()
        if komanda == "1":
            unosNam()
        elif komanda == "2":
            unosKat()
        else:
            break

【讨论】:

    【解决方案2】:

    首先,清楚地解释您的要求。 很难理解。

    其次,您的代码将进入无限循环。 在provera() 中,您正在调用unos()function,在unos() 中,您正在调用provera() ...您将永远不会结束。

    你必须解释你想要什么。

    无论如何,我猜你想为你的函数 unos() 提供一个参数:

    def unos(komanda):
    
    # provera()  --> Remove this?
    
    while komanda in ("1", "2"):
        if komanda == "1":
            unosNam()
        if komanda == "2":
            unosKat()
    

    然后使用参数unos(komanda) 调用您的函数。 这些都不起作用,但你必须重写你的程序。

    【讨论】:

      【解决方案3】:

      我对此不太擅长,但在我看来komanda 是一个局部变量。

      你可以尝试让 komanda 成为一个全局变量,像这样

      komanda = input("\n>> ")
      
      def provera(x):
          while komanda not in ("1", "2"):
              print("\nUneli ste pogrešnu komandu.\n")
              unos()
      
      def unos():
      
          provera()
      
          while komanda in ("1", "2"):
              if komanda == "1":
                  unosNam()
              if komanda == "2":
                  unosKat()
      

      或者您可以尝试使用ifelif 来完成provera() 中的所有操作

      if komanda == "1" or komanda == "2"
      unosNam()
      else:
      print("\nUneli ste pogrešnu komandu.\n")
      

      【讨论】:

      • 这可以帮助我,但是这两个功能只是程序的一小部分
      猜你喜欢
      • 2015-10-16
      • 2021-05-13
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      相关资源
      最近更新 更多