python基础贴士

缩进与对齐

对于Python初学者来说,可能会经常看到这样的报错提示:IndentationError: expected an indented block,IndentationError: unexpected indent等等。这都表示缩进错误。
pep8规范要求4个空格为一个缩进级别,而Python里面的分支结构if与循环结构for是没有{}的,判断语句是否在循环或者分支结构内,靠的是缩进与对齐。应该缩进的地方就要缩进,不该缩进的地方不要缩进。因为Python的这种特性,在写分支结构或者循环结构时,不同的缩进、对齐方式,可能会返回不同的结果,甚至是报错。
这里写图片描述
这里写图片描述
python基础贴士_第1张图片
上图贴出了同一个for循环下,三种不同的缩进对齐写法,第二段代码由于第三行没有缩进,导致这一行代码没有进入循环结构中,最终运行结果出现差异。而第三段代码则因为第二行没有缩进报错(IndentationError: expected an indented block),这是因为在这里需要4个空格的缩进。

通过一个小技巧优化代码

下面这两段代码展示了通过削减循环次数来提高运行效率。
求10000以内的完美数:

from time import time
start = time()
for num in range(1, 10001):
    my_sum = 0
    for i in range(1, num):
        if num % i == 0:
            my_sum += i
    if num == my_sum:
        print(num)
end = time()
print((end-start), "秒")

python基础贴士_第2张图片

from time import time
from math import sqrt
start = time()
for num in range(2, 10001):
    my_sum = 1
    for i in range(2, int(sqrt(num))+1):
        if num % i == 0:
            my_sum += i
            if i != num // i:
                my_sum += num // i
    if num == my_sum:
        print(num)
end = time()
print((end-start), "秒")

python基础贴士_第3张图片
可以看到优化后的代码,运行时间仅为未优化的代码的1.3%,从而提高了效率。

你可能感兴趣的:(程序小白,python,初学者)