Skip to content

Latest commit

 

History

History
341 lines (239 loc) · 5.58 KB

038-988983-for循环_循环遍历_循环变量.sy.md

File metadata and controls

341 lines (239 loc) · 5.58 KB
show version enable_checker
step
1.0
true

for循环_循环遍历_循环变量

回忆上次内容

  • 所有字符 有序号
    • 就连 空格 也不例外
  • 空格
    • 序号32
    • 是 print函数中 sep参数的 默认值

图片描述

  • 字符 在计算机中
    • 数字序号 来 存储表示
  • 字符序号 有规律
    • a 对应 97
    • b 对应 98
    • c 对应 99
  • 连续字母 对应 连续序号
    • 似乎应该是 天经地义 的
  • 但 为什么
    • 小写a 从97开始?
  • 除了 小写字母外
    • 还有 很多字符 的
    • 都分布 在哪儿 呢?🤔

小写字母

  • a、b、c 都是挨着的
print("a", ord("a"), sep=":")
print("b", ord("b"), sep=":")
print("c", ord("c"), sep=":")
  • z呢?
print("z", ord("z"), sep=":")

效果

图片描述

  • 26个字母
    • 挨着吗?

序号连续

  • 从a开始

图片描述

  • 到z结束
ord("a") - ord("a")
ord("b") - ord("a")
ord("z") - ord("a")
  • 从0到25
    • 总共 26个小写字母
    • 相当于 26个端点
    • 将线段
    • 分成 25段
  • 小写字母
    • 序号 挨着的
  • 大写字母
    • 对应序号
    • 也都 挨着 吗?

大写字母

print("A", ord("A"), sep="->")
print("Z", ord("Z"), sep="->")
ord("Z") - ord("A")
  • 计算差值

图片描述

  • 大写字母也是
    • 26个字母
    • 将线段分成25段
    • 连续的
  • 能否 把这些连续的 数字
    • 输出出来呢?

提问

图片描述

  • 这里面用到了一个新知识
    • for语句

尝试使用range范围

  • 对于 5以内的 所有数字
for i in range(5):
  • 注意第一行结尾
    • 有个冒号

图片描述

  • 回车后
    • 然后出现了三个点
    • ...
  • 这就是说
    • 已经进入了for循环
  • 下面要写的是
    • for的循环体
    • 循环起来之后干什么

循环体

  • 按下4个空格后
    • 输入下面的代码
print(i)
  • 输出当前这轮的i

图片描述

  • 又出现了...
    • 这次 直接 回车
    • 跳出 循环

图片描述

  • 运行结果
    • 输出 从 0 到 4

如何理解range

  • range函数
    • 可以生成
    • 范围内的整数
help(range)
  • range(5)中
    • 5 是 stop参数的值
    • start参数的值 为 默认值0

图片描述

  • 如果 明确写好
    • 初始值start 为 0
    • 会如何呢?

设置start值

for num in range(0,5):
	print(num)
  • 输出没变
    • 还是 从 0 到 4

图片描述

  • 可以修改
    • start的值 吗?

初始值设置

  • range(2,5)
for num in range(2, 5):
	print(num)
  • 运行结果

图片描述

  • 为什么 stop 结束值
    • 给的是 5
    • 最终却 只输出到 4 呢?

前闭后开

  • start的值
    • inclusive
    • 被包含在内
    • 回忆import
      • 导入、
      • in了

图片描述

  • stop的值

    • exclusive
    • 被排除在外
    • 回忆
      • export 导出
      • exit
  • 整个结构为

    • 前闭后开
    • (start,end]
    • 要start 不要end
  • 想要输出

    • 各种小写字母
  • 最大的序号

    • 多少呢?

遍历范围

  • 最大的序号
    • 是'z'的序号
    • 122

图片描述

  • 想要把 从97到122
    • 所有序号
    • 都遍历一遍
  • 应该怎么遍历呢?

重新写

  • 遍历从a到z的所有序号
    • 重写range范围
    • 从97
    • 到122
for num in range(97,122):
	print(num,chr(num))
  • 结果
    • 没有122
    • 没有z

图片描述

  • 该怎么改?

结尾位置

  • 结尾位置
    • 是不包含的
    • 所以要加1
    • 留出富余
for num in range(97,123):
	print(num,chr(num))
  • 运行成功

图片描述

  • 我想把97、123
    • 换成ord函数的结果
    • 应该怎么办?

通用

for num in range(ord(a),ord(z)):
	print(num,chr(num))
  • 报错了

图片描述

  • 错在哪?

NameError

  • a没有被定义
NameError:name 'a' is not defined
  • 怎么改?

修改

  • 我们要的是字符a
    • 必须用引号引起来
    • "a"
for num in range(ord('a'), ord('z')+1):
	print(num,chr(num))
  • 后面还要留有富裕

图片描述

总结

  • 这次 研究了range函数
    • 根据range函数的结果
    • 生成了for循环
  • 可以输出
    • 从start
    • 到end - 1
    • 所有的数字

图片描述

  • 想要 循环输出
    • 必须得缩进吗?
    • 不缩进会如何呢?🤔
  • 我们下次再说👋