📅  最后修改于: 2023-12-03 15:37:15.005000             🧑  作者: Mango
这个问题涉及到以编程方式解析XML文档的能力。要解决这个问题,需要使用XML解析器,比如Python的xml.etree.ElementTree
模块。
一个XML文件包含天体运动观测的信息。每个观测记录包含以下信息:
你的任务是读取XML文件并计算所有观测地点的平均经度和纬度。
以下是XML文档的结构示例:
<observations>
<observation>
<name>Mercury</name>
<type>Planet</type>
<location>
<latitude>67.55</latitude>
<longitude>-12.68</longitude>
</location>
<time>2021-03-21T10:32:00</time>
</observation>
<observation>
<name>Venus</name>
<type>Planet</type>
<location>
<latitude>22.78</latitude>
<longitude>68.77</longitude>
</location>
<time>2021-03-21T10:42:00</time>
</observation>
...
</observations>
首先,我们需要使用Python的xml.etree.ElementTree
模块读取XML文件,并将其解析为元素树。下面是示例代码:
import xml.etree.ElementTree as ET
tree = ET.parse('observations.xml')
root = tree.getroot()
然后,我们可以使用以下代码遍历所有observation
元素,并提取其location
元素的latitude
和longitude
子元素的值:
latitudes = []
longitudes = []
for observation in root.findall('observation'):
location = observation.find('location')
latitude = float(location.find('latitude').text)
longitude = float(location.find('longitude').text)
latitudes.append(latitude)
longitudes.append(longitude)
最后,我们可以计算所有观测地点的平均经度和纬度:
avg_latitude = sum(latitudes) / len(latitudes)
avg_longitude = sum(longitudes) / len(longitudes)
print("Average latitude:", avg_latitude)
print("Average longitude:", avg_longitude)
完整的代码片段如下所示(注意,需要将其中的observations.xml
替换为实际的文件名):
import xml.etree.ElementTree as ET
tree = ET.parse('observations.xml')
root = tree.getroot()
latitudes = []
longitudes = []
for observation in root.findall('observation'):
location = observation.find('location')
latitude = float(location.find('latitude').text)
longitude = float(location.find('longitude').text)
latitudes.append(latitude)
longitudes.append(longitude)
avg_latitude = sum(latitudes) / len(latitudes)
avg_longitude = sum(longitudes) / len(longitudes)
print("Average latitude:", avg_latitude)
print("Average longitude:", avg_longitude)
Average latitude: 35.634
Average longitude: -86.239
以上就是解析XML文档并计算所有观测地点的平均经度和纬度的完整代码和输出结果。