【问题标题】:How to fix the output for this function?如何修复此功能的输出?
【发布时间】:2021-11-04 04:15:15
【问题描述】:

在指导我更正代码的用户的帮助下,我编写了代码。

我的代码最后也打印出“无”,我不想要它。我应该怎么做才能解决这个问题?

【问题讨论】:

  • "当我尝试将 print 更改为 return 时,输出错误。那么我该如何解决这个问题??"好吧,你认为为什么会发生这种情况?您对return 的工作原理有何理解?当你调用一个函数时,它可以return多少次? returns 之后会发生什么?
  • "我的代码最后也打印出'None',我不想要它。我应该怎么做才能解决这个问题?"好吧,你认为为什么会发生这种情况?您认为哪一行代码会导致这种情况发生?那价值从何而来? (提示:你对 Python 中函数的返回值了解多少?如果你写 x(y()),什么会传递给 x?如果 y 不包含 return 语句,它会返回什么?)
  • 如果您不知道这些问题的所有答案,那么这就是research 的用武之地。如果您知道,那么至少您的一些答案自己的问题应该很明显。

标签: python list tuples


【解决方案1】:

要么做:-

def order(n:int):
  a,s =[1], [1]
  print(s)
  for i in range(0,n-1):
    s = a[i:]
    for k in range(0,len(a)):
      s.append(a[k]+s[k])
    a = s
    print(s)
order(6)

或者做:-

def order(n:int):
  a,s =[1], [1]
  yield(s)
  for i in range(0,n-1):
    s = a[i:]
    for k in range(0,len(a)):
      s.append(a[k]+s[k])
    a = s
    yield(s)
for i in order(6):
    print(i)

您正在尝试print(print()) 打印None

【讨论】:

    【解决方案2】:

    如果要使用return,则将输出s 附加到列表中,并使用for loop 获取元素-

    def order(n:int):
       a,s =[1], [1]
       print(s)
       output = []
       for i in range(0,n-1):
          s = a[i:]
          for k in range(0,len(a)):
             s.append(a[k]+s[k])
          a = s
          output.append(s)
    
       return output
    
    for i in order(n=6):
       print(i)
    

    另见:

    1. Why function returns None
    2. How to return in a for loop

    【讨论】:

    • 嘿,非常感谢你帮助我。但是,有没有办法像你一样将'for i in order(n = 6) 和 print(i) 放在函数 order(n: int) 中?
    • 是的,但是您不能为此使用return 语句。
    • 这里使用return其实是不需要的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 2013-05-19
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2016-01-04
    • 2021-12-13
    相关资源
    最近更新 更多