温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python循环语句

发布时间:2020-06-13 02:37:16 来源:网络 阅读:895 作者:LJ_baby 栏目:编程语言

python中的循环

python中的 循环语句有两种 for...in循环 和 while循环。循环控制语句,和其他的语言类似,也有break和continue。与其他语言不同的地方是for...in循环和while循环,后面可以有else语句,具体下面会依次介绍~

循环语句的控制结构图如下:
python循环语句

for in 循环

for in 循环的语法如下:

for <variable> in <sequence>:
    <statements>

其中<sequence>可以是一个字符串或者也可以是一个列表 等...

for i in 'hello':                  # 遍历字符串
    print(i)
输出结果:
h
e
l
l
o
######

for i in ['a', 'b', 'c', 'd']:      # 遍历列表
    print(i)
输出结果:
a
b
c
d
######

d = {'a': 1, 'b': 2, 'c': 3} 
for k, v in d.items():         # 遍历字典,可同时迭代key和value
    print(k, v)
输出结果:
a 1
b 2
c 3

这些可以直接被迭代的对象 统称为可迭代对象:Iterable(collections模块的Iterable类型),只要是Iterable对象就可以作用于for循环。可以使用 isinstance() 判断一个对象是否是 Iterable 对象,示例如下:

lst = (1, 2, 3)                                 # 元组类型
flag = isinstance(lst, Iterable)
print(flag)

输出结果:
True                                             # 元组为可迭代对象

如下两种数据类型可以总用于for循环中:
1)集合数据类型,如:list、tuple、dict、set、str...
2)生成器(generator)和带yield的generator function

range()函数

range()函数为python内置函数,能够生成数列。

hello_range = range(3)
print(isinstance(hello_range, Iterable))            
for i in hello_range:       # 循环遍历 数列
    print(i)

输出结果:
True                              #  range(3) 所生成的对象为 可迭代对象
0
1
2

使用range指定数列的区间:

>>> for i in range(2,5):
...     print(i)
...
2
3
4

除了指定区间,还可以指定步长:

>>> for i in range(2, 10, 3):
...     print(i)
...
2
5
8

range()函数除了可以作用于for循环中,还可以用于创建list或者tuple:

hello_list = list(range(10))           # 生成 list
print(hello_list)

hello_tuple = tuple(range(10))    # 生成 tuple
print(hello_tuple)

for...in 循环中的 else 语句

for...in 后面还可以有 else 语句,语法如下:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

else 中的语句,会在 for 循环结束之后执行:

>>> for i in range(5):
...     print(i)
... else:
...     print('end...')
...
0
1
2
3
4
end...

Tip:若 for 循环被 break 终止,则 else 中的语句不会被执行,下面会介绍~

while循环

python中while循环的语法如下:

while <condition>:
    <statements>

条件满足,则一直循环,知道条件不满足,退出循环~

示例如下,求1 ... 100 的总和:

sum = 0
n = 1
while n <= 100:
    sum += n
    n += 1
print(sum)                # 输出结果:5050

while 循环中的 else 语句

类似于 for...in 循环,while 循环后面也可以有 else 语句,语法如下:

while <condition>:
    <statements>
else:
    <statements>

当 while 后面的判断语句返回值为 false,则循环终止,然后执行 else 中的语句。同 for...in 循环一样,若循环被 break 终止,则不会执行 else 中的语句。

sum = 0
n = 1
while n <= 100:
    sum += n
    n += 1
else:
    print('end...loop')
print(sum)

输出结果:
end...loop
5050

无限循环

可以使 while 后面的判断语句一直返回为 True,这样循环将不会被终止,一直执行循环体中的语句:

while True:
    username = input('请输入用户名:')
    print('welcome %s' % username)

输出结果:
请输入用户名:Obama
welcome Obama
请输入用户名:Trump
welcome Trump
请输入用户名:
......
......

例如 Linux 终端用户的登录,若用户输入的用户名和密码不正确,则会一直要求用户重新输入,直到输入正确为止~
简单模拟下:

username = 'baby'
passwd = '123456'
flag = True
while flag:
    login_username = input('请输入用户名:')
    login_passwd = input('请输入密码:')
    if login_username == username and login_passwd == passwd:
        flag = False
else:
    print('Welcome %s' % username)

输出结果:
请输入用户名:Obama
请输入密码:abc
请输入用户名:Trump
请输入密码:123
请输入用户名:baby
请输入密码:123456
Welcome baby

break和continue语句

在循环语句中还可以使用 break ,contiune 来控制循环流程。

continue语句

continue 用于略过本次循环中剩下的语句,直接进入下一次循环,示例如下:

# 计算1...100的奇数和

sum =0
count = 0
while count < 100:
    count += 1
    if count % 2 != 1:              # 若不是奇数,直接进入下一次循环
        continue
    sum += count
print('sum=%s' % sum)

输出结果:
sum=2500
break语句

break 用于跳出最近的一个循环,示例如下:

sum =0
count = 1
while count <= 100:
    if count == 51:
        break
    sum += count
    count += 1
print('sum=%s' % sum)

输出结果:
sum=1275

当count为51时,终止循环,则sum计算的是 1...50 的总和

Tip:break跳出循环,仅跳出最近的一个循环,若循环只有一层,执行break之后,循环就结束了;若循环有2层,则外侧的循环还会继续

lst_1 = ['a......', 'b......', 'c......']
lst_2 = [1, 2, 3]
for i in lst_1:
    print(i)
    for j in lst_2:
        print(j)

输出结果:
a......
1
2
3
b......
1
2
3
c......
1
2
3

如上所示,这里有两层循环,现在,当内侧循环至2时,使用break终止循环(见下面的示例),可以看到,内侧循环在输出lst_2中的2之后终止,但是外侧的循环还在继续:

lst_1 = ['a...', 'b...', 'c...']
lst_2 = [1, 2, 3]
for i in lst_1:
    print(i)
    for j in lst_2:
        print(j)
        if j == 2:
            break
输出结果:
a...
1
2
b...
1
2
c...
1
2

break还有一个注意点,就是当循环被break终止时,不会执行循环后面的 else 语句

lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
    print(i)
else:
    print('end...')

输出结果:
a...
b...
c...
end...        # 正常执行else中的内容

lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
    print(i)
    if lst_1.index(i) == 1:      # 当循环值lst_1下标为1的元素时,终止循环
        break
else:
    print('end...')

输出结果:                       # 没有 c... 和 end... 输出
a...
b...

while 循环也一样,这里就直接使用上面的例子:

sum = 0
count = 1
while count <= 100:
    if count == 51:
        break
    sum += count
    count += 1
else:
    print('end loop...')
print('sum=%s' % sum)

输出结果:
sum=1275                  # else 中的 end loop... 并没有输出

.................^_^

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI