Python学习——【2.3】for循环

文章目录

【2.3】for循环

一、for循环基础语法

(一)基础语法

除了while循环语句外,Python还提供了for循环语句。两者能完成的功能差不多,但仍有所侧重:

1.while循环的循环条件是自定义的,自行控制循环条件;

2.for循环是一种轮询 机制,是对一批内容进行逐个处理

for循环语法如下:

复制代码
for 临时变量 in 待处理数据集:
	循环满足条件时执行的代码

从待处理数据集中,逐个取出数据并赋给临时变量。

示例(遍历字符串):

python 复制代码
# 定义字符串name
name = "zhangsan"

# for循环处理字符串
for x in name:
    print(x)

输出结果如下:

复制代码
z
h
a
n
g
s
a
n

注意:

1.与while循环不同,for循环是无法定义循环条件的,只能从被处理的数据集中依次取出内容进行处理。

2.所以,理论上讲,Python的for循环无法构建无限循环(因为被处理的数据集不可能无限大)。

3.for循环内的语句,同样需要注意正确缩进。

※、练习

案例:数一数有几个a

定义字符串变量name,内容为:I eat an apple every day.

通过for循环,遍历此字符串,统计有多少个英文字母a

我的代码

python 复制代码
name = "I eat an apple every day."
count = 0

for x in name:
    if x == 'a':
        count += 1

print(f"{name}中共含有:{count}个字母a")

(二)range语句

对于for循环语法:

复制代码
for 临时变量 in 待处理数据集:
	循环满足条件时执行的代码

对于语法中的待处理数据集 ,严格来说,其被称作:序列类型

序列类型 指,其内容可以一个个依次取出的一种类型,包括:

  • 字符串;
  • 列表;
  • 元组;
  • 等等。

for循环语句,本质上是遍历序列类型

range语句的功能:获得一个数字序列

语法一:

python 复制代码
range(num)

获取一个从0开始,到num结束(不含num本身)的数字序列。

range(5)获得的数据是:[0, 1, 2, 3, 4]

语法二:

python 复制代码
range(num1, num2)

获得一个从num1开始,到num2结束(不含num2本身)的数字序列。

range(5, 10)获得的数据是:[5, 6, 7, 8, 9]

语法三:

python 复制代码
range(num1, num2, step)

获得一个从num1开始,到num2结束(不含num2本身)的数字序列。

数字之间的步长,以step为准(step默认值为1)。

range(5, 10, 2)获得的数据是:[5, 7, 9]

※、练习

案例:有几个偶数

定义一个数字变量num,内容随意。

使用range()语句,获取从1到num的序列,使用for循环遍历它。

在遍历的过程中,统计有多少偶数出现。

我的代码

python 复制代码
num = 20
count = 0

for i in range(1, num + 1):
    if i % 2 == 0:
        count += 1

print(f"从1到{num}共有{count}个偶数。")

(三)变量作用域

思考一个问题:

python 复制代码
for i in range(5):
    print(i)
    
print(i)

如上代码,思考一下:最下面那行print(i)语句,能否访问到变量i?

答:规范上 不允许;实际上可以。

for循环的变量作用域问题

复制代码
for 临时变量 in 待处理数据集:
	循环满足条件时执行的代码

回顾for循环的语法,从数据集中取出的数据赋值给临时变量。顾名思义,它为什么叫"临时变量"呢?

临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部。

而如果在for循环外部访问临时变量:

1.实际上是可以访问到的;

2.在编程规范上,是不允许、不建议这么做的。

如何在for循环外部访问"临时变量"

把临时变量在for循环外部先定义一下即可。这样一来,它本身就是for循环外部的一个普通变量,只不过for循环对它进行了若干次操作而已,后续我再访问它的时候也是正常访问一个普通变量。

python 复制代码
i = 0

for i in range(5):
    print(i)
    
print(i)

二、for循环嵌套使用

语法如下:

复制代码
for 临时变量 in 待处理数据集:
	循环满足条件应做的事情1
	循环满足条件应做的事情2
	循环满足条件应做的事情N
	...
	
	for 临时变量 in 待处理数据集:
        循环满足条件应做的事情1
        循环满足条件应做的事情2
        循环满足条件应做的事情N
        ...

示例:

python 复制代码
i = 1

for i in range(1, 101):
    print(f"今天是向小美表白的第{i}天,坚持。")
    for j in range(1, 11):
        print(f"送给小美的第{j}朵玫瑰花。")
    print(f"小美,我喜欢你(第{i}天的表白结束。)")

print(f"第{i}天,表白成功。")

另外,while和for也可以相互嵌套。

※、练习

案例:for循环打印九九乘法表

通过for循环,输出如下九九乘法表内容:

复制代码
1 * 1 = 1	
1 * 2 = 2	2 * 2 = 4	
1 * 3 = 3	2 * 3 = 6	3 * 3 = 9	
1 * 4 = 4	2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	
1 * 5 = 5	2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	
1 * 6 = 6	2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	
1 * 7 = 7	2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	
1 * 8 = 8	2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	
1 * 9 = 9	2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81

我的代码

python 复制代码
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j} * {i} = {i * j}\t", end='')
    print()
相关推荐
try2find14 分钟前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取1 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
ytttr8732 小时前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
精灵vector3 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习3 小时前
Python入门Day2
开发语言·python
Vertira3 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉3 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗3 小时前
黑马python(二十四)
开发语言·python
晓13134 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr
是小王同学啊~4 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain