为什么直到我的for循环结束才检查我的while循环? python的新手,所以我知道什么是错的,但不知道如何解决它。我正在从一个json词典中拉出来。我想要的是在周期小于6时输出,但它会拉出所有这些然后检查条件。
i = 1
while (i < 6):
for date in parsed_json['forecast']['simpleforecast']['forecastday']:
if date['period'] == i:
fiveday.append(date['low']['celsius'])
fiveday.append(date['high']['celsius'])
time.sleep(.5)
i = i + 1
答案 0 :(得分:1)
Python不是我的母语&#34;所以忍受我:
i = 1
for date in parsed_json['forecast']['simpleforecast']['forecastday']:
if date['period'] == i:
fiveday.append(date['low']['celsius'])
fiveday.append(date['high']['celsius'])
time.sleep(.5)
i = i + 1
if i >= 6:
break
可能有更优雅的解决方案,但我不太了解python。不过应该做这个工作。
答案 1 :(得分:0)
您不需要while
- 循环。只需使用内置函数enumerate
迭代JSON字典:
for i, date in enumerate(parsed_json['forecast']['simpleforecast']['forecastday']):
if date['period'] == i:
fiveday.append(date['low']['celsius'])
fiveday.append(date['high']['celsius'])
time.sleep(.5)
if i >= 6:
break
答案 2 :(得分:0)
在python中,缩进确定范围。在您的代码中,每次i
循环运行时for
都会递增。要使代码正常工作,您所要做的就是将增量器缩进几个级别:
i = 1
while i < 6:
for date in parsed_json['forecast']['simpleforecast']['forecastday']:
if date['period'] == i:
fiveday.append(date['low']['celsius'])
fiveday.append(date['high']['celsius'])
time.sleep(.5)
i += 1
在while
循环运行它之后,程序仍然只会检查 for
条件,但它只会< em> increment 每个循环一次,这可能是问题首先出现的问题。
或者,如果您希望将period
小于6的所有内容存储起来,则可以删除while
循环并更改if
中的支票。语句:
for date in parsed_json['forecast']['simpleforecast']['forecastday']:
if date['period'] < 6:
fiveday.append(date['low']['celsius'])
fiveday.append(date['high']['celsius'])
time.sleep(.5)