Python 为什么我的while循环一直运行到最后才被检查?
为什么直到for循环结束时才检查while循环?python新手,所以我知道哪里出了问题,但不知道如何修复它。我是从json字典中提取的。我想要的是在周期小于6时输出,但它会提取所有周期,然后检查条件Python 为什么我的while循环一直运行到最后才被检查?,python,json,loops,Python,Json,Loops,为什么直到for循环结束时才检查while循环?python新手,所以我知道哪里出了问题,但不知道如何修复它。我是从json字典中提取的。我想要的是在周期小于6时输出,但它会提取所有周期,然后检查条件 i = 1 while (i < 6): for date in parsed_json['forecast']['simpleforecast']['forecastday']: if date['period'] == i: fi
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
i=1
而(i<6):
对于解析的_json['forecast']['simpleforecast']['forecastday']中的日期:
如果日期['period']==i:
附加日期(日期['low']['celsius'])
附加(日期['high']['celsius'])
时间。睡眠(.5)
i=i+1
Python不是我的“母语”,请耐心听我说:
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。但是,您应该完成这项工作。您不需要
while
-loop。只需使用内置函数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
在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
这是一个循环中的一个循环。当然,它不会退出内部循环。如果
i>=6
To不使用while,则可以中断内部循环-就像您所说的:首先for将完全运行,直到再次迭代。在for循环内部检查i,如果满足条件,则将其断开。i的增量可以写成i+=1
,并且似乎不在正确的循环级别上。你所说的条件是什么意思?我如何写它来检查循环的外部,或者写它使它在我不到6岁时只通过内部循环?我的头爆炸了。
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)