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控制)打下基础。

相关推荐
_深海凉_6 分钟前
LeetCode热题100-颜色分类
python·算法·leetcode
AC赳赳老秦29 分钟前
OpenClaw email技能:批量发送邮件、自动回复,高效处理工作邮件
运维·人工智能·python·django·自动化·deepseek·openclaw
zhaoshuzhaoshu37 分钟前
Python 语法之数据结构详细解析
python
AI问答工程师1 小时前
Meta Muse Spark 的"思维压缩"到底是什么?我用 Python 复现了核心思路(附代码)
人工智能·python
zfan5202 小时前
python对Excel数据处理(1)
python·excel·pandas
小饕2 小时前
我从零搭建 RAG 学到的 10 件事
python
老歌老听老掉牙2 小时前
PyQt5+Qt Designer实战:可视化设计智能参数配置界面,告别手动布局时代!
python·qt
格鸰爱童话3 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习
悟空爬虫-彪哥3 小时前
VRChat开发环境配置,零基础教程
python
数据知道3 小时前
《 Claude Code源码分析与实践》专栏目录
python·ai·github·claude code·claw code