python基础贴士

缩进与对齐

对于Python初学者来说,可能会经常看到这样的报错提示:IndentationError: expected an indented block,IndentationError: unexpected indent等等。这都表示缩进错误。
pep8规范要求4个空格为一个缩进级别,而Python里面的分支结构if与循环结构for是没有{}的,判断语句是否在循环或者分支结构内,靠的是缩进与对齐。应该缩进的地方就要缩进,不该缩进的地方不要缩进。因为Python的这种特性,在写分支结构或者循环结构时,不同的缩进、对齐方式,可能会返回不同的结果,甚至是报错。
这里写图片描述
这里写图片描述
这里写图片描述
上图贴出了同一个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), "秒")

这里写图片描述

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), "秒")

这里写图片描述
可以看到优化后的代码,运行时间仅为未优化的代码的1.3%,从而提高了效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值