【问题标题】:How to get multiple values from "return" as in "print"? [duplicate]如何从“返回”中获取多个值,如“打印”? [复制]
【发布时间】:2019-03-28 00:18:06
【问题描述】:

当我运行下面的代码时,我只得到第一个结果。如果我用print (a,d) 替换return (a,d),我会得到完整的结果集。 (我知道运行print (a,d) 不会将输出保存在任何地方。)

我需要更改哪些内容才能获得完整的输出,而不仅仅是第一个结果?

nums = [(str(i)) for i in range(100,106)]

def foo(aa):
    for a in nums:
        for b in a :
            c= sum(int(b)**2 for b in a)
            d=''.join(sorted(a,reverse=True))
            if (c>5):
                return(a,d) 


output = foo(nums)
print(output)

更新——我期待以下输出:

103 310
103 310
103 310
104 410
104 410
104 410
105 510
105 510
105 510

return(a,d) 只给了我:

103 310

【问题讨论】:

  • return (a, d) 返回一个包含两个值的元组。它肯定会捕获这两个值。但是print(output) 不会产生与print(a, d) 相同的输出
  • repl.it/@codeguru/VillainousUniqueServers 据我所知,这会打印“完整的结果集”。如果你运行上面链接中的代码,你会得到('103', '310') 的输出,这在我看来是两个结果,而不仅仅是第一个。
  • 当提问者返回多个值时,问题文本表明他们想要返回更多;如果returnprint 替换,他们希望返回将打印的每个值。这需要“使用列表/生成器”欺骗,而不是元组欺骗。

标签: python python-3.x printing return


【解决方案1】:

你来了

nums = [(str(i)) for i in range(100,106)]

def foo(aa):
    for a in nums:
        for b in a :
            c= sum(int(b)**2 for b in a)
            d=''.join(sorted(a,reverse=True))
            if (c>5):
                return(a,d)


output , output2 = foo(nums)
print(output, output2)

编辑

创建一个列表并插入元组

nums = [(str(i)) for i in range(100,106)]

def foo(aa):
    list_of_numbs = list() # create a list
    for a in nums:
        for b in a :
            c= sum(int(b)**2 for b in a)
            d=''.join(sorted(a,reverse=True))
            if (c>5):
                list_of_numbs.append((a,d)) #insert your desire tuplet in the list
                #print(a,d)
    return list_of_numbs # return the list

x = foo(nums)
print(x) # print the list
# OR
for i,j in x:     
    print(i,j)

【讨论】:

  • 请用文字解释一下这是如何解决问题的。
  • 这行得通,谢谢!我忽略的主要事情是将 return 置于缩进级别。
  • 如果你只是想正常打印出一个元组而不必写出变量,你可以这样做:value = function() where function can return any a tuple that could be any size, then you print像print(*value)这样的元组,称为元组解包,如果value(a, b, c),那么print(*value)等价于print(a, b, c)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2018-08-28
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多