CS Circles-Python-list-It';自然运动

CS Circles-Python-list-It';自然运动,python,python-3.x,computer-science,Python,Python 3.x,Computer Science,以下是一个我难以解决的问题: 编写一个函数naturalNumbers,该函数接受一个正整数n作为输入,并返回一个由前n个自然数组成的列表[1,2,…] 以下是我目前掌握的代码: def naturalNumbers(x): x = input() myList = [] for i in range (0, x): return myList = myList + [i] print(myList) 我真的很困惑,什么时候应该为函数设置返回。您工作非

以下是一个我难以解决的问题:

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

以下是我目前掌握的代码:

def naturalNumbers(x):
   x = input()
   myList = []
   for i in range (0, x):
      return myList = myList + [i]
      print(myList)
我真的很困惑,什么时候应该为函数设置
返回

您工作非常努力 函数
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
或使用列表理解:


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

您正在混合“主”代码和被要求编写的函数

让您的函数仅用于列表生成函数
naturalNumbers
。 并使用不同的主功能

您可以忽略main方法和if
\uuuuu name\uuuuuu='\uuuuuu main\uuuuu'
这只是为了以良好的状态正确运行

# 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开始

返回是函数的输出。如果没有返回,函数不会将任何内容“返回”到调用它的位置

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

回报永远是你做的最后一件事。返回后,函数退出,该函数中不再有代码运行。为什么要将
x
作为函数参数传递,并使用
input()
中的返回值覆盖该值?虽然下面的答案很好,但您可以使用简单的列表理解来完成任务:
[n代表范围(1,x+1)中的n]
。它看起来比执行“常规”for循环干净得多。@leaf在Python2上我正在执行
类型(范围(1,5))
和获取列表,范围对象是Python3的东西吗?没问题。很高兴提供帮助。在Python中,
range()
函数是独占的。这意味着它将上升到
n
数字,但在那里停止。您需要改为执行
range(0,n+1)
。在Python中
range()
函数是独占的。这意味着它将上升到
n
数字,但在那里停止。您需要改为执行
范围(0,n+1)
def naturalNumbers(n):
   myList = []
   for i in range(0,n):
      myList = myList+[i+1]
   return myList