Python3快速入门-3.2流程控制语句

3.2条件控制语句

3.2.1 if语句

格式如下:

if condition:

pass

若condition为True,则执行下面的语句pass;pass前必须有4个空格(一般Tab键会占4个空格),其表示是if的代码块。其中pass是Python中的关键字,表示空语句或占位语句。

在后面的学习中,由于代码量较大,将使用vs code来编辑代码。

例1:

'''

    模块声明:流程控制语句if

'''

print('Start')

 

a = 1

 

if a:

    print('it is True')

 

print('End')

运行结果:

Start

it is True

End

例2:

'''

    模块声明:流程控制语句if

'''

print('Start')

 

a = 1

b = 2

 

if a < b:

    print('a = %d, b = %d' %(a, b))

    print('a < b')

 

print('End')

运行结果:

Start

a = 1, b = 2

a < b

End

代码中,if语句下的2个print都是属于if的代码块。

3.2.2 if...else...语句

格式如下:

if condition:

pass

else:

pass

例1:

'''

    模块声明:流程控制语句if

'''

print('Start')

 

a = 1

b = 2

 

if a < b:

    print('a < b')

else:

    print('a >= b')

 

print('End')

运行结果:

Start

a < b

End

例2:嵌套if语句

'''

    模块声明:流程控制语句if

'''

print('input a number')

 

a = input()

a = int(a)

 

if a == 1:

    print('learn English')

else:

    if a == 2:

        print('watch TV')

    else:

        if a == 3:

            print('play game')

        else:

            if a == 4:

                print('go shopping')

            else:

                print('go to sports')

运行结果:

input a number

2

watch TV

由于input()函数返回的是字符串,因此需要将str转换成int。

3.2.3 if...elif...else...语句

格式如下:

if condition1:

pass

elif condition2:

pass

else:

pass

将3.2.2中的例2用elif修改,如下所示。

'''

    模块声明:流程控制语句if

'''

print('input a number')

 

a = input()

a = int(a)

 

if a == 1:

    print('learn English')

elif a == 2:

    print('watch TV')

elif a == 3:

    print('play game')

elif a == 4:

    print('go shopping')

else:

print('go to sports')

运行结果:

input a number

2

watch TV

elif语句类似于C++中的switch语句。

3.3循环控制语句

3.3.1 while语句

格式如下:

while expression:

pass

当expression为True时,执行pass代码块。

例:

'''

    模块声明:流程控制语句while

'''

print('input a number')

 

a = input()

a = int(a)

 

while a < 10:

    print('a = %d'%a)

    a += 1

运行结果:

input a number

3

a = 3

a = 4

a = 5

a = 6

a = 7

a = 8

a = 9

3.3.2 while...else...语句

格式如下:

while expression:

    pass

else:

pass

例:

'''

    模块声明:流程控制语句while

'''

print('input a number')

 

a = input()

a = int(a)

 

while a < 10:

    print('a = %d'%a)

    a += 1

else:

    print('a >= 10')

运行结果:

input a number

10

a >= 10

3.3.3 for语句

格式如下:

for target_list in expression_list:

    pass

for语句是用来遍历序列(字符串、列表、元组)、集合和字典。每遍历一次,将expression_list中的元素赋值给target_list,并执行pass代码块。

例1:

'''

    模块声明:流程控制语句for

'''

l = [1,2,3,4,5]

 

for a in l:

    print(a)

运行结果:

1

2

3

4

5

由于执行print函数,默认参数end = ‘\n’,因此每执行一次换行。

例2:

'''

    模块声明:流程控制语句for

'''

l = [('卡兹克','盲僧','伊芙琳','蜘蛛'),{1,2,3},4,5,6]

 

for a in l:

    if isinstance(a,(str,list,tuple,set,dict)):

        for b in a:

            print(b,end = ' | ') #默认情况下:end = '\n'

    else:

        print(a,end = ' | ')

运行结果:

卡兹克 | 盲僧 | 伊芙琳 | 蜘蛛 | 1 | 2 | 3 | 4 | 5 | 6 |

当expression_list内还含有序列、集合、字典时,可以使用上述的方法来遍历内部的每一个元素。

3.3.4 for...else...语句

格式如下:

for target_list in expression_list:

    pass

else:

pass

例:

'''

    模块声明:流程控制语句for

'''

l = [('卡兹克','盲僧','伊芙琳','蜘蛛'),{1,2,3},4,5,6]

 

for a in l:

    if isinstance(a,(str,list,tuple,set,dict)):

        for b in a:

            print(b,end = ' | ') #默认情况下:end = '\n'

    else:

        print(a,end = ' | ')

else:

    print('\n遍历结束')

运行结果:

卡兹克 | 盲僧 | 伊芙琳 | 蜘蛛 | 1 | 2 | 3 | 4 | 5 | 6 |

遍历结束

3.3.5 range函数

用法1:range(stop)表示生成一个从[0,stop)的数字序列。

>>> print(range(5))

range(0, 5)

>>> print(list(range(5)))

[0, 1, 2, 3, 4]

>>> print(tuple(range(5)))

(0, 1, 2, 3, 4)

>>> print(set(range(5)))

{0, 1, 2, 3, 4}

用法2:range(start, stop[, step])表示生成一个从[start,start+step,start+2*step,...,stop)的数字序列,起步长为step;若step未定义则默认为1。

>>> print(list(range(5,13)))

[5, 6, 7, 8, 9, 10, 11, 12]

>>> print(list(range(5,13,3)))

[5, 8, 11]

问题1:执行一个代码块100次,该怎么编辑代码?

方法1:创建一个0-99的列表,然后使用for遍历,每遍历一次执行一次代码块。缺点是0-99的列表要写很久。

方法2:使用range创建0-99的序列,代码如下。

'''

    模块声明:流程控制语句for和range

'''

for a in range(0,100,1):

    print('a = %d'%a,end = ' ')

问题2:如何打印一个序列偶数下标的元素?

方法1:使用for循环遍历序列的每一个元素,然后选择偶数下标的元素进行打印。缺点是太过于繁琐。

方法2:使用range来创建从0开始的偶数序列,然后用for从range中取出元素,最后打印。

'''

    模块声明:流程控制语句for和range

'''

l = [1,2,3,4,5,6,7,8,9]

 

for a in range(0,len(l),2):

    print('l[%d] = %d'%(a,l[a]))

运行结果:

l[0] = 1

l[2] = 3

l[4] = 5

l[6] = 7

l[8] = 9

3.3.6 break和continue语句

break用于循环控制语句中,作用是终止并跳出离break最近的循环语句。

例1:

'''

    模块声明:流程控制语句for

'''

l = [1,2,3,4,5,6,7,8,9,10]

 

for a in l:

    if a == 6:

        break

    else:

        print('a = %d'%a)

else:

    print('end')

运行结果:

a = 1

a = 2

a = 3

a = 4

a = 5

例2:

'''

    模块声明:流程控制语句for和while

'''

l = [1,2,3,4,5,6,7,8,9,10]

 

for a in l:

    while a >= 6:

        break

    else:

        print('a = %d'%a)

else:

print('end')

运行结果:

a = 1

a = 2

a = 3

a = 4

a = 5

end

为什么例2就打印出了end,而例1没有打印?

当执行break时,若循环语句带有else分支,则else下的语句也不会执行。因此例1种跳出for循环后,不执行else下的print('end'),直接退出。

例2中,break跳出的while循环语句,因为while离break最近。

continue也是用于循环语句中,用于结束本次循环,立即开始下一次循环。

'''

    模块声明:流程控制语句for和continue

'''

l = [1,2,3,4,5,6,7,8,9,10]

 

for a in l:

    if a >= 3 and a <= 8:

        continue

    else:

        print('a = %d'%a)

else:

    print('end')

运行结果:

a = 1

a = 2

a = 9

a = 10

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值