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