Python快速入门专业版(二十三):for循环基础:遍历字符串、列表与range()函数(计数案例)

目录

  • 一、for循环的核心作用与语法
    • [1. 基本语法结构](#1. 基本语法结构)
    • [2. 执行流程](#2. 执行流程)
    • [3. 简单示例:遍历打印列表元素](#3. 简单示例:遍历打印列表元素)
  • 二、遍历字符串:逐个访问字符
    • [1. 基本用法:遍历字符串中的每个字符](#1. 基本用法:遍历字符串中的每个字符)
    • [2. 应用示例:统计字符串中某个字符的出现次数](#2. 应用示例:统计字符串中某个字符的出现次数)
    • [3. 注意事项](#3. 注意事项)
  • 三、遍历列表:处理序列元素
    • [1. 遍历普通列表(元素为同一类型)](#1. 遍历普通列表(元素为同一类型))
    • [2. 遍历混合类型列表](#2. 遍历混合类型列表)
    • [3. 遍历列表时获取索引](#3. 遍历列表时获取索引)
  • 四、range()函数:生成数字序列
    • [1. range()函数的三种语法形式](#1. range()函数的三种语法形式)
    • [2. 代码演示:三种形式的range()](#2. 代码演示:三种形式的range())
    • [3. 常见问题:range()生成的是"序列"而非"列表"](#3. 常见问题:range()生成的是"序列"而非"列表")
  • 五、for循环中的缩进与代码块
    • [1. 正确缩进示例](#1. 正确缩进示例)
    • [2. 错误缩进示例(缩进缺失)](#2. 错误缩进示例(缩进缺失))
    • [3. 错误缩进示例(缩进不一致)](#3. 错误缩进示例(缩进不一致))
    • [4. 缩进注意事项](#4. 缩进注意事项)
  • 六、综合案例:1到100的求和
    • [1. 案例分析](#1. 案例分析)
    • [2. 代码实现](#2. 代码实现)
    • [3. 执行过程解析](#3. 执行过程解析)
    • [4. 拓展:计算1到100的偶数和](#4. 拓展:计算1到100的偶数和)
  • 七、for循环的常见应用场景
  • 八、总结与练习

在编程中,我们经常需要对一组数据逐个进行处理------比如逐个查看字符串中的字符、计算列表中所有数字的和、重复执行某段代码固定次数等。如果手动编写每一次操作的代码,不仅效率低下,还会让程序变得冗长。Python的for循环正是为解决这类"重复操作"而生,它能自动遍历序列中的每个元素,高效执行重复逻辑。

本文将从for循环的基本语法讲起,通过实例详细讲解如何遍历字符串、列表等可迭代对象,重点介绍range()函数的用法,并通过"1到100的求和"案例巩固所学知识,帮助你掌握for循环的基础应用。

一、for循环的核心作用与语法

for循环是Python中用于遍历可迭代对象 的循环语句。所谓"可迭代对象",指的是那些包含多个元素、可以逐个取出元素的对象(如字符串、列表、元组等)。for循环的核心功能就是依次取出这些元素,对每个元素执行相同的操作。

1. 基本语法结构

python 复制代码
for 变量 in 可迭代对象:
    循环体(对每个元素执行的操作)
  • 变量 :每次循环时,从可迭代对象中取出的元素会临时存储到这个变量中,供循环体使用。变量名可以自定义(遵循Python命名规则),建议取有意义的名字(如遍历字符时用char,遍历数字时用num)。
  • 可迭代对象 :包含多个元素的对象,如字符串、列表、range()生成的序列等。
  • 循环体 :需要重复执行的代码块,必须缩进 (通常为4个空格),表示这部分代码属于for循环的一部分。
  • 冒号::用于标记可迭代对象的结束,必须放在可迭代对象之后。

2. 执行流程

  1. 从可迭代对象中取出第一个元素,赋值给变量。
  2. 执行缩进的循环体代码。
  3. 从可迭代对象中取出下一个元素,赋值给变量。
  4. 重复步骤2和3,直到可迭代对象中的所有元素都被取完,循环结束。

3. 简单示例:遍历打印列表元素

python 复制代码
# 定义一个包含3个数字的列表
numbers = [10, 20, 30]

# for循环遍历列表
for num in numbers:
    print(f"当前元素:{num}")

执行过程解析

  • 第一次循环:取出列表第一个元素10,赋值给num,执行print输出"当前元素:10"。
  • 第二次循环:取出第二个元素20,赋值给num,输出"当前元素:20"。
  • 第三次循环:取出第三个元素30,赋值给num,输出"当前元素:30"。
  • 列表中没有更多元素,循环结束。

输出结果:

复制代码
当前元素:10
当前元素:20
当前元素:30

二、遍历字符串:逐个访问字符

字符串是Python中最常见的可迭代对象之一,它由多个字符组成,for循环可以逐个取出这些字符进行处理。

1. 基本用法:遍历字符串中的每个字符

python 复制代码
# 定义一个字符串
message = "Hello"

# for循环遍历字符串
for char in message:
    print(char)

输出结果:

复制代码
H
e
l
l
o

解析 :字符串"Hello"包含5个字符('H''e''l''l''o'),for循环依次取出每个字符赋值给char,并打印出来。

2. 应用示例:统计字符串中某个字符的出现次数

需求:统计字符串"Python is powerful, Python is easy"中字母'P'出现的次数。

python 复制代码
# 目标字符串
text = "Python is powerful, Python is easy"

# 初始化计数器
count = 0

# 遍历字符串中的每个字符
for char in text:
    # 如果当前字符是'P',计数器加1
    if char == 'P':
        count += 1

# 打印结果
print(f"字母'P'出现了{count}次")

输出结果:

复制代码
字母'P'出现了2次

解析 :通过for循环逐个检查字符串中的每个字符,每当遇到'P'就将计数器count加1,最终得到'P'出现的总次数。

3. 注意事项

  • 遍历字符串时,变量每次获取的是单个字符 (字符串类型),即使字符是数字(如"123"中的'1'仍是字符类型)。
  • 空字符串("")遍历后不会执行循环体(因为没有元素)。

三、遍历列表:处理序列元素

列表是Python中最常用的数据结构之一,它可以存储多个不同类型的元素。for循环遍历列表的操作与遍历字符串类似,但列表元素可以是数字、字符串、甚至其他列表等。

1. 遍历普通列表(元素为同一类型)

python 复制代码
# 定义一个包含成绩的列表
scores = [85, 92, 78, 90, 88]

# 遍历列表,计算总分
total = 0
for score in scores:
    total += score  # 累加每个成绩到总分

# 计算平均分(列表长度用len()获取)
average = total / len(scores)

print(f"总分:{total},平均分:{average:.1f}")

输出结果:

复制代码
总分:433,平均分:86.6

2. 遍历混合类型列表

列表中的元素可以是不同类型(不推荐,但语法允许),for循环仍能正常遍历:

python 复制代码
# 混合类型列表
mixed_list = [10, "apple", True, 3.14]

for item in mixed_list:
    # 打印元素及其类型
    print(f"元素:{item},类型:{type(item)}")

输出结果:

复制代码
元素:10,类型:<class 'int'>
元素:apple,类型:<class 'str'>
元素:True,类型:<class 'bool'>
元素:3.14,类型:<class 'float'>

3. 遍历列表时获取索引

有时我们不仅需要元素的值,还需要知道元素在列表中的位置(索引)。可以用range()函数结合列表长度实现:

python 复制代码
fruits = ["苹果", "香蕉", "橙子"]

# 用range(len(fruits))生成索引序列
for i in range(len(fruits)):
    print(f"索引{i}:{fruits[i]}")

输出结果:

复制代码
索引0:苹果
索引1:香蕉
索引2:橙子

解析len(fruits)获取列表长度(3),range(3)生成0,1,2的索引序列,循环中通过fruits[i]访问对应位置的元素。

四、range()函数:生成数字序列

当我们需要按固定次数循环(如循环10次),或需要一组连续的数字时,range()函数是最方便的工具。它能生成一个不可变的数字序列 ,专门用于for循环遍历。

1. range()函数的三种语法形式

range()函数有三种常用形式,通过参数控制生成的数字序列:

语法形式 说明 示例 生成的序列
range(stop) 从0开始,到stop-1结束(不包含stop range(5) 0,1,2,3,4
range(start, stop) start开始,到stop-1结束 range(2,7) 2,3,4,5,6
range(start, stop, step) start开始,步长为step(每次递增step),直到小于stopstep为负数时反向生成) range(1,10,2) 1,3,5,7,9
  • start:起始值,默认为0(第一种形式)。
  • stop :结束值,必须指定 ,生成的序列不包含stop
  • step:步长,默认为1(每次递增1);可以为负数(表示递减)。

2. 代码演示:三种形式的range()

python 复制代码
# 形式1:range(stop)
print("range(5)生成的序列:")
for num in range(5):
    print(num, end=' ')  # 输出:0 1 2 3 4 

# 形式2:range(start, stop)
print("\n\nrange(2,7)生成的序列:")
for num in range(2,7):
    print(num, end=' ')  # 输出:2 3 4 5 6 

# 形式3:range(start, stop, step)(步长为2)
print("\n\nrange(1,10,2)生成的序列:")
for num in range(1,10,2):
    print(num, end=' ')  # 输出:1 3 5 7 9 

# 形式3:步长为负数(递减序列)
print("\n\nrange(10,0,-2)生成的序列:")
for num in range(10,0,-2):
    print(num, end=' ')  # 输出:10 8 6 4 2 

3. 常见问题:range()生成的是"序列"而非"列表"

需要注意的是,range()函数生成的是一个range对象(一种特殊的可迭代对象),而非列表。如果需要查看完整序列,可以用list()函数转换:

python 复制代码
# range对象转换为列表
num_range = range(1,5)
num_list = list(num_range)
print(num_list)  # 输出:[1, 2, 3, 4]

五、for循环中的缩进与代码块

Python通过缩进来区分代码块 ,这是for循环中最容易出错的地方。循环体必须缩进,否则会被视为循环外的代码;同一循环体的缩进量必须一致。

1. 正确缩进示例

python 复制代码
for i in range(3):
    print("循环内:", i)  # 缩进4个空格,属于循环体
print("循环外:结束")  # 无缩进,不属于循环体

输出结果:

复制代码
循环内:0
循环内:1
循环内:2
循环外:结束

2. 错误缩进示例(缩进缺失)

python 复制代码
for i in range(3):
print("循环内:", i)  # 错误:缺少缩进

运行后会报错:

复制代码
IndentationError: expected an indented block

(缩进错误:需要缩进块)

3. 错误缩进示例(缩进不一致)

python 复制代码
for i in range(3):
    print("第一次打印:", i)  # 4个空格缩进
  print("第二次打印:", i)  # 2个空格缩进(错误)

运行后会报错:

复制代码
IndentationError: unindent does not match any outer indentation level

(缩进错误:缩进量与外层不一致)

4. 缩进注意事项

  • 推荐使用4个空格作为缩进(Python官方规范)。
  • 不要混合使用空格和Tab键(不同编辑器对Tab的解析可能不同,导致错误)。
  • 循环体可以包含多行代码,所有行必须保持相同的缩进量。

六、综合案例:1到100的求和

利用for循环和range()函数,我们可以轻松实现"计算1到100所有整数的和"这一经典问题。

1. 案例分析

需求:计算1 + 2 + 3 + ... + 100的结果。

思路:

  • 初始化一个变量total(总和),初始值为0。
  • for循环遍历1到100的所有整数(用range(1, 101)生成)。
  • 每次循环将当前整数加到total中。
  • 循环结束后,total的值就是1到100的和。

2. 代码实现

python 复制代码
# 计算1到100的总和
total = 0  # 初始化总和为0

# 遍历1到100的所有整数(range(1,101)生成1-100的序列)
for num in range(1, 101):
    total += num  # 等价于 total = total + num

# 打印结果
print(f"1到100的总和是:{total}")

3. 执行过程解析

  • 循环开始前,total = 0
  • 第一次循环:num = 1total = 0 + 1 = 1
  • 第二次循环:num = 2total = 1 + 2 = 3
  • 第三次循环:num = 3total = 3 + 3 = 6
  • ...
  • 第100次循环:num = 100total累加后变为5050。
  • 循环结束,打印total的值5050。

输出结果:

复制代码
1到100的总和是:5050

4. 拓展:计算1到100的偶数和

基于上述案例,稍作修改可以计算1到100中所有偶数的和:

python 复制代码
# 计算1到100的偶数和
even_total = 0

# 方法1:遍历所有数,筛选偶数
for num in range(1, 101):
    if num % 2 == 0:  # 如果是偶数(能被2整除)
        even_total += num

print(f"1到100的偶数和(方法1):{even_total}")

# 方法2:直接用range生成偶数序列(更高效)
even_total2 = 0
for num in range(2, 101, 2):  # 从2开始,步长2,生成2,4,...,100
    even_total2 += num

print(f"1到100的偶数和(方法2):{even_total2}")

输出结果:

复制代码
1到100的偶数和(方法1):2550
1到100的偶数和(方法2):2550

解析 :方法2直接通过range(2, 101, 2)生成所有偶数,避免了条件判断,效率更高,体现了range()函数的灵活性。

七、for循环的常见应用场景

for循环在实际开发中应用广泛,以下是一些典型场景:

  1. 数据遍历与处理:遍历列表、字符串、字典等,对每个元素进行计算、转换或筛选。

    python 复制代码
    # 筛选列表中的正数
    numbers = [-2, 5, -1, 8, -3]
    positives = []
    for num in numbers:
        if num > 0:
            positives.append(num)
    print(positives)  # 输出:[5, 8]
  2. 重复执行固定次数 :结合range()函数,执行指定次数的操作(如打印5次"Hello")。

    python 复制代码
    # 打印5次"Hello"
    for _ in range(5):  # 变量用_表示不关心具体值
        print("Hello")
  3. 累加/累乘计算:如求和、求阶乘(1×2×3×...×n)等。

    python 复制代码
    # 计算5的阶乘(5! = 1×2×3×4×5)
    factorial = 1
    for i in range(1, 6):
        factorial *= i
    print(f"5的阶乘是:{factorial}")  # 输出:120
  4. 字符串处理:统计字符出现次数、拼接字符串、生成新字符串等。

    python 复制代码
    # 将字符串中所有小写字母转为大写
    text = "Hello World"
    upper_text = ""
    for char in text:
        upper_text += char.upper()  # 调用upper()方法转大写
    print(upper_text)  # 输出:HELLO WORLD

八、总结与练习

for循环是Python中处理重复操作的基础工具,本文核心知识点:

  • 语法结构for 变量 in 可迭代对象: 循环体,通过缩进区分循环体。
  • 可迭代对象 :字符串(遍历字符)、列表(遍历元素)等,for循环依次取出每个元素。
  • range()函数 :生成数字序列,三种形式(range(stop)range(start, stop)range(start, stop, step))灵活控制序列范围和步长。
  • 核心应用:遍历数据、重复操作、累加计算等,通过"1到100的求和"案例实践了基本用法。

练习题目(从易到难)

  1. 遍历字符串"Python",打印每个字符的大写形式(提示:用char.upper())。
  2. 计算列表[2,4,6,8,10]中所有元素的平方和(每个元素的平方相加)。
  3. range()函数生成10到1的递减序列(10,9,...,1),并打印每个数字。
  4. 计算1到50中所有能被3整除的数的和。

通过这些练习,你将逐步熟悉for循环的用法,为后续学习更复杂的循环逻辑(如循环嵌套、break/continue控制)打下基础。

相关推荐
闲人编程2 小时前
图像去雾算法:从物理模型到深度学习实现
图像处理·人工智能·python·深度学习·算法·计算机视觉·去雾
Kyln.Wu4 小时前
【python实用小脚本-211】[硬件互联] 桌面壁纸×Python梦幻联动|用10行代码实现“开机盲盒”自动化改造实录(建议收藏)
开发语言·python·自动化
Ms_Big4 小时前
ppliteseg改rknn,部署在嵌入式板,加速模型
人工智能·python·深度学习
折翼的恶魔5 小时前
数据分析:合并
python·数据分析·pandas
百锦再5 小时前
在 CentOS 系统上实现定时执行 Python 邮件发送任务
java·linux·开发语言·人工智能·python·centos·pygame
I'm a winner5 小时前
第五章:Python 数据结构:列表、元组与字典(二)
数据结构·python
番薯大佬6 小时前
Python学习-day8 元组tuple
java·python·学习
小文数模6 小时前
2025高教社国赛数学建模C题参考论文(含模型和代码)
python·数学建模·matlab
鸡哥爱技术7 小时前
Django入门笔记
笔记·python·django