当前位置: 代码迷 >> python >> CS圈子-Python-列表-这是自然运动
  详细解决方案

CS圈子-Python-列表-这是自然运动

热度:72   发布时间:2023-06-13 17:17:11.0

这是我无法解决的问题:

编写一个函数naturalNumbers ,该函数将一个正整数n作为输入,并返回一个由前n个自然数组成的列表[1, 2, ...]

这是我到目前为止的代码:

def naturalNumbers(x):
   x = input()
   myList = []
   for i in range (0, x):
      return myList = myList + [i]
      print(myList)

我真的很困惑,当把return的功能。

您正在非常努力地工作,函数range()返回一个可强制转换为列表的对象,因此您所需要做的就是

def naturalNumbers(x):
    return list(range(1,x + 1)) #didnt notice we are in python 3

0不视为自然数

def naturalNumbers(n):
    n = input()
    myList = []
    for i in range(1, n + 1):
        myList.append(i)
    return myList

或使用列表理解

def naturalNumbers(n):
    n = input()
    myList = [i for i in range(1, n + 1)]
    return myList

return是函数的结尾,应该在循环之外。

您正在混合“主要”代码和被要求编写的功能。

让您的函数仅用于生成函数naturalNumbers的列表。 并使用其他主要功能

您可以忽略main方法,而if __name__ = '__main__'只是为了以正确的形式正确运行。

# this method outputs a list from 0 to x
def naturalNumbers (x):
    l = list[]
    for i in range(0, x+1):
        list.append(i)
    return l

def main():
    x = input()
    # should check if x is an integer (defensive programming)
    print (naturalNumbers(x))

if __name__ = "__main__"
    main()
  • 也取决于使用的定义,自然数可以以0或1开头

Return是函数的输出。 如果没有返回值,该函数不会将任何东西“返还”到调用位置。

def naturalNumbers(n):
  return [x for x in range(0,n)]

print(naturalNumbers(5))

上面的print语句使用自然数的输出,并将输出[0,1,2,3,4]。

假设我们删除了回报,然后将其分配给一个值。

def naturalNumbers(n):
  numbers = [x for x in range(0,n)]
  #assignment rather than return, we could do other operations.

print(naturalNumbers(5))
#returns None

上面的print语句打印'None',因为这是Python中的默认返回值

试试这个简单的方法:

def naturalNumbers(n):
   myList = []
   for i in range(0,n):
      myList = myList+[i+1]
   return myList