在 Python 中没有传统的 do while 循环语法。
但是可以通过使用 while True 结合条件判断来实现类似 do while 的效果。
一、语法
python">while True:# 执行某些操作#...if not condition:break
这里先无条件地执行一次循环体中的代码,然后在每次循环结束时检查条件,如果条件不满足则跳出循环。这样就实现了类似 do while 的先执行一次再判断条件的逻辑。
二、Demo
在标准输出打印从1-100,每个数字换一行。
python">idx = 1
while True:print(idx)idx += 1if idx == 101:break;
三、实战
当我们调用类似百度地图POI 行政区划区域检索 接口的时候,接口本身并不提供给我们数据的总页数。这个时候,我们只能通过 do while 的方式请求接口,并判断循环退出条件,以避免死循环。
示例代码:
python">import requests # 接口地址
url = "https://api.map.baidu.com/place/v2/search"
# 此处填写你在控制台-应用管理-创建应用后获取的AK
ak = "你的AK"page_num = 0
params = {"query": "大学","tag": "高等院校","region": "194","output": "json","ak": ak,"page_size": 20,"page_num": page_num
}while True:response = requests.get(url=url, params=params)if response:data = response.json()print(data)if data['status'] == 0:if data['result_type'] == "poi_type":page_num = page_num + 1params['page_num'] = page_numelse:print( '分页结束' )breakelse:print( '请求百度地图接口响应状态非法' )breakelse:print( '请求百度地图接口失败' )break