在Python中的“if”语句之前是循环“for”吗?

时间:2018-04-02 15:19:35

标签: python

我是一名编程语言的新手,并希望从大多数人的推荐开始使用Python(据我所知)。

所以,我正在练习一些功能,以提高我对循环和基本陈述等的理解。虽然我还不是很擅长,但我相信我迟早会有所改进。

这是一个我坚持的例子:

  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)

    print(List)
    print(TauS)

L()

这是我想要的功能,输出是:

[1, 2, 3, 4, 6, 12]
[12]

正如我所料。但是,问题在于我希望“a”是变量而不是常数。如:

    def L():
        List = []
        TauS = []
        for a in range(2,20):
            for i in range(1,a+1):
                if a % i == 0:
                    List.append(i)

        if a % len(List) == 0:
            TauS.append(a)

    print(List)
    print(TauS)                                                         
 L()

失败,因为看起来for循环在第二个if语句(if a % len(list)) == 0: TauS.append(a))之前工作。我还尝试了一个“while”循环而不是“for”循环:

a = 2
while a <= 20:
    for i in range(1,a+1):...(The rest is the same)

如果您的帮助专注于基本想法而不仅仅是提供正确的功能,那将是一个更好的主意。

从现在开始,非常感谢!

问候。

2 个答案:

答案 0 :(得分:0)

由于范围可变而失败。

Python使用indention来表示代码块。因此,如果条件具有相同的缩进,这意味着它们属于相同的代码块并且可以访问在相同或外部代码块中定义的变量,那么这里是循环和第二个。 “列表”&amp;在这种情况下“Taus”。

但是,变量“a”本地化为外部for循环,并且可以在相同或内部for循环中访问,并且不能从外部访问。类似地,变量“i”特定于内部for循环,并且不能在循环块外部访问,甚至不能从外部for循环访问。

希望它有所帮助...

答案 1 :(得分:0)

Python使用indention级别来判断代码是否在函数,循环或条件中,一般情况下,如果有:,则在其下面缩进的所有代码都在该语句中。

代码的问题在于第二个if语句与for循环位于相同的缩进级别,而不是在for循环下面的缩进级别。这意味着它不是在for循环中运行,而是在它之后运行。

因此,要修复代码,只需选择if语句并按crtl + ]这是缩进代码部分的pythons键盘快捷键。

编辑:

我认为您要求的是将所有数字因素从2到19,然后打印数字,其中因子的数量是该数字的一个因素。

def L(): 
    List = []
    TauS = []
    for a in range(2,20):
        l=[]  #this is the list for each individual number

        #if i is a factor of a add it to l
        for i in range(1,a+1):
            if a % i == 0:
                l.append(i)   

        #if length of l is a factor of a add a to TauS
        if a % len(l) == 0:  
            TauS.append(a)
            List.append(l)
    print(List)
    print(TauS)

L()