python - 如何显示温度最低价差最低的一天
问题描述
作为新程序员解决问题。问题是在 weather.csv 中,您会找到每日天气数据。编写程序读取文件,然后输出温度分布最小的天数(第一列)(第二列最高温度,第三列最低)。
我在这里公开了 weather.csv 文件的列表https://docs.google.com/spreadsheets/d/1fMxCY_CdpdhDjMZZWGzyh-whEvZYxH2XiBfA4AfqZJw/edit#gid=0
我试图对我的列表进行排序,我试图打印 min(day_spread),它返回“TypeError:'int' object is not iterable”。我完全不知道从这里到哪里使用我的代码。谢谢!
编辑:我添加了 tot_spread 并将 day 设为 int。
import csv
with open("weather.csv", 'r') as infile:
reader = csv.reader(infile, delimiter=',')
header = next(reader)
for row in reader:
day = int(row[0])
max_weather = int(row[1])
min_weather = int(row[2])
day_spread = (max_weather - min_weather)
tot_spread = [day, day_spread]
print(min(tot_spread)
解决方案
您可以使用 走这条路线min
,但您仍然需要列出所有日/价差对,然后从该列表中返回最小值。
import csv
spreads = [] # list for all values
with open("weather.csv", 'r') as infile:
reader = csv.reader(infile, delimiter=',')
header = next(reader)
for row in reader:
day = int(row[0])
max_weather = int(row[1])
min_weather = int(row[2])
day_spread = (max_weather - min_weather)
tot_spread = [day, day_spread]
spreads.append(tot_spread) # add the pair to the list
# print the minimum
print(min(spreads, key=lambda x:x[1]))
key=lambda x:x[1]
告诉min
返回基于每对的第二个值的最小值,即点差。
作为替代方案,您可以存储当前最小值,并且对于每次迭代,检查新值是否低于当前值。如果您还不了解lambda
等,这可能更容易理解:
import csv
min_spread = 99999 # some ridiculously high value
min_day = -1 # doesn't really matter what value
with open("weather.csv", 'r') as infile:
reader = csv.reader(infile, delimiter=',')
header = next(reader)
for row in reader:
day = int(row[0])
max_weather = int(row[1])
min_weather = int(row[2])
day_spread = (max_weather - min_weather)
# if the new value is lower than the current minimum,
# take it as the new minimum
if day_spread < min_spread:
min_spread = day_spread
min_day = day
# print the minimum
print(min_day)
推荐阅读
- ruby-on-rails - 从 Faraday 使用端口 3000 调用 localhost
- sap - 在拥有 15 亿多条记录的大表上进行保留的最佳方法是什么?(SAP HANA SP12)
- ruby-on-rails - rspec .to receive(:method_name) 正确用法
- google-bigquery - 如何从大查询表中删除分区列?
- ruby-on-rails - 迁移生态系统的最佳解决方案
- python - DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象
- clang - clang 链接错误:无法找到库 -lclang_rt.builtins-arm.a
- oracle - 如何使用 oracle UTL_FILE 包在客户端文件系统上生成文件
- c# - C# 一个月的最后 3 个工作日
- symfony - symfony 验证器错误名称常量