问题描述
这是我无法解决的问题:
编写一个函数naturalNumbers
,该函数将一个正整数n
作为输入,并返回一个由前n个自然数组成的列表[1, 2, ...]
。
这是我到目前为止的代码:
def naturalNumbers(x):
x = input()
myList = []
for i in range (0, x):
return myList = myList + [i]
print(myList)
我真的很困惑,当把return
的功能。
1楼
您正在非常努力地工作,函数range()
返回一个可强制转换为列表的对象,因此您所需要做的就是
def naturalNumbers(x):
return list(range(1,x + 1)) #didnt notice we are in python 3
0不视为自然数
2楼
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
是函数的结尾,应该在循环之外。
3楼
您正在混合“主要”代码和被要求编写的功能。
让您的函数仅用于生成函数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开头
4楼
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中的默认返回值
5楼
试试这个简单的方法:
def naturalNumbers(n):
myList = []
for i in range(0,n):
myList = myList+[i+1]
return myList