Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回和返回类型错误:';int';对象是不可编辑的_Python_Return_Yield - Fatal编程技术网

Python 返回和返回类型错误:';int';对象是不可编辑的

Python 返回和返回类型错误:';int';对象是不可编辑的,python,return,yield,Python,Return,Yield,我是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 fo

我是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
那么第三段代码有什么问题呢

def f(n):
    for x in range(n):
        yield x**3
for x in f(5):
    print x

使用
返回x**3
将返回一个int,该int不可编辑,因此不能与
一起用于

为函数f(n)编写的第三个代码:

实际上返回一个整数

正如错误所暗示的那样,这是不可接受的

测试这一点的一个简单方法是打开python shell

复制你的代码

def f(n):
    for x in range(n):
        return x**3

f(5)
输出:

0
0是不可数的。因此,错误消息

要使其工作,只需更改返回数组或任何iterable对象的方法

def f(n):
    for x in range(n):
        return [x**3]

f(5)
输出:

[0]

如果我理解你的意思,我想你这里有一些问题

(1) 当你在做某件事情的时候,没有理由使用循环

def cube(n):
    return n**3
(2) 要打印输出,只需打印它,不需要循环

print cube(5)
(3) 如果要打印多维数据集列表

for x in xrange(5):
    print cube(x)
(4) 你可能不想使用收益率,因为它似乎不是你想要的

def f(n):
    for x in range(n):
        return x**3
此函数返回整数而不是列表

f(5)将等于0^3(循环将在第一次迭代中退出),正如您所看到的,它是一个整数,并且
因此无法迭代。

f(5)
为第三个函数返回一个整数
f
返回一次整数(第一次迭代)(提醒调用
返回将立即退出一个方法)其他两个函数返回一个i。迭代器和aⅡ。利斯特纳。这正是我想理解的,这是错误的。f(5)将等于0^3并返回0。是的,Vikash,你是对的,它将仅为0^3,因为在第一次迭代期间,循环将在获得返回后立即退出,我将根据你的反馈更改解决方案,谢谢你指出