Python检测JSON响应是否包含对象时break语句不触发如何解决
问题原因分析
- 第一处错误:
print()函数的返回值固定为None,你所有基于print(xxx)返回值的判断逻辑都不生效。你写的第一个if分支判断print(...) is None永远为真,导致后续elif分支永远不会执行,这是break语句无法触发的核心原因。 - 第二处错误:
['id'] in xxx的判断逻辑错误,该写法是判断列表['id']这个整体是否是xxx的元素,而不是判断xxx内的对象是否存在id键。 - 额外问题:循环内反复调用
email.get_list_of_emails()会发起多次重复请求,完全没有必要。
修正后的代码
from tempmail import TempMail import time import pyperclip email = TempMail() email.generate_random_email_address() email_addr = f"{email.login}@{email.domain}" print(email_addr) pyperclip.copy(email_addr) while True: # 先把接口返回结果存到变量,不要和print操作绑定 email_list = email.get_list_of_emails() print(email_list) # 判断邮件列表非空,且列表内第一个元素存在id键(可根据你的需求调整判断逻辑) if email_list and isinstance(email_list, list) and 'id' in email_list[0]: break time.sleep(5)
补充说明
如果你的需求是只要收到邮件(列表非空)就跳出循环,判断逻辑可以简化为if email_list:即可。
内容的提问来源于stack exchange,提问作者critiqalfish
相关产品推荐
相关产品推荐

