Python循环结构之for-in循环

for循环通常用于迭代序列,它的遍历对象必须可迭代对象(字符串、列表、元组、集合、字典)。

for-in循环

语法结构:

for 自定义变量 in 可迭代对象:
    重复执行的代码块

例1:循环遍历字符串中的每一个字符。

mystr = 'Python'

for i in mystr:   # 将取出来的值赋值给i
    print(i)

例2:打印出列表中的所有元素。

lst = ['python','php','java','go']

for i in lst:
    print(i)

range()函数产生的是一个整数序列,也是一个可迭代对象。

例3:输出1、3、5、7、9。

# 输出1、3、5、7、9
for i in range(1,10,2):
    print(i)

# 输出2、4、6、8、10
for i in range(2,11,2):
    print(i)

例4:输出1-100的偶数和

# 计算1-100的偶数和
sum = 0 # 存储偶数和
# 第一种方法:根据和2取余,判断是否为偶数
for item in range(1,101):
    if not item%2:   sum+=item
print(sum)
# 第二种方法:计算偶数和,那就从2开始,步长设置为2
for item in range(2,101,2):
    sum+=item
print(sum)

若是在循环体内不需要使用自定义变量,可将自定义变量设为下划线“_”。

例5:重复输出5次“我爱Python”。

for _ in range(5):
    print('我爱Python')

水仙花数问题

水仙花数:abc = a**3+b**3+c**3,即个位的三次方+十位的三次方+百位的三次方得到的和等于这个数。

"""
输出100-999的水仙花数
153   153//100=1   153//10=15 15%10=5      153%10=3
个位:i%10
十位:i//10%10
百位:i//100
"""

for i in range(100,1000):
    if (i%10)**3+(i//10%10)**3+(i//100)**3 == i:
        print(i)

for循环中的break和continue

# 遍历字符串'hello,world'遇到','结束遍历
for i in 'hello,world':
    if i == ',':    break
    print(i,end='')

print()

# 遍历字符串'hello,world',去掉其中的','
for i in 'hello,world':
    if i == ',':    continue
    print(i,end='')

for 循环与 else 语句

语法格式:

for 变量 in 可迭代对象:
    循环体代码
else:
    正常结束循环后,会执行的代码

else语句和if放在一起使用:当if条件表达式不成立时执行else。

和while、for循环放在一起使用:当循环正常结束后再执行一次else代码块,但如果循环体中出现break,就不会执行else语句。(continue是正常结束循环)

实例1:输入登录密码,输错超过3 次就会提示‘密码输入错误次数过多,账户已冻结。’

for i in range(3):
    pwd = input('请输入密码(6位数):')
    if pwd == '888888':
        print('密码正确')
        break     # 密码输入正确,就会登录成功,跳出循环
    else:
        print('密码错误,请重新输入。')
else:     # 如果循环正常结束,也就是3次密码都输入错误了,就会执行else中的代码
    print('密码输入错误次数过多,账户已冻结。')
图片[1]-Python循环结构之for-in循环-尤尤'blog

for – else 的应用

for – else 一般用于迭代遍历嵌套的数据类型时使用。

实例2:要求查询某个学生是否存在,如果存在,则打印它的全部信息,如果不存在,则循环结束后,给出一个统一的提示。

# 由字典组成的列表,字典中是某学生的详细信息
students = [
    {'name': 'Alice','age': 17,'gender': 'female','height': 160,'weight': 90},
    {'name': 'Bob','age': 15,'gender': 'male','height': 157,'weight': 100},
    {'name': 'Tom','age': 16,'gender': 'male','height': 168,'weight': 105},
    {'name': 'Jack','age': 16,'gender': 'male','height': 165,'weight': 112}
]

find_name = 'Tom'

for stu_info in students:
    if stu_info.get('name') == find_name:
        print(stu_info)
        break    # 如果找到了,就直接退出循环
else:
    # 在搜索完列表后,没有找到指定的人,给出的统一提示
    print(f'没有找到 {find_name}')

# 可以将上面查询的代码封装进一个函数中,然后给函数传递要查询的那个学生的姓名即可
def find_stu(name):
    for stu_info in students:
        if stu_info.get('name') == name:
            # print(stu_info)
            # break
            return stu_info
    else:
        return f'没有找到 {find_name}'

result = find_stu('Jack')
print(result)

输出结果:{‘name’: ‘Tom’, ‘age’: 16, ‘gender’: ‘male’, ‘height’: 168, ‘weight’: 105}

输出结果:{‘name’: ‘Jack’, ‘age’: 16, ‘gender’: ‘male’, ‘height’: 165, ‘weight’: 112}

嵌套循环

循环结构中又嵌套了一个新的完整的循环结构。外层循环执行一次,内层循环执行完整的一轮。

例:打印9*9乘法表

# 输出3*4的矩阵
for i in range(3):
    for j in range(4):
        print('*',end=' ')
    print()

# 9*9乘法口诀表
for i in range(1,10):
    for j in range(1,i+1):  # 表达式的个数(和j有关)和行数相同
        print(f'{j}*{i}=',i*j,end='\t')
    print()     # 输出完一行的表达式后换行
图片[2]-Python循环结构之for-in循环-尤尤'blog

注意:在嵌套循环中,break和continue都用于控制本层循环。

for-in 循环和 while 循环的区别

他们二者的本质上没事区别,while 循环用于不知循环次数的循环,for 循环用于已知循环次数的循环。

for 循环不需要提前设置变量。通常用于遍历序列,循环的次数取决于 in 后面的序列包含的元素个数。

while 循环需要提前设置初始化变量,称之为‘条件循环’,循环次数取决于 while 后面的条件表达式的值何时为 False。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容