从0.1开始学Python——[4]


如果按照一行一行输入命令的方式执行语句,那么Python默认将会按顺序从第一行执行到最后一行。因此,为了实现更多功能,引入了 流程控制语句,它的作用是改变程序运行顺序,使得程序可以跳转回来再次执行或者某些内容不执行,也可以多次执行指定的程序。

流程控制语句

流程控制语句分为两大类:条件判断语句循环语句

条件判断语句

if语句

产生分支,通过条件判断决定执行哪个分支,最常见的就是if语句。即if 条件表达式:语句。先对条件表达式求值判断:True就执行后面的语句,False则不执行后面的语句。如上面结构所示,if语句只决定执不执行它后面的这一条语句,你在if语句之外再写语句就不是if管得着的了,想让if管很多条的话,需要把它后面的语句写成代码块。就是相当于把很多语句缝在一起塞在那个语句的位置,要么都执行要么都不执行。但是要注意代码块不能像单个语句一样放在条件表达式后面,而是要另起一行放并缩进(一个tab和四个空格效果相同,但是写代码的时候不能混着用)。此时的形式为
if 条件表达式:
(缩进)代码块

什么时候有一条内容恢复到之前的缩进级别了,这时上面的代码块结束。写程序可能会有很多很多缩进,所以不同代码块就看它自己的什么时候缩进级别恢复。例如:

num = 17
if num > 15:
    print('shiwodadiao')
    print('dungeon master')
    print('gold wind')
print('222')  # 这一句就不属于上面的代码块了,if语句管不住他

运行后那三句只会一起输出或不输出,但是‘222’这一句一直输出。
条件表达式可以有多个,几个表达式之间用逻辑运算符连接即可加粗样式。一般常见的条件表达式有一种不是判断大小,而是判断某值的内容(即字符串内容),这里用input()函数输入要被判断的变量,这个函数不用多讲,值得一提的是这个函数的返回值是字符串形式,你自己输入不需要打‘’。比大小什么的记得类型转换

if-else语句

if语句只有执行什么都不做两种选择,而为了能通过不满足条件执行另一个语句,需要用到if-else语句。基本语法为
if 条件表达式:
(缩进)代码块
else:
(缩进)代码块

这时,判断完条件表达式之后,False的话不会什么也不干,而是执行代码块,如:

num = input('请输入num')
if num == 'admin':
    print('shiwodadiao')
    print('dungeon master')
    print('gold wind')
else:
    print('嗨害嗨,不对捏')

if-elif-else语句

这个属于是上一个的加强版,为了能通过不同条件执行不同语句,需要用到 if-elif-else语句。形如:
if 条件表达式:
(缩进)代码块
elif 条件表达式:
(缩进)代码块
elif 条件表达式:
(缩进)代码块
……
else:
(缩进)代码块

在整个语句执行中,从上到下依次判断,哪个True执行哪个,都是False就执行最后一个else的代码块,这也决定了只有一个结果会输出。例如:

num = input('请输入num')
if num == 'admin':
    print('shiwodadiao')
    print('dungeon master')
    print('gold wind')
elif num == 'admin1':
    print('是你小子')
elif num == 'admin2':
    print('禁止访问')
else:
    print('嗨害嗨,不对捏')

由于这种语句是从上到下检查,所以如果几个判断表达式之间有包含关系,例如>=10,>=20,>=30,如果>=10在最前面会导致后面的永远不会执行,所以解决这种问题一方面可以自己改顺序,另一方面可以采用同时有上下限的方式解决。

循环语句

就是循环进行一部分代码的语句,常见的就是while循环和for循环。

while循环语句

基本结构就是
while 条件表达式
(缩进)代码块
else:
(缩进)代码块(else这一块可有可无)

只要条件表达式判断出来是True就执行,然后再判断,直到判断出False,退出循环,跳出循环后,执行else的语句。例如:

i = 1
while i < 10:
    i += 1
    print('pr')
else:
    print('prprpr')

想要循环语句可以发挥功能,需要:1.初始化一个值,也就是条件表达式中涉及的变量需要一个初始值,不然默认为零可能会影响执行;2.需要条件表达式用来让循环可以工作;3.条件表达式涉及的变量需要改变大小,不然循环结束不了。

循环语句嵌套

经典循环套循环。例如:

i = 0
while i < 7:
    j = 0  # 注意这个j一定不能在外面,因为它在每一行需要被重置,不然就不能继续循环了
    while j < 3:
        print('* ', end='')
        j += 1
    print()
    i += 1

这是一个画i行j列*矩形的代码。

好用的break

break可以退出循环语句(包括else语句)。在嵌套结构中有利于减少运算次数,比如找质数的任务,非质数可能有好几对约数,如果用break,那找到第一个1和本身以外的约数就可以退出去找别的了。例如:

i = 2  # 1不是质数也不是合数
while i <= 100:
    j = 2
    flag = True
    while j < i:
        if i % j == 0:  # j一定不能是1,不然全不是质数了,注意质数性质。
            flag = False
            # break
        j += 1
    if flag:
        print(i)
    i += 1

上述代码加上井号处的break就可以退出循环,减少验证次数,使执行时间更短,因为flag已经变了,再判断出别的约数没有任何改变
再看,因数是成对的,2和5,5和2实际上是一样的,也就是往后取也是浪费时间,也就是说不需要取j < i的所有数就能知道是不是质数,取到i的平方根就行了,因为后面再找到的因数就相当于2和5与5和2的关系了,但是有一些非质数除了1和本身之外只有自己的平方根是约数,所以上述代码需要改为:

i = 2  # 1不是质数也不是合数
while i <= 100:
    j = 2
    flag = True
    while j <= i ** 0.5:  # 修改处
        if i % j == 0:  # j一定不能是1,不然全不是质数了,注意质数性质。
            flag = False
            # break
        j += 1
    if flag:
        print(i)
    i += 1

注意改成<=,因为有的非质数只有自己平方根一个额外约数。

continue

continue是跳过某一次,其余的继续执行。例如:

i = 0
while i < 5:
    i += 1
    if i == 2:
        continue
    print(i)
else:
    print('欧儿了')

结果为:

1
3
4
5
欧儿了

也就是跳过了2。注意,break和continue二者作用于离他们最近的循环。

pass的作用

pass是用来占据代码位置的语句,没有实际意义,没想好写什么就可以用这个,防止语法错误。比如刚才的:

i = 0
while i < 5:
    i += 1
    if i == 2:
        pass
    print(i)
else:
    print('欧儿了')

continue改成pass以后,执行结果就是:

1
2
3
4
5
欧儿了

因为没有实际意义,所以2的输出也不受影响,说白了就是直接让if语句不发挥功能得走一下过场

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值