Python代码问题排查:满足条件却输出“No”,求错误原因?
问题原因及修正方案
你的代码核心问题出在for...else的逻辑使用上:
Python里的for...else结构,else块只会在循环完整遍历完所有元素、没有被break中断的情况下执行。你的代码中,即便找到了符合条件的x和y并打印,两个for循环还是会继续遍历剩余的数值,直到全部循环结束,最后依然会触发else块输出"No"。
修正后的代码(方案一:用标记变量)
a,b = input().split() found = False for x in range(1,10): for y in range(2,10): if (x*y)*y == int(a+str(x)+b): print(x,y) found = True break # 找到后退出内层循环 if found: break # 找到后退出外层循环 if not found: print("No")
修正后的代码(方案二:优化for...else嵌套)
a,b = input().split() for x in range(1,10): for y in range(2,10): if (x*y)*y == int(a+str(x)+b): print(x,y) break else: # 内层循环没找到,继续下一个x continue # 内层循环找到并break,直接退出外层循环 break else: # 外层循环遍历完所有x都没找到,输出No print("No")
这两种方案都会在找到符合条件的x和y后立即终止循环,避免后续不必要的遍历,同时只有当完全没找到结果时才会输出"No"。
内容的提问来源于stack exchange,提问作者zyus
相关产品推荐
相关产品推荐

