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()
相关推荐
二向箔reverse20 小时前
深度学习中的学习率优化策略详解
人工智能·深度学习·学习
悠哉悠哉愿意20 小时前
【机器学习学习笔记】线性回归实现与应用
笔记·学习·机器学习
Rocky40121 小时前
在线测评系统---第n天
学习
THMAIL21 小时前
机器学习从入门到精通 - 机器学习调参终极手册:网格搜索、贝叶斯优化实战
人工智能·python·算法·机器学习·支持向量机·数据挖掘·逻辑回归
ERP老兵-冷溪虎山21 小时前
Python/JS/Go/Java同步学习(第三篇)四语言“切片“对照表: 财务“小南“纸切片术切凭证到崩溃(附源码/截图/参数表/避坑指南/老板沉默术)
java·javascript·python·golang·中医编程·四语言同步学习·职场生存指南
科技树支点1 天前
无GC的Java创新设计思路:作用域引用式自动内存管理
java·python·go·web·编程语言·编译器
qq_172805591 天前
GO : cannot find module
学习·go
沐小侠1 天前
软件设计师——软件工程学习笔记
笔记·学习·软件工程
THMAIL1 天前
机器学习从入门到精通 - 集成学习核武器:随机森林与XGBoost工业级应用
人工智能·python·算法·随机森林·机器学习·集成学习·sklearn
GEO_JYB1 天前
BERT家族进化史:从BERT到LLaMA,每一次飞跃都源于对“学习”的更深理解
学习·bert·llama