首页 > 解决方案 > 为什么附加到 python 列表将其类型设置为无

问题描述

我查看了 Stack Exchange 的其余部分,发现了类似的问题,但与我的不同,并且没有帮助。

我的代码如下:

class star:
    def __init__(self):
        # irrelevant other variables
        self.planets = []

    def genPlanets(self):
        self.planets.append(random.uniform(self.frostLine*0.98, self.frostLine*1.02))
        print ("There is a planet at " + str(self.planets[0]) + " AU away from the star.")

这部分代码向控制台输出以下内容:

[]

在距恒星 2.916687900748318 AU 处有一颗行星。

但是,在代码的下一部分:

def genPlanets:
    # irrelevant, working code.

    planetSort = planets.sort()
    for p in planetSort:
        file.write("There is a planet at " + str(p) + " AU away from the star.")

它输出:

回溯(最近一次通话最后):

文件“C:\Users\Dominic\Documents\Coding\The Galaxy Maker\MAin.py”,第 145 行,在

Star.outerHabitable, Star.innerPlanetary, Star.outerPlanetary, Star.frostLine, Star.planets)

文件“C:\Users\Dominic\Documents\Coding\The Galaxy Maker\MAin.py”,第 125 行,在 writeData

对于行星排序中的 p:

TypeError:“NoneType”对象不可迭代

我不明白这是怎么发生的,我不明白为什么 append 函数会返回 None 类型!请帮忙!

标签: python-3.xfor-loopiteratorappendtypeerror

解决方案


尝试这个:

def genPlanets:
    # irrelevant, working code.

    planets.sort()
    for p in planets:
        file.write("There is a planet at " + str(p) + " AU away from the star.")

.sort() 方法转换您应用它的对象,而不是返回排序列表。


推荐阅读