Python列表处理及温度转换

100 阅读3分钟

项目需求:使用Python读取“weather.txt”文件,包含气温数据,并实现以下功能: - 将数据加载并转换为适当的数据类型。 - 计算温度的平均值。 - 将温度从摄氏度转换为华氏度。 - 查找最高和最低温度。 - 显示所有月平均温度。 - 显示每个月的最高和最低温度。 - 退出程序。

  1. 解决方案
  • 1. 从“weather.txt”加载数据到列表中

使用内置函数open()打开文件,并以读模式'r'进行读取。使用for循环逐行读取文件内容,并将每一行作为一个字符串存储在一个列表中。之后,使用split(",")方法将每一行字符串以逗号作为分隔符分割成一个列表,并转换为整数类型。

代码示例:

file = input("输入文件名(.txt):")

lstData = []

if os.path.isfile(file):
    weather = open(file, 'r')
    for line in weather:
        line = line.strip()
        line = line.split(",")

        for i in range(len(line)):
            if(line[i].isdigit()):
                line[i] = int(line[i])
        lstData.append(line)
  • 2. 计算温度的平均值

使用自定义average()函数计算温度的平均值。该函数接受一个列表作为参数,然后计算列表中所有数字的总和,并除以列表的长度得到平均值。

代码示例:

def average(values):
    length = len(values)
    total_sum = 0

    for i in range(length):
        total_sum += sum(values)
    total_sum = sum(values)
    average = float(total_sum / length)

    return average
  • 3. 将温度从摄氏度转换为华氏度

使用自定义F2C()函数将温度从摄氏度转换为华氏度。该函数接受一个温度值作为参数,然后根据公式(F = C * 1.8 + 32)将温度从摄氏度转换为华氏度。

代码示例:

def C2F(c):
    F = c * 1.8 + 32
    return F
  • 4. 查找最高和最低温度

使用自定义find_highest()和find_lowest()函数查找最高和最低温度。这两个函数都接受一个列表作为参数,然后遍历列表并找到最高和最低值。

代码示例:

def find_highest(values):
    highest = values[0]
    for value in values:
        if value > highest:
            highest = value
    return highest


def find_lowest(values):
    lowest = values[0]
    for value in values:
        if value < lowest:
            lowest = value
    return lowest
  • 5. 显示结果

使用for循环遍历lstData列表,并显示每个月的平均温度、最高温度和最低温度。

代码示例:

for data in lstData:
    print("月份:", data[0])
    print("平均温度(摄氏度):", average(data[1:]))
    print("平均温度(华氏度):", average(C2F(data[1:])))
    print("最高温度(摄氏度):", find_highest(data[1:]))
    print("最高温度(华氏度):", find_highest(C2F(data[1:])))
    print("最低温度(摄氏度):", find_lowest(data[1:]))
    print("最低温度(华氏度):", find_lowest(C2F(data[1:])))
  • 6. 主函数

在主函数中,提示用户输入文件名,然后调用load_data()函数加载数据。如果文件不存在,则提示用户输入有效的文件名。之后,调用display_results()函数显示结果。

def main():
    while True:
        file = input("输入文件名(.txt):")

        if os.path.isfile(file):
            lstData = load_data(file)
            display_results(lstData)
            break
        else:
            print("文件不存在,请重新输入:")


if __name__ == "__main__":
    main()