Python循环与数组功能异常排查请求
代码错误排查与修正
存在的问题
- 循环逻辑错误:
while(input_request == 'y' or 'Y')逻辑永远为真,因为'Y'本身是布尔真值,无论input_request是什么,循环都会一直执行;且初始值input_request = 'true'不符合循环条件预期,应该设为'y'来启动循环。 - 数组判断逻辑错误:
if(input_inquriy == blocked_sites )是将输入的字符串与整个列表直接比较,永远不会匹配,应该用in关键字判断输入是否在黑名单列表中。 - 变量拼写错误:多处变量拼写不一致,比如
input_inquriy(应为input_inquiry)、input_reqest(应为input_request),导致变量引用混乱。 - 逻辑分支错误:原代码中"访问允许"的逻辑放在了
while循环的else分支,这会导致只有循环结束时才会触发,而非输入合法网站时触发。
修正后的代码
import sys # 黑名单网站 blocked_sites = ["youtube.com", 'www.youtube.com', 'www.facebook.com', 'facebook.com'] input_request = 'y' # 初始值设为y,进入循环 while input_request.lower() == 'y': # 用户输入要访问的网站 input_inquiry = input('请输入你想要访问的网站: ') # 网站过滤判断 if input_inquiry in blocked_sites: # 判断是否在黑名单内 print('网站访问被禁止') else: print('网站访问已允许') # 询问是否继续提交请求 input_request = input('是否要继续提交网站访问请求(Y/N): ') if input_request.lower() != 'y': print('祝你下午愉快!') sys.exit()
修正说明
- 修正循环条件:使用
input_request.lower() == 'y'统一判断大小写,确保输入Y或y都能识别,初始值设为'y'保证首次进入循环。 - 修正列表判断:用
in关键字检查输入的网站是否在黑名单列表中,这是判断元素是否在序列中的正确方式。 - 统一变量拼写:修正所有拼写错误的变量名,保证变量引用一致。
- 调整逻辑分支:将"访问允许"的逻辑放在
if的else分支,确保每次输入后都能即时反馈结果;将是否继续的判断统一放在每次请求处理后,无论是否允许访问都能询问用户。
内容的提问来源于stack exchange,提问作者medic117
相关产品推荐
相关产品推荐

