当前位置: 首页 > news >正文

Python学习——【2.3】for循环

文章目录

  • 【2.3】for循环
    • 一、for循环基础语法
      • (一)基础语法
        • ※、练习
      • (二)range语句
        • ※、练习
      • (三)变量作用域
    • 二、for循环嵌套使用
        • ※、练习

【2.3】for循环

一、for循环基础语法

(一)基础语法

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

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

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

  for循环语法如下:

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

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

  示例(遍历字符串):

# 定义字符串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

我的代码

name = "I eat an apple every day."
count = 0for x in name:if x == 'a':count += 1print(f"{name}中共含有:{count}个字母a")

(二)range语句

  对于for循环语法:

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

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

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

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

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

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

  语法一:

range(num)

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

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

  语法二:

range(num1, num2)

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

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

  语法三:

range(num1, num2, step)

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

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

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

※、练习

案例:有几个偶数

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

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

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

我的代码

num = 20
count = 0for i in range(1, num + 1):if i % 2 == 0:count += 1print(f"从1到{num}共有{count}个偶数。")

(三)变量作用域

  思考一个问题:

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

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

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

for循环的变量作用域问题

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

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

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

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

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

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

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

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

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

二、for循环嵌套使用

  语法如下:

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

  示例:

i = 1for 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

我的代码

for i in range(1, 10):for j in range(1, i + 1):print(f"{j} * {i} = {i * j}\t", end='')print()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Prometheus监控k8s环境构建
  • JAVA与Python谁更适合后端?
  • Vscode整合PHP Server 和debug
  • 亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源
  • Python精选200Tips:141-145
  • 探索Python轻量级数据库:TinyDB的奇妙之旅
  • RocketMQ实战与集群架构详解
  • CANopen协议的理解
  • vue 父组件给子组件传值
  • C#程序员的堕落从nuget开始:将自己的代码发布到nuget
  • PHP中如何比较两个对象
  • 紧急通告VMware vCenter高危漏洞CVE-2024-38812和CVE-2024-38813修复方案
  • RTX 4090 系列即将停产,RTX 5090 系列蓄势待发
  • 【日记】书荒了(337 字)
  • [Golang] goroutine
  • 【译】JS基础算法脚本:字符串结尾
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular Elements 及其运作原理
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS6 编译安装 redis-3.2.3
  • HTML-表单
  • java2019面试题北京
  • Laravel核心解读--Facades
  • maven工程打包jar以及java jar命令的classpath使用
  • PHP 的 SAPI 是个什么东西
  • Spring框架之我见(三)——IOC、AOP
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • VuePress 静态网站生成
  • vue-router 实现分析
  • 半理解系列--Promise的进化史
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 分享几个不错的工具
  • 聚类分析——Kmeans
  • 你不可错过的前端面试题(一)
  • 智能网联汽车信息安全
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Semaphore
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #pragma once
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (MATLAB)第五章-矩阵运算
  • (二)linux使用docker容器运行mysql
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (循环依赖问题)学习spring的第九天
  • (转)LINQ之路
  • (转)德国人的记事本
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .NET Core MongoDB数据仓储和工作单元模式封装