Python中for循环是否应置于if语句之前?
关于Python中for循环与if语句顺序的解惑
嘿,作为刚入门Python的新手,能主动练习函数和循环已经很棒啦!咱们先从你的代码和疑问一步步拆解。
首先提个小细节:你定义了L()函数,但没调用它,而且函数里的List和TauS是局部变量,外面直接print会报错哦。后面我会给你修正后的代码参考。
回到你的核心问题:for循环是否必须放在if语句之前?
其实没有绝对的规则,完全看你要实现的逻辑:
- 如果是要遍历一系列元素,对每个元素做条件判断后执行操作,那肯定是
for在外,if在内——比如你找12的因数的部分,这个写法是完全正确的:
毕竟你得逐个检查每个i是不是12的因数嘛。for i in range(1,a+1): if a % i == 0: List.append(i) - 如果是要先满足某个条件,才执行循环,那就是
if在外,for在内。比如只有当a是正数时才去遍历:if a > 0: for i in range(1,a+1): # 循环操作
再看你当前的代码逻辑,你应该是想先找出12的所有因数,再判断12能不能被因数的个数整除,如果可以就把12加入TauS?但你现在把判断a % len(List) == 0放在了循环内部,每次添加一个因数后就立刻检查,这会导致结果不符合预期。比如第一次循环i=1,添加后List长度是1,12%1=0,会把12加进TauS;第二次i=2,添加后长度是2,12%2=0,又加一次……最后TauS会有好多个12,这肯定不是你想要的。
所以正确的做法是先完成整个因数收集的循环,再做判断,修正后的代码如下:
def L(): List = [] TauS = [] a = 12 # 先遍历所有数,收集完所有因数 for i in range(1,a+1): if a % i == 0: List.append(i) # 循环结束后,再判断是否满足条件 if a % len(List) == 0: TauS.append(a) return List, TauS # 调用函数,拿到结果再打印 factors, tau_list = L() print(factors) print(tau_list)
运行后factors会是[1, 2, 3, 4, 6, 12],tau_list是[12],这才符合正常的逻辑。
最后再强调下:for和if的顺序没有对错,只有是否匹配你的需求。写代码前先想清楚你的逻辑步骤,再决定语句的嵌套顺序就好啦,慢慢来,你已经在进步的路上啦!
内容的提问来源于stack exchange,提问作者Stockfish
相关产品推荐
相关产品推荐

