【问题标题】:Returning variables and while True loop返回变量和 while True 循环
【发布时间】:2014-03-01 17:19:20
【问题描述】:

我想在一个要求用户输入 2 个数字的函数中执行代码,然后返回这两个数字。然后在第二个函数中,我想“导入”这两个值并将它们打印给用户,并将它们添加到数组中。但是,这似乎只在 while True 循环中的每 2 个循环之后才有效(如果您执行代码,您会明白我的意思)。

def function1():
    var1 = raw_input("Please enter a number")
    var2 = raw_input("Please enter another number")
    return var1,var2

def function2():
    var1,var2 = function1()
    print 1,2

while True:
    function1()
    function2()

感谢您的帮助”

【问题讨论】:

  • 您在每个循环中调用了两次function1:一次来自循环本身,一次来自function2...这有帮助吗?
  • 此外,您的代码不依赖于var1var2 - 它总是打印1 2
  • 而且您永远不会将它们添加到任何列表中

标签: python function return return-value


【解决方案1】:

试试这个:

def function1():
    var1 = raw_input("Please enter a number")
    var2 = raw_input("Please enter another number")
    return var1,var2

def function2():
    var1,var2 = function1()
    print var1,var2

while True:
    function2()

【讨论】:

    【解决方案2】:

    你只需要在你的无限循环中调用function2

    while True:
        function2()
    

    function2 在其主体中调用function1,因此它将管理输入用户。另外,您的function2 定义应该是:

    def function2():
        var1,var2 = function1()
        print var1, var2
    

    【讨论】:

      【解决方案3】:

      当您直接调用function1 时,您会取回这两个变量,但不会对它们做任何事情。

      当您调用function2 时,您将function1 中的两个变量分配给function2 中的本地名称,然后打印两个整数(不是实际变量)并离开函数。

      如果要将它们添加到数组中,则需要这样做:

      array = []
      while True:
          array.extend(function1())
      

      【讨论】:

        【解决方案4】:

        我想你只需要:

        while True:
            function2()
        

        原因是 function2 本身已经调用了 function1 - 你不想每次迭代都调用它两次。

        您还应该检查 function1 打印的值是否正确!

        【讨论】:

          【解决方案5】:

          当您第一次调用 function1 时,该函数会返回您输入的两个数字,但它们不会存储在任何地方。当您随后调用 function2 时,function1 会再次被调用,这使得用户为变量 1 和 2 输入 数字。如果您想导入已经从中获得的数字function1, function2 需要以两个数字作为参数。此外,无论输入是什么,您总是会打印数字 1 和 2,因此您可能希望在 function2 中打印 var1,var2 而不是 1,2。

          此外,您不会将数字添加到数组中。你可能想要这样的东西:

          def function1():
              var1 = raw_input("Please enter a number")
              var2 = raw_input("Please enter another number")
              return var1,var2
          
          def function2(var1, var2):
              print var1,var2
          
          #Make an empty array
          array = []
          
          while True:
              numbers = function1()
              function2(numbers[0], numbers[1])
          
              #Append the two numbers to the array
              array.append(numbers[0])
              array.append(numbers[1])
          
              print "The array now contains: " + ', '.join(array)
          

          【讨论】:

            猜你喜欢
            • 2017-11-21
            • 2020-04-08
            • 1970-01-01
            • 2019-09-06
            • 2020-08-08
            • 2016-10-28
            • 1970-01-01
            • 1970-01-01
            • 2013-11-06
            相关资源
            最近更新 更多