我是Python的新手。
这是我编写的用于打印x^3
def f(n):
for x in range(n):
yield x**3
for x in f(5):
print x
哪个打印正确答案。
def f(n):
return [x**3 for x in range(n)]
for x in f(5):
print x
也打印正确答案
def f(n):
for x in range(n):
return x**3
for x in f(5):
print x
我得到了
TypeError: 'int' object is not iterable
第三段代码出了什么问题。
答案 0 :(得分:3)
volatile int myCount = -1;
Task BackgroundTask;
//rest of the code
使用def f(n):
for x in range(n):
yield x**3
for x in f(5):
print x
将返回一个int,它不可迭代,因此不能与return x**3
一起使用
答案 1 :(得分:1)
您为函数f(n)编写的第三个代码:
实际上返回一个整数。
错误建议不可迭代。
测试它的一个简单方法是打开python shell
并复制您的代码
def f(n):
for x in range(n):
return x**3
f(5)
输出:
0
和0不可迭代。所以错误信息。
使其工作只需更改方法以返回数组或任何可迭代对象。
def f(n):
for x in range(n):
return [x**3]
f(5)
输出:
[0]
答案 2 :(得分:0)
如果我理解你的目标,我认为你在这里遇到一些问题。
(1)当你以你的方式重建某个东西时,没有理由使用循环。
def cube(n):
return n**3
(2)要打印输出,只需打印输出,就不需要循环输出。
print cube(5)
(3)如果要打印多维数据集列表。
for x in xrange(5):
print cube(x)
(4)你可能不想使用收益率,因为它returns a generator object,它看起来不像你想要的那样。
答案 3 :(得分:0)
def f(n):
for x in range(n):
return x**3
此函数返回整数而不是列表
f(5)将等于0 ^ 3(循环将在第一次迭代中退出),因为您可以看到它是一个整数, 因此无法迭代。