我想在一组数据中找到最高温度,并将输出打印为“最热温度是y中的x”,其中x和y分别是温度和城市。我有这样的代码:
data = [['Sheffield', '41.2', '35.5', '41.1'],
['Lancaster', '31.3', '40.2', '37.9'],
['Southampton', '34.8', '33.9', '32',],
['Manchester', '41.9', '41.5', '44.2'],
['Bristol', '42.1', '37.1', '42.2']]
hot = []
for row in data:
for item in row:
if item == max(row[1:]):
hot.append(item)
if max(hot) in row:
print "The hottest temperature was {0} in {1}.".format(max(hot),row[0])
产生的产出:
The hottest temperature was 41.2 in Sheffield.
The hottest temperature was 44.2 in Manchester.
现在我对输出感到困惑。我只想打印一行输出,应该是“曼彻斯特最热的温度是44.2”,因为44.2是数据中的最高温度。为什么“谢菲尔德最热的温度是41.2度”也是印刷出来的?我哪里弄错的?你知道吗
检查每行的
hot
的最大值是否在row
中,而不是在处理完所有行后检查一次。你知道吗试试这个:
顺便说一句,你把所有的温度都存储为字符串,而不是浮点数。如果温度分布更广,你可能会得到一个奇怪的结果(例如
'5' > '35.3'
是真的)。你知道吗您在迭代时正在构建列表,
max
正在对列表进行操作。当你到了谢菲尔德,这是迄今为止你见过的最热的,所以它会打印出来。但它不知道曼彻斯特更热,因为它还没有看到。你知道吗解决这个问题的最快方法是做两个循环:一个是建立列表,另一个是查找最热门的。你知道吗
(曼彻斯特44.2?在你的梦里。)
尝试上面的一个,这应该像你预期的工作。。。你知道吗
相关问题 更多 >
编程相关推荐