-2

给定以下关于我们太阳系中行星的信息,创建一个字典。(我把输出放在下面,对不起,我是新手,可能毫无意义地发布全文)

半径 - 2,439.7 公里

Distance from the sun - 58 million km

Moons - none

Atmosphere? True

Gas planet? False

金星

Radius - 6,051.8 km

Distance from the sun - 108 million km

Moons - none

Atmosphere? True

Gas planet? False

地球

Radius - 6,371.0 km

Distance from the sun - 150 million km

Moons - Moon

Atmosphere? True

Gas planet? False

火星

Radius - 3,396.2 km

Distance from the sun - 207 million km

Moons - Phobos and Deimos

Atmosphere? True

Gas planet? False

木星

Radius - 69,911 km

Distance from the sun - 483 million km

Moons - Io, Ganymede, Callisto, Europa, Adrastea

Atmosphere? True

Gas planet? True

土星

Radius - 60,268 km

Distance from the sun - 1,400 million km

Moons - Pan, Prometheus, Titan, Phoebe, Rhea

Atmosphere? True

Gas planet? True

天王星

Radius - 25,559 km

Distance from the sun - 3,000 million km

Moons - Miranda, Ariel, Umbriel, Titania, Oberon

Atmosphere? True

Gas planet? True

海王星

Radius - 24,764 km

Distance from the sun - 4,500 million km

Moons - Triton, Nereid, Proteus, Naiad, Thalassa

Atmosphere? True

Gas planet? True

该程序将上述信息存储在单个字典中,然后使用 for 循环打印字典的内容。

样本输出:

与太阳的距离:58

半径:2439.7

气体星球?: 错误的

气氛?: 真的

月亮:[]

木星

与太阳的距离:483

半径:69911

气体星球?: 真的

气氛?: 真的

卫星:['Io'、'Ganymede'、'Callisto'、'Europa'、'Adrastea']

天王星

与太阳的距离:3000

半径:25559

气体星球?: 真的

气氛?: 真的

月亮:['Miranda','Ariel','Umbriel','Titania','Oberon']

火星

与太阳的距离:207

半径:3396.2

气体星球?: 错误的

气氛?: 真的

卫星:['火卫一','火卫二']

地球

与太阳的距离:150

半径:6371.0

气体星球?: 错误的

气氛?: 真的

月亮:['月亮']

金星

与太阳的距离:108

半径:6051.8

气体星球?: 错误的

气氛?: 真的

月亮:[]

土星

与太阳的距离:1400

半径:60268

气体星球?: 真的

气氛?: 真的

月亮:['潘','普罗米修斯','泰坦','菲比','瑞亚']

海王星

与太阳的距离:4500

半径:24764

气体星球?: 真的

气氛?: 真的

卫星:['Triton'、'Nereid'、'Proteus'、'Naiad'、'Thalassa']

所以我想知道如何将输入放入字典然后按照上面给出的输出,我尝试将它保存到字典中,但我认为我做的不对,因为我不断收到语法错误,我非常感谢任何帮助!!!,我已经盯着这个看了几个小时了..

4

1 回答 1

1

好的,除非您被明确告知使用 a Dictionary,否则存储此数据的数据结构是错误的。字典旨在存储内在链接的数据键值对(如 BookTitle:ISBN)

附录:虽然“半径:2439.7”等......是键值对的示例,但在这种情况下字典不适合的原因是所有对都与“元”定义相关联(在这种情况下,所有信息对是单个行星的一部分)。如果这是有道理的。

由于每个行星都有许多与之关联的数据字段,因此您需要定义一个Planet将所有数据封装在一个对象中的类。

例子:

class Planet:  
    def __init__(self, name, radius, distFromSun, moons, atmosphere, isGasPlanet):
        """Planet Constructor"""
        self.name = name
        self.radius = radius
        self.distFromSun = distFromSun
        self.moons = moons
        self.atmosphere = atmosphere
        self.isGasPlanet = isGasPlanet

    def __str__(self):
        """Overwrites the string output of the class (what gets called by print())""" 

        return str.format("{0}\n"
                          "Distance from the sun: {1}\n"
                          "Radius: {2}\n"
                          "Gas Planet: {3}\n"
                          "Atmosphere: {4}\n"
                          "Moons: {5}\n",
                          self.name,
                          self.distFromSun,
                          self.radius,
                          self.isGasPlanet,
                          self.atmosphere,
                          self.moons)

这将允许您定义您喜欢的任何行星并轻松打印。

merc = Planet("Mercury", 2439.7, 58, [], True, False)

print(merc)

会给你。

Mercury
Distance from the sun: 58
Radius: 2439.7
Gas Planet: False
Atmosphere: True
Moons: []

此外,类是可扩展的,允许您在它们的基础上进行构建。例如,您可以实现一种AddMoon()方法,将新月附加到您的行星对象内的“月球阵列”。

于 2013-04-03T12:36:56.433 回答