oeasy Python 123 元组_运算_封包解包_欢乐颂_大写数字

oeasy python 123 Python元组实战:大写

  • 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。元组_运算_封包解包_欢乐颂_大写数字

回忆

  • 支持 索引 和 切片
  • 还可以 用
  • 计数函数(count)
  • 索引函数(index)
  • 既然 有了 列表
  • 为什么 还需要有 元组 呢?
原因
  • 用 元组 不用列表的原因是
  1. 元组 是 不可变的(immutable)
  • 更适合 表示 固定的序列
  1. 元组 比 列表 占用更少内存
  • 元组 有什么 ​具体应用​ 吗?🤔
大写数字
  • 大写数字 表示法
  • 怎么 把 整型数值 转成 大写 呢?
代码
复制代码
given = int(input("Please input a number of 5-digit:"))
wan = given // 10000
qian = (given // 1000) % 10
bai = (given // 100) % 10
shi = (given // 10) % 10
ge = given % 10
position = tuple("萬仟佰拾") 
numbers = tuple("零壹贰叁肆伍陆柒捌玖")
result = numbers[wan] + position[0]
result += numbers[qian] + position[1]
result += numbers[bai] + position[2]
result += numbers[shi] + position[3]
result += numbers[ge]
print(result)
  • 转化效果
深入调试
  • 先点 小红点
  • 再点 小虫子
  • 进入调试
步进
  • 点击step over 跳过
  • 一步步执行
  • 注意输入 数字
  • 观察 本地变量 变化
日期元组
复制代码
2026, 3, 8
  • 等价于

    (2026, 3, 8)

  • 用逗号连接的 就是元组

  • 赋值的时候 可以解包
解包赋值
复制代码
year, month, date = 2026, 3, 8
year
month
date
  • 用逗号 分隔
  • 也会被 自动封包成 元组
  • 所谓 解包 解的是 元组包
赋值
复制代码
year, month, date = 2026, 3
  • 需要三个值
  • 只解出来了 两个
另一方面
复制代码
year, month = 2026, 3, 8
  • 需要 两个值
  • 解出来 三个
  • 总共 有几种赋值 呢?
回忆赋值
复制代码
a = 1
a = b = 1
a += 1
a, b = 0, 1

|------|----------------------|-------------|
| 赋值类型 | 英文名称 | 示例代码 |
| 一般赋值 | assignment | a = 1 |
| 链式赋值 | chained assignment | a = b = 1 |
| 增强赋值 | augmented assignment | a += 1 |
| 平行赋值 | parallel assignment | a, b = 0, 1 |

  • 除此之外
  • 还有海象运算符
海象
  • 海象运算符
  • 本质上 是 赋值运算符
  • 赋值之后
  • 返回这个具体的值
连用
  • 先赋值
  • 再比较

    n
    (n := 6) > 7
    n

  • 不但可以 声明并赋值

  • 还可以 将返回值 进行比较
  • 可以用列表进行平行赋值吗?
列表平行赋值
复制代码
a, b = [0, 1]
  • 用 列表 赋值
  • 确实是可以的
  • 如何理解呢?
类型转化
  • 列表 经历了
  • 类型转化
  • 解包
  • unpacking
  • 完成了赋值
  • 回忆之前的 缝合
缝合
复制代码
students = ["oeasy", "o2z", "o3z"]
math = [95, 96, 97]
chinese = [91, 92, 93]
score = list(zip(students, math, chinese))
  • 缝合之后
  • 按照lambda表达式

  • 排序

    shuxue = sorted(score, key=lambda x: x[1], reverse=True)
    shuxue

  • 元组 能 做加法、乘法吗

计算
  • 元组 加法 和 列表加法

    (1, 2) + (2, 3)
    [1, 2] + [2, 3]

  • 和 列表 运算很像

  • 都是 item链接
元组乘法
  • 元组乘法 和 列表乘法 也很像

    (1, 2) * 3
    [1, 2] * 3
    3 * (1, 2)
    3 * [1, 2]

  • 元组乘法 相当于 元组累加

  • 计算的结果还是元组
  • 元组有什么应用场景呢?🤔
欢乐颂
  • 列表项 是 元组

    from midiutil import MIDIFile

    创建MIDI对象,1个轨道

    midi = MIDIFile(1)
    piano_track = 0 # 钢琴主旋律
    tempo = 130

    设置音量

    piano_volume = 100

    设置轨道速度

    midi.addTempo(piano_track, 0, tempo)

    整合音符和持续时间到一个列表

    格式:(音符, 持续时间)

    添加钢琴主旋律

    melody = [
    (76, 1), (76, 1), (77, 1), (79, 1), # 3 3 4 5
    (79, 1), (77, 1), (76, 1), (74, 1), # 5 4 3 2
    (72, 1), (72, 1), (74, 1), (76, 1), # 1 1 2 3
    (76, 1.5), (74, 0.5), (74, 2), # 3 2 2

    复制代码
      (76, 1), (76, 1), (77, 1), (79, 1),  # 3 3 4 5
      (79, 1), (77, 1), (76, 1), (74, 1),  # 5 4 3 2
      (72, 1), (72, 1), (74, 1), (76, 1),  # 1 1 2 3
      (74, 1.5), (72, 0.5), (72, 2),       # 2 1 1
    
      (74, 1), (74, 1), (76, 1), (72, 1),              # 2 2 3 1
      (74, 1), (76, 0.5), (77, 0.5), (76, 1),(72, 1),  # 2 3 4 3 1
      (74, 1), (76, 0.5), (77, 0.5), (76, 1),(74, 1),  # 2 3 4 3 2
      (72, 1), (74, 1), (67, 2),                       # 1 2 _5
    
      (76, 1), (76, 1), (77, 1), (79, 1),  # 3 3 4 5
      (79, 1), (77, 1), (76, 1), (74, 1),  # 5 4 3 2
      (72, 1), (72, 1), (74, 1), (76, 1),  # 1 1 2 3
      (74, 1.5), (72, 0.5), (72, 2)        # 2 1 1

    ]

    current_time = 0
    for note, duration in melody:
    midi.addNote(piano_track, 0, note, current_time, duration, piano_volume)
    current_time += duration

    保存MIDI文件

    with open("joy_simple.mid", "wb") as output_file:
    midi.writeFile(output_file)

    print("简化版欢乐颂MIDI文件已生成完成!")

总结
  • 这次 我们用 元组 做了
  • 大写数字
  • 欢乐颂
  • 元组 和 列表 都是 序列
相关推荐
2501_914245932 小时前
HTML5中封装Promise风格的数据库初始化工具函数
jvm·数据库·python
E_ICEBLUE3 小时前
Python 控制 PDF 页面大小、页边距、页面方向与缩放
python·pdf
Polar__Star5 小时前
如何结合计划任务实现自动定时备份任务配置_全自动化运维管理
jvm·数据库·python
weixin_5806140010 小时前
如何提取SQL日期中的年份_使用YEAR或EXTRACT函数
jvm·数据库·python
2301_8135995510 小时前
SQL生产环境规范_数据库使用最佳实践
jvm·数据库·python
李可以量化10 小时前
QMT 量化实战:用 Python 实现线性回归通道,精准识别趋势中的支撑与压力(下)
python·qmt·量化 qmt ptrade
发现一只大呆瓜10 小时前
深度解密 Rollup 插件开发:核心钩子函数全生命周期图鉴
前端·vite
a95114164210 小时前
Go 中通过 channel 传递切片时的数据竞争与深拷贝解决方案
jvm·数据库·python
Dxy123931021610 小时前
Python 使用正则表达式将多个空格替换为一个空格
开发语言·python·正则表达式