如何将列表中的元素传递给for循环中的函数

时间:2016-10-04 16:52:20

标签: python for-loop

我正试图打印每个城市的压力。

不是使用列表中的城市,而是回归一个名为“城市”的城市的压力。

超级新到这个并没有找到这个具体的答案。感谢!!!!!!

import pyowm
owm = pyowm.OWM('eb68e3b0c908251771e67882d7a8ddff')

city = ["tokyo", "jakarta"]

for i in city:
    city = owm.weather_at_place('city')
    city = city.get_weather()
    print (city.get_pressure()['press'])

2 个答案:

答案 0 :(得分:2)

使用更好的名字,事情会变得更清晰:

import pyowm
owm = pyowm.OWM('eb68e3b0c908251771e67882d7a8ddff')

cities = ["tokyo", "jakarta"]

for city in cities:
    weather = owm.weather_at_place(city).get_weather()
    print (weather.get_pressure()['press'])

变更和理由:

  • 将城市列表从city更改为cities。名为city的变量应包含城市。不是他们的清单。
  • for循环使用的迭代变量更改为city,因为这是变量中的内容:一个城市的名称。 i是一个很糟糕的名字,因为你希望它是一个索引,而不是项目,并且Python for循环不起作用。看看for city in cities表达实际发生的情况有多好?
  • 将呼叫更改为weather_at_place()以使用变量 city(列表中的城市)而不是常量字符串"city",因为后者会搜索名为City的城市
  • 将调用链接到weather_at_place()get_weather(),而不是使用city来保存前者返回的值,因为从不使用中间值。同时也消除了将变量city用于非城市的其他内容。
  • 将包含get_weather()结果的变量从weather更改为city,因为它包含天气,而不是城市。

当阅读代码的人是编写代码的人时,可读性很重要,甚至(特别是!)。如果您现在感到困惑第一次编写代码,想象一下当您尝试在六个月内修改代码时会有多么困惑!

答案 1 :(得分:0)

汉利,我希望你不要介意我改写你的代码。

import pyowm
owm = pyowm.OWM('eb68e3b0c908251771e67882d7a8ddff')

cities = ["tokyo", "jakarta"]

for city in cities:
    city_weather = owm.weather_at_place(city)
    weather = city_weather.get_weather()
    print(weather.get_pressure()['press'])