【pyhton基础】004循环语句

一、for循环语句

for循环语句格式如下:

for 变量 in 序列:
        语句组1
else:
        语句组2

 先依次对序列中的每个值执行语句组1。然后,再执行语句组2。语句组1被执行的次数称为循环的次数。大多数情况下其实不需要else和语句组2。语句组要缩进。序列可以是range(...),也可以是字符串、列表、元组、字典、集合。例如:

for i in range(4):
    print(i,end = " ")

 程序输出:

0 1 2 3

range(n)是一个序列,包含整数0,1,2,……,n−1,相当于一个不包含n在内的左闭右开的区间[0,n)。上面的for语句,i依次取range(4)这个区间里面的每个值(0,1,2,3)并输出。

range(m,n,s)表示一个序列,m是起点,n是终点,s称为“步长”。序列第一个元素是m,第二个是m+s,第三个是m+2×s……。但是终点n不取。如果m大于n且s是负数,则为从大往小取。

for i in range(0, 10, 3):        #步长为3,即每3个元素取1个
    print(i,end = " ")
#>>0 3 6 9
for i in range(-10, -100, -30):
    print(i,end = " ")
#>>-10 -40 -70

 可以用for循环遍历列表和字符串,即依次访问列表中的每个元素,以及字符串中的每个字符:

a = [123, 'ok', 'pku', 'QQ']
for i in range(len(a)):    #len(a)求列表a长度(元素个数)
    print(i, a[i], end = ",")
#>>0 123,1 ok,2 pku,3 QQ,
print("")    #输出换行
for i in a:
    print(i,end = " ")
#>>123 ok pku QQ
print("")
for letter in 'Taobao':
    print(letter, end="")
#>>Taobao

下面是一个带else的for循环的例子:

cities = ["Beijing","Chengdu","Wuhan","Tianjin"]
for city in cities:
    print(city,end = ",")
else:
    print("No break")
print("Done!")

程序输出:

Beijing,Chengdu,Wuhan,Tianjin,No break
Done!

可见,在遍历完序列cities中的每个取值以后,才会执行else分支里面的语句组。

可以用for循环连续输出26个小写字母:

for i in range(26):
    print(chr(ord("a") + i),end="")

 程序输出:

abcdefghijklmnopqrstuvwxyz

在Python中,每个字符都是长度为1的字符串,每个字符都有一个编码。字符的编码是整数。ord(x)用于求字符x的编码,chr(x)用于求编码为整数x的字符。字符"a"到"z"的编码是连续的,即"a"的编码加上1就是"b"的编码,再加1就得"c"的编码……

二、break 语句和 continue 语句 

break语句可以用于从循环中跳出。例如:

cities = ["Beijing","Chengdu","Wuhan","Tianjin"]
for city in cities:
    if city[0] == 'W':
        break
    print(city,end = ",")
else:
    print("No break")
print("Done!")

程序输出:

Beijing,Chengdu,Done!

break导致循环语句立即结束,本次循环语句组中剩余的部分也不执行。因此,当city等于"Wuhan"时,不打印"Wuhan",for循环直接结束,连else部分都不会被执行。 

continue语句可以立即结束本次循环,开始下一次循环:

for letter in 'Taobao':
    if letter == 'o':    #字母为o时跳过输出
        continue         #直接跳到下次循环
    print(letter,end = "")

程序输出:

Taba

三、多重循环 

循环可以嵌套,即循环的语句组里面还可以包含循环,形成多重循环,写法为:

for i in 序列1:
        ......
        for j in 序列2:
                语句组2
        ......

四、while 循环语句 

 while语句格式如下:

while 表达式 exp:
        语句组1
else:
        语句组2

        while循环执行步骤如下。

        第1步:判断exp是否为真,若为真,转第2步;若为假,转第3步。

        第2步:执行语句组1,然后回到第1步。

        第3步:执行语句组2。

        第4步:while语句执行完毕,程序继续往下执行。

        一般情况下都不需要写else,而写成如下形式:

while 表达式 exp:
        语句组1

        执行步骤如下。

        第1步:判断exp是否为真,若为真,转第2步;若为假,转第3步。

        第2步:执行语句组1,然后回到第1步。

        第3步:while语句执行完毕,程序继续往下执行。

        连续输出26个字母可以用while循环实现如下:

i = 0
while i < 26:    #只要i<26就执行下面
    print(chr(ord("a") + i),end="")"
    i+=1

        有时会用到下面这种while写法:

whileTrue:
        ……
        if exp:
                break
        ……

        while True就意味着这个循环会不停执行。只有在exp为真,执行break的情况下才会终止循环。

        continue语句同样适用于while循环。

        下面的程序提示用户输入密码,密码不正确则提示不正确,然后再次要求输入密码。密码正确则提示成功,然后结束。密码是pku。

while (input("请输入密码:") != "pku"):
    print("密码不正确!")
print("密码输入成功!")

        程序运行结果可能如下:

        请输入密码:bba↙
        密码不正确!
        请输入密码:std↙
        密码不正确!
        请输入密码:pku↙
        密码输入成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值