Python文件扩展名判断:for循环下如何仅在无匹配时打印一次“No”
处理文件扩展名匹配的问题解决方案
方法1:使用Python特有的for-else结构
这是最贴合需求的Pythonic写法——当for循环**没有被break中断(即遍历完所有元素都没找到匹配)**时,else块的代码会执行一次。
修改后的代码:
extensions = ['txt', 'jpg', 'gif', 'html'] fileName = input("Enter the name of the file: ") newList = fileName.split(".") print(newList) for i in extensions: if newList[1] == i: print("Yes") break else: # 仅当循环正常结束(未触发break)时执行 print("No")
方法2:用标志变量记录匹配状态
如果觉得for-else不好理解,可以用一个布尔变量跟踪是否找到匹配项,循环结束后再判断输出。
代码示例:
extensions = ['txt', 'jpg', 'gif', 'html'] fileName = input("Enter the name of the file: ") newList = fileName.split(".") print(newList) is_matched = False for i in extensions: if newList[1] == i: print("Yes") is_matched = True break # 循环结束后检查状态,未匹配则打印一次No if not is_matched: print("No")
额外优化:处理无扩展名的异常情况
原代码存在隐患:如果用户输入的文件名不含.(比如note),newList只有一个元素,访问newList[1]会报错。可以添加判断处理这种场景:
extensions = ['txt', 'jpg', 'gif', 'html'] fileName = input("Enter the name of the file: ") newList = fileName.split(".") print(newList) if len(newList) < 2: print("文件名无效(无扩展名)") else: for i in extensions: if newList[1] == i: print("Yes") break else: print("No")
内容的提问来源于stack exchange,提问作者nini
相关产品推荐
相关产品推荐

