简述

1. Python 基本语法元素 - 图1

本章节,我们会通过经典的 温度转换实例 尝试 Python 编程,目标是掌握 Python 基本语法元素,能够编写 10 行代码。

TIP:知识点讲解顺序 :::warning 温 馨 提 示

看不懂的内容先跳过,对于一些基础知识点的详细介绍在后续课程中。

内容讲解顺序问题:

  1. 1.3 中,介绍了一个温度转换的 demo,但是对于这个 demo 相关知识点的介绍在 1.4 中,并且在 1.4 中也对 1.3 的 demo 中的每一行代码做了详细的说明。
  2. 字符串的相关知识点在本节用到的比较多,和字符串相关的内容,比如切片、索引、格式化…… 会在 3. 基本数据类型 章节中介绍。
  3. 函数的相关知识点,会在 5. 函数和代码复用 中介绍。
  4. ……

仔细观察老师的讲课特点不难发现这么一个规律:先提供代码,再介绍相关知识点

其实后续的很多章节知识点的介绍,也是满足这个行为逻辑的,老师并不会先把知识点给我们掰扯清楚,然后去写实例。如果在学习过程中,遇到不理解的,无需到处查资料,死磕,影响学习进度,直管往下学便是,等学完所有内容后再磕不理解的点。

如果你在学习时,习惯是弄懂每一个知识点再往后学,那么这个温馨提示对你或许有点帮助…… :::

课件

1.pdf

代码汇总

  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[-1] in ["F", "f"]:
  3. C = (eval(TempStr[0:-1]) - 32) / 1.8
  4. print("转换后的温度是{:.2f}C".format(C))
  5. elif TempStr[-1] in ["C", "c"]:
  6. F = 1.8 * eval(TempStr[0:-1]) + 32
  7. print("转换后的温度是{:.2f}F".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: 82C
  12. 转换后的温度是179.60F
  13. 请输入带有符号的温度值: 28F
  14. 转换后的温度是-2.22C
  15. """
  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[0] in ["F", "f"]:
  3. C = (eval(TempStr[1:]) - 32) / 1.8
  4. print("转换后的温度是C{:.2f}".format(C))
  5. elif TempStr[0] in ["C", "c"]:
  6. F = 1.8 * eval(TempStr[1:]) + 32
  7. print("转换后的温度是F{:.2f}".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: C82
  12. 转换后的温度是F179.60
  13. 请输入带有符号的温度值: F28
  14. 转换后的温度是C-2.22
  15. """
  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[-2:] in ["Fa", "fa"]:
  3. C = (eval(TempStr[:-2]) - 32) / 1.8
  4. print("转换后的温度是{:.2f}Ce".format(C))
  5. elif TempStr[-2:] in ["Ce", "ce"]:
  6. F = 1.8 * eval(TempStr[:-2]) + 32
  7. print("转换后的温度是{:.2f}Fa".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: 82Ce
  12. 转换后的温度是179.60Fa
  13. 请输入带有符号的温度值: 28Fa
  14. 转换后的温度是-2.22Ce
  15. """
  1. num = 3.14159
  2. print("The number is: {:.2f}".format(num))
  3. # The number is: 3.14
  1. num = 3.14159
  2. print(f"The number is: {num:.2f}")
  3. # The number is: 3.14
  4. # 在 Python 3.6 及以上版本中,推荐使用这种 f-string 的方式来格式化字符串
  1. n = eval(input())
  2. if n == 0:
  3. print("Hello World")
  4. elif n > 0:
  5. print("He\nll\no \nWo\nrl\nd")
  6. else:
  7. for c in "Hello World":
  8. print(c)
  9. """
  10. 0
  11. Hello World
  12. 1
  13. He
  14. ll
  15. o
  16. Wo
  17. rl
  18. d
  19. -1
  20. H
  21. e
  22. l
  23. l
  24. o
  25. """
  1. s = input()
  2. print("{:.2f}".format(eval(s)))
  3. """
  4. 10 + 100
  5. 110.00
  6. 1 / 20
  7. 0.05
  8. """
  1. template = "零一二三四五六七八九"
  2. s = input()
  3. for c in s:
  4. print(template[eval(c)], end="")
  5. """
  6. 123
  7. 一二三
  8. 9876543210
  9. 九八七六五四三二一零
  10. """
  1. CurStr = input()
  2. if CurStr[:3] == "RMB":
  3. print("USD{:.2f}".format(eval(CurStr[3:]) / 6.78))
  4. elif CurStr[:3] in ["USD"]:
  5. print("RMB{:.2f}".format(eval(CurStr[3:]) * 6.78))
  6. """
  7. RMB123
  8. USD18.14
  9. USD20
  10. RMB135.60
  11. """

第 1 周课程导学

课前复习

[2.1.1]--前课复习(1).mp4 (8.6MB).mp4%22%2C%22size%22%3A9015376%2C%22taskId%22%3A%22u55d82aa2-3aae-472a-ba6a-13905197715%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035733526-a1ee2fd5-e9da-4b59-994a-c5384b44343a.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22A7xVU%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#A7xVU) 学习本课程,你需要满足以下基本要求:

  1. 会使用计算机和 office 软件
  2. 阅读简单英文内容(至少英语 3 级及以上)
  3. 熟练使用 Web 浏览器
  4. 每周至少安排 1 - 2 个小时来撸代码,连续 9 周

本课概要

[2.1.2]--本周概要(1).mp4 (11.29MB).mp4%22%2C%22size%22%3A11837210%2C%22taskId%22%3A%22u6bad7a35-00fb-4ad5-8c5a-3b6a4f9263d%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035733525-b68e3efe-f78e-44fc-b25f-4286906e0331.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22dxM1V%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#dxM1V) 程序的基本编写方法:IPO

IPO

  • input:输入 —— 拿到什么
  • process:处理 —— 如何处理
  • output:输出 —— 将处理结果返回

程序设计基本方法

单元开篇

[2.2.1]--单元开篇(1).mp4 (8.07MB).mp4%22%2C%22size%22%3A8460216%2C%22taskId%22%3A%22u5e94ef7a-6480-4a3b-ab97-e5b203c7772%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035776852-6a9c058e-c56b-4923-9313-0b6870922218.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22O4RXs%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#O4RXs)

计算机与程序设计

[2.2.2]--计算机与程序设计(1).mp4 (145.03MB).mp4%22%2C%22size%22%3A152076851%2C%22taskId%22%3A%22u158716a2-081c-4d83-aed0-3b496ac8d36%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035776851-74aa4c6d-81a9-4f2e-98ea-2d124fe03944.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22buaWX%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#buaWX) 计算机与程序设计:

  • 计算机:是根据指令操作数据的设备
  • 计算机的发展:计算机的发展参照摩尔定律,表现为指数方式
  • 摩尔定律:计算机发展历史上最重要的预测法则
  • 程序设计:是计算机可编程性的体现
  • 程序设计语言:是一种用于交互(交流)的人造语言

编译和解释

[2.2.3]--编译和解释(1).mp4 (100.64MB).mp4%22%2C%22size%22%3A105533297%2C%22taskId%22%3A%22u67710d7f-6b7a-421f-afbf-851e41d3705%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035776867-477f8357-f6c1-47b1-a26f-d35e45212e46.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22OYjHe%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#OYjHe) 计算机执行源程序的两种方式:

  1. 编译
  2. 解释

根据执行方式不同,编程语言分为两类:

  1. 静态语言
  2. 脚本语言

编译和解释

  • 编译:将源代码一次性转换成目标代码的过程
  • 解释:将源代码逐条转换成目标代码同时逐条运行的过程

编译

解释

静态语言和脚本语言

  • 静态语言:编译执行,比如:C/C++、Java……
  • 脚本语言:解释执行,比如:Python、JavaScript、PHP……

视频中最后提及的一点有些意思,静态语言的源码容易丢……
确实,静态语言编译完成后,我们直接拿编译产物就可以解决问题了,而脚本语言则不同,它需要解释执行,解释的内容自然就是我们所编写的源代码。
简言之呢,就是前者(静态语言)解决问题的时候无需源码,后者(脚本语言)需要源码。因此,相较而言,静态语言的源码被搞丢的可能性比较大……

程序的基本编写方法

[2.2.4]--程序的基本编写方法(1).mp4 (93.91MB).mp4%22%2C%22size%22%3A98466884%2C%22taskId%22%3A%22u3d805a5a-8a81-46a1-a65b-3ee9e31cf5d%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035776866-2c017ad5-5c78-4da2-a70f-2b1ec76a1921.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22UZHuH%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#UZHuH) IPO 这是非常重要的概念!!!

  • I:input 输入,程序的输入
  • P:Process 处理,程序的主要逻辑
  • O:Output 输出,程序的输出

求解计算问题的 3 个精简步骤:

  1. 确定 IPO:明确计算部分及功能边界
  2. 编写程序:将计算求解的设计变成现实
  3. 调试程序:确保程序按照正确逻辑能够正确运行

计算机编程

[2.2.5]--计算机编程(1).mp4 (57.59MB).mp4%22%2C%22size%22%3A60388248%2C%22taskId%22%3A%22uefa82aa1-825d-4536-9c5f-e9e897ffe32%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035776867-13aa1340-ce22-4be4-9aa8-9e5f5ace8125.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22QgVpi%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#QgVpi) 为什么要学习计算机编程?

  1. 编程能够训练思维
  2. 编程能够增进认识
  3. 编程能够带来乐趣
  4. 编程能够提高效率
  5. 编程带来就业机会

单元小结

[2.2.6]--单元小结(1).mp4 (14.06MB).mp4%22%2C%22size%22%3A14739961%2C%22taskId%22%3A%22u6442301c-fabf-4975-9b60-554d9515653%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035783346-1236543c-0590-4f99-967e-abf0c839ba8e.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22jKRxE%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#jKRxE) 小结:

  1. 计算机的功能性和可编程性
  2. 编译和解释、静态语言和脚本语言
  3. IPO、理解问题的计算部分
  4. 掌握计算机编程的价值

Python 开发环境配置

本节介绍 python 开发环境的配置,从 0 到 1 带着我们去下载并安装 python,并且演示了如何运行 python 程序。

我更倾向于在 VSCode 中编写 python 程序,但是如何在 VSCode 中初始化 python 的学习环境,貌似老师并没有录制视频来加以说明。为此,自己简单录制了一个 5min 时长左右的演示视频,并介绍了一款快速运行脚本的 VSCode 插件 Code Runner,有需要的小伙伴直接查看视频即可。

温馨提示:
如果你在搭建 Python 的开发环境时遇到了问题,不妨参考菜鸟教程上的这两篇文章:
Python3 环境搭建 | 菜鸟教程
Python VScode 配置 | 菜鸟教程

单元开篇

[2.3.1]--单元开篇(1).mp4 (7.48MB).mp4%22%2C%22size%22%3A7846350%2C%22taskId%22%3A%22uc6346e2a-eeae-4a52-a691-ba12354df94%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035846104-ac5e63b8-5c21-4216-91f5-fb116f4f608d.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22C08M7%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#C08M7) image.png

Python 语言概述

[2.3.2]--Python语言概述(1).mp4 (68.86MB).mp4%22%2C%22size%22%3A72210084%2C%22taskId%22%3A%22ub02abe0f-2672-4fd2-b230-6daa5a803a0%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035846104-c30ea2fd-5c6c-47e3-a857-00a6fcb4d9c1.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Dssc8%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Dssc8)

  • Python 单词怎么读
  • Python 语言的拥有者是谁
  • Python 语言创立者是谁
  • Python3 兼容 Python2 嘛
  • Python 名字的由来

Python 基本开发环境 IDLE

[2.3.3]--Python语言Windows系统开发环境(1).mp4 (16.38MB).mp4%22%2C%22size%22%3A17179710%2C%22taskId%22%3A%22u20aa2cfb-8826-4d6d-a3b6-5364f455c65%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035846117-61517d8a-cf55-4e9b-ab8a-a091086c3f57.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22TTzxa%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#TTzxa) 下载地址:

  1. https://www.python.org/downloads/ Python 官网
  2. https://www.python123.io/downloads Python123

    随便哪个都行,哪个下载更快用哪个

Python 语言编写与运行

[2.3.4]--Python程序编写与运行(1).mp4 (29.62MB).mp4%22%2C%22size%22%3A31054698%2C%22taskId%22%3A%22u06b2d952-8a3f-4d18-8899-05400415315%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035846116-6972e5e8-20a6-41f4-8c9c-7c1053dd42eb.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22NzvBY%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#NzvBY)

  • 交互式:对每个输入语句即时运行结果,适合语法练习
  • 文件式:批量执行一组语句并运行结果,编程的主要方式

Python 高级开发环境 VSCode

py vscode.mp4 (31.39MB)

  1. 下载 VSCode:https://code.visualstudio.com/ 全局下一步,完成安装
  2. 安装 VSCode 插件:Code Runner,以便后续快速运行 python 程序

image.png

在 VSCode 中运行 python:

  1. 手动:打开终端,输入 python3 文件相对路径
  2. 自动:使用 Code Runner 插件,右键 Run Code
    1. 可选择运行整个文件内容
    2. 可选择运行部分文件内容

单元小结

[2.3.5]--单元小结(1).mp4 (17.7MB).mp4%22%2C%22size%22%3A18563439%2C%22taskId%22%3A%22u8270977c-bed6-46ba-aff9-edc9828d584%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035846123-8f66216f-877c-48c4-ab5a-47b4b60d8bad.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22rOyT3%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#rOyT3)

  1. Python语言的发展历史
  2. 选取一种系统平台构建Python开发环境
  3. 尝试编写与运行3个Python小程序

实例 1:温度转换

本节的程序能理解多少算多少,在学完下一节「Python程序语法元素分析」之后,要求能够独立完成温度转换 demo 的编写。

“温度转换”问题分析

[2.4.1]--“温度转换”问题分析(1).mp4 (69.43MB).mp4%22%2C%22size%22%3A72804337%2C%22taskId%22%3A%22ua8fb8473-49bf-400a-a761-fa48d4bc034%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035946767-547369f1-01d0-458d-b5c3-ce68e09819a8.mp4%22%2C%22download%22%3Afalse%2C%22spacing%22%3A%22both%22%2C%22id%22%3A%22YuX0d%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#YuX0d) 分析温度转换问题,理解下面这个计算公式是怎么来的
![](https://cdn.nlark.com/yuque/
latex/0024d45c585030cbcc23792df42e9dde.svg#card=math&code=C%3D%28F-32%29%2F1.8&id=MRs1N)
1. Python 基本语法元素 - 图21

问题分析清楚,可以开始编程啦!

“温度转换”实例编写

[2.4.2]--“温度转换”实例编写(1).mp4 (33.36MB).mp4%22%2C%22size%22%3A34980815%2C%22taskId%22%3A%22uac442fd5-ce6b-4353-a668-d5e155f948a%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035946770-ea93e0f4-eb65-4aa4-9ecb-37126b5c301f.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22uGwIz%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#uGwIz)

  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[-1] in ["F", "f"]:
  3. C = (eval(TempStr[0:-1]) - 32) / 1.8
  4. print("转换后的温度是{:.2f}C".format(C))
  5. elif TempStr[-1] in ["C", "c"]:
  6. F = 1.8 * eval(TempStr[0:-1]) + 32
  7. print("转换后的温度是{:.2f}F".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: 82C
  12. 转换后的温度是179.60F
  13. 请输入带有符号的温度值: 28F
  14. 转换后的温度是-2.22C
  15. """

程序逐行分析 TempStr = input("请输入带有符号的温度值: ")
这行代码让用户输入一个带有温度符号(C,c,F,f)的温度值,然后将输入的字符串赋值给变量 TempStr

if TempStr[-1] in ["F", "f"]:
这行代码检查 TempStr 的最后一个字符(即温度单位)是否为 ‘F’ 或 ‘f’。如果是,它意味着用户输入的是华氏温度,然后执行下一行代码进行温度转换。

C = (eval(TempStr[0:-1]) - 32) / 1.8

  1. 这行代码首先通过 TempStr[0:-1] 获取除最后一个字符(即温度单位)外的所有字符
  2. 然后使用 eval() 函数将这些字符(应为数字)转换为数值
  3. 接着,它使用华氏转摄氏的公式 (F - 32) / 1.8 来计算出摄氏温度,然后将结果赋值给变量 C

print("转换后的温度是{:.2f}C".format(C))
这行代码将摄氏温度 C 打印出来,保留两位小数。

elif TempStr[-1] in ["C", "c"]:
如果 TempStr 的最后一个字符不是 ‘F’ 或 ‘f’,代码将检查它是否为 ‘C’ 或 ‘c’。如果是,意味着用户输入的是摄氏温度,然后执行下一行代码进行温度转换。

F = 1.8 * eval(TempStr[0:-1]) + 32
这行代码首先获取除温度单位外的所有字符,并将其转换为数值,然后使用摄氏转华氏的公式 1.8 * C + 32 来计算出华氏温度,然后将结果赋值给变量 F

print("转换后的温度是{:.2f}F".format(F))
这行代码将华氏温度 F 打印出来,保留两位小数。

else:
如果 TempStr 的最后一个字符既不是 ‘F’ 或 ‘f’,也不是 ‘C’ 或 ‘c’,那么代码将执行下一行。

print("输入格式错误")
这行代码在用户输入的温度格式不正确时(即既不是摄氏温度也不是华氏温度)打印出一个错误消息。

“温度转换”举一反三

[2.4.3]--“温度转换”举一反三(1).mp4 (37.77MB).mp4%22%2C%22size%22%3A39603873%2C%22taskId%22%3A%22u104efec7-b735-4a57-9461-a7fd72c8289%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035946770-a3be2634-7b9d-4ee3-9e2f-0f04e0b99e1a.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Ce8YN%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Ce8YN) 基于源程序修改:

  1. 标识改变放在温度数值之前:C82, F28
  2. 标识字符改变为多个字符:82Ce、28Fa
  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[0] in ["F", "f"]:
  3. C = (eval(TempStr[1:]) - 32) / 1.8
  4. print("转换后的温度是C{:.2f}".format(C))
  5. elif TempStr[0] in ["C", "c"]:
  6. F = 1.8 * eval(TempStr[1:]) + 32
  7. print("转换后的温度是F{:.2f}".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: C82
  12. 转换后的温度是F179.60
  13. 请输入带有符号的温度值: F28
  14. 转换后的温度是C-2.22
  15. """
  1. TempStr = input("请输入带有符号的温度值: ")
  2. if TempStr[-2:] in ["Fa", "fa"]:
  3. C = (eval(TempStr[:-2]) - 32) / 1.8
  4. print("转换后的温度是{:.2f}Ce".format(C))
  5. elif TempStr[-2:] in ["Ce", "ce"]:
  6. F = 1.8 * eval(TempStr[:-2]) + 32
  7. print("转换后的温度是{:.2f}Fa".format(F))
  8. else:
  9. print("输入格式错误")
  10. """
  11. 请输入带有符号的温度值: 82Ce
  12. 转换后的温度是179.60Fa
  13. 请输入带有符号的温度值: 28Fa
  14. 转换后的温度是-2.22Ce
  15. """

存在很多“类似温度转换”的问题,虽问题不同,但程序逻辑相似,比如:货币转换、长度转换、重量转换、面积转换

Python 程序语法元素分析

本节很重要,是学习后续内容的基础。
如果你是编程小白,差不多已经到了可以放弃的时刻了。
本节提及的某些知识点仅仅做了简单的说明,这些知识点在后续课程中还会介绍。

至于是哪些知识点,在老师在视频中有提及,直接看视频便是

单元开篇

[2.5.1]--单元开篇(1).mp4 (14.75MB).mp4%22%2C%22size%22%3A15471459%2C%22taskId%22%3A%22u63c80ff4-6ad7-48f5-81f3-17219d66bd3%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035980880-82f64092-bc0b-4d9a-bda2-f71b7f337418.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22Q9BRB%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#Q9BRB)

程序的格式框架重要

[2.5.2]--程序的格式框架(1).mp4 (57.48MB).mp4%22%2C%22size%22%3A60267413%2C%22taskId%22%3A%22u6d8fe637-159b-44da-8cd2-5f381d443c4%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035980871-2e455995-9e96-48df-95e2-c5dd7132cf32.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22XyAYW%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#XyAYW)

  • 代码高亮:编程的色彩辅助体系,不是语法要求
  • 缩进:一行代码开始前的空白区域,表达程序的格式框架
    • 严格明确:缩进是语法的一部分,缩进不正确程序运行错误
    • 所属关系:表达代码间包含和层次关系的唯一手段
    • 长度一致:程序内一致即可,一般用 4 个空格或 1 个 TAB
  • 注释:用于提高代码可读性的辅助性文字,不被执行
    • 单行注释:以 **#** 开头,其后内容为注释
    • 多行注释:以 3 个引号开头和结尾,可以是一组单引号 **'''**,或者一组双引号 **"""**

命名与保留字重要

[2.5.3]--命名与保留字(1).mp4 (107.22MB).mp4%22%2C%22size%22%3A112425887%2C%22taskId%22%3A%22ubd803d1d-6dd4-4c02-a0e4-e595ffe9105%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035980868-c6c4edd7-b00b-4437-b187-508d2a4a72a3.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22MAmBW%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#MAmBW)

  • 变量:程序中用于保存和表示数据的占位符号
  • 赋值符号:=可以使用等号 **=** 向变量赋值或修改值,**=** 被称为赋值符号
  • 命名:关联标识符的过程叫命名
  • 命名规则:大小写字母、数字、下划线和中文等字符及组合
    • 大小写敏感
    • 首字符不能是数字
    • 不能跟保留字重名
  • 保留字:被编程语言内部定义并保留使用的标识符
    黑色的 26 个,在本课程中会涉及到,红色的将不作介绍

数据类型重要

[2.5.4]--数据类型(1).mp4 (190.77MB).mp4%22%2C%22size%22%3A200032773%2C%22taskId%22%3A%22u183723b7-a1b0-431f-b581-bd4d024a165%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035980884-dc7656f3-7778-4bf3-8b9e-1560df005be7.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22hkYtr%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#hkYtr)

  • 数据类型:供计算机程序理解的数据形式
    • 程序设计语言不允许存在语法歧义,需要定义数据的形式
    • 程序设计语言通过一定方式向计算机表达数据的形式
  • 字符串:由0个或多个字符组成的有序字符序列
    • 序号:正向递增序号 和 反向递减序号
      image.png
  • 字符串的使用:字符串可以使用 **[ ]** 获取字符串中一个或多个字符
    • 索引:返回字符串中单个字符 **<字符串>[M]**
    • 切片:返回字符串中一段字符子串 **<字符串>[M: N]**
  • 数字类型:整数和浮点数都是数字类型
    • 整数:数学中的整数,不带小数部分
    • 浮点数:数学中的实数,带有小数部分
  • 列表类型:由 0 个或多个数据组成的有序序列
    • **[]**:列表使用 **[ ]** 表示,采用逗号 **,** 分隔各元素
    • **in**:使用保留字 in 判断一个元素是否在列表中

语句与函数重要

[2.5.5]--语句与函数(1).mp4 (70.12MB).mp4%22%2C%22size%22%3A73526625%2C%22taskId%22%3A%22u8f0a2509-4029-45ec-a8f6-3351722e22f%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035980884-fa43f9c6-b449-4c1c-8590-39179040cfa6.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22q6vh8%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#q6vh8)

  • 赋值语句:由赋值符号构成的一行代码
  • 分支语句:由判断条件决定程序运行方向的语句
  • 函数:根据输入参数产生不同输出的功能过程

Python 程序的输入输出重要

[2.5.6]--Python程序的输入输出(1).mp4 (133.25MB).mp4%22%2C%22size%22%3A139718217%2C%22taskId%22%3A%22uced0cee4-0240-4eab-b791-c7c97da1b23%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688035990213-df11d95d-90b0-4233-9cbc-d7e5c041d305.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22IL182%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#IL182)

  • input():输入函数 input(),用于从控制台获得用户输入的函数
    • 格式:<变量> = input(<提示信息字符串>)
    • 用户输入的信息以字符串类型保存在 <变量>
  • print():输出函数 print()以字符形式向控制台输出结果的函数
    • 格式:print(<拟输出字符串或字符串变量>)
    • 字符串类型的一对引号仅在程序内部使用,输出无引号
    • {} 、格式化
      image.pngimage.png
  • eval():评估函数 eval(),用于去掉参数最外侧引号并执行余下语句的函数
    • 格式:**eval(<字符串或字符串变量>)****image.png

“温度转换”代码分析

[2.5.7]--“温度转换”代码分析(1).mp4 (94.32MB).mp4%22%2C%22size%22%3A98898290%2C%22taskId%22%3A%22u771c4606-9de3-46a4-968b-1db467cca57%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688036009432-a05a57d4-ebd7-4393-a902-07a092aaa5dc.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22sAhUM%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#sAhUM) 1. Python 基本语法元素 - 图36

单元小结

[2.5.8]--单元小结(1).mp4 (28.55MB).mp4%22%2C%22size%22%3A29938953%2C%22taskId%22%3A%22uc43ec568-22f7-416e-9b4f-81f8db1733b%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688036014754-8b3a18f9-b09d-48cc-b0a4-0a9a4fe27664.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22lTmPe%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#lTmPe)

  1. 缩进、注释、命名、变量、保留字
  2. 数据类型、字符串、 整数、浮点数、列表
  3. 赋值语句、分支语句、函数
  4. input()、print()、eval()、 print() 格式化

练习

本节的内容还是蛮重要的,主要目的是自测本周的学习成果,有必要把所有题目都过一遍。

视频中提到有 5 道编程题、15 道单选题。
不过我刚才image.png去找了找,编程题找到了 7 道,单选题找到了 10 道,数量有些对不上

原题在 Python123 平台上。
考虑到你可能比较懒,不想去平台上刷题,因此,我都搬运下来了,连同参考答案一起的那种搬运!可以直接看本文档的后续部分即可。

练习与作业

[2.6.1]--第1周练习与作业(1).mp4 (6.76MB).mp4%22%2C%22size%22%3A7090389%2C%22taskId%22%3A%22u560c7229-b24f-4e5b-aec9-cbb8036b7c4%22%2C%22taskType%22%3A%22upload%22%2C%22url%22%3Anull%2C%22cover%22%3Anull%2C%22videoId%22%3A%22inputs%2Fprod%2Fyuque%2F2023%2F2331396%2Fmp4%2F1688036017957-858e1af6-b928-41a7-a17f-688e442feef9.mp4%22%2C%22download%22%3Afalse%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22g6UWq%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22video%22%7D#g6UWq)

单选题

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

🤔 如何验证编程题自己是否写对了?

编程题的答案往往都是不唯一的,提供的示例代码是“参考答案”而非“标准答案”,是实现程序功能的可能之一。
若想要验证自己的写法是否可行,可以上 Python123 平台提交代码,平台提供了一些测试用例,通过测试用例,意味着可行。

image.png

Hello World 的条件输出

image.png

  1. n = eval(input())
  2. if n == 0:
  3. print("Hello World")
  4. elif n > 0:
  5. print("He\nll\no \nWo\nrl\nd")
  6. else:
  7. for c in "Hello World":
  8. print(c)
  9. """
  10. 0
  11. Hello World
  12. 1
  13. He
  14. ll
  15. o
  16. Wo
  17. rl
  18. d
  19. -1
  20. H
  21. e
  22. l
  23. l
  24. o
  25. """

答案可以有很多种写法。

数值运算

image.png

  1. s = input()
  2. print("{:.2f}".format(eval(s)))
  3. """
  4. 10 + 100
  5. 110.00
  6. 1 / 20
  7. 0.05
  8. """

温度转换

image.png

  1. TempStr = input()
  2. if TempStr[-1] in ['F', 'f']:
  3. C = (eval(TempStr[0:-1]) - 32)/1.8
  4. print("{:.2f}C".format(C))
  5. elif TempStr[-1] in ['C', 'c']:
  6. F = 1.8*eval(TempStr[0:-1]) + 32
  7. print("{:.2f}F".format(F))
  8. else:
  9. print("输入格式错误")

这是本课程的实例1,请注意两点:

  1. 将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;
  2. 采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00。

Hello World I

image.png

  1. print('Hello World')

这个程序太简单,不解释。

数字形式转换 I

image.png

  1. template = "零一二三四五六七八九"
  2. s = input()
  3. for c in s:
  4. print(template[eval(c)], end="")
  5. """
  6. 123
  7. 一二三
  8. 9876543210
  9. 九八七六五四三二一零
  10. """

**print()** 中增加 **end=""** 参数表示输出后不增加换行,多个 **print()** 可以连续输出

温度转换 II

image.png

  1. TempStr = input()
  2. if TempStr[0] in ["F"]:
  3. C = (eval(TempStr[1:]) - 32) / 1.8
  4. print("C{:.2f}".format(C))
  5. elif TempStr[0] in ["C"]:
  6. F = 1.8 * eval(TempStr[1:]) + 32
  7. print("F{:.2f}".format(F))
  8. else:
  9. print() # 不输入任何错误提示

这个实例扩展自实例1,请注意以下三点:

  1. 将输入字符串转换为数字时使用 eval() 函数,不要用 int() 函数,因为输入的数字可能不是整数
  2. 采用 {:.2f} 将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为 10 度,输出为 10.00
  3. TempStr[1:] 表示字符串除首字符外的所有字符

货币转换 I

image.png

  1. CurStr = input()
  2. if CurStr[:3] == "RMB":
  3. print("USD{:.2f}".format(eval(CurStr[3:]) / 6.78))
  4. elif CurStr[:3] in ["USD"]:
  5. print("RMB{:.2f}".format(eval(CurStr[3:]) * 6.78))
  6. """
  7. RMB123
  8. USD18.14
  9. USD20
  10. RMB135.60
  11. """

这个代码是实例1的一个扩展,注意以下3点:

  1. eval() 函数将字符串转换成数字,不能省略
  2. == 表示 “等于”,in 表示成员包含,对于这个题目,由于只允许输入采用全大写方式,两种方法均可
  3. :.2f 输出小数点后两位

补充

摩尔定律扩展阅读

摩尔定律(Moore’s Law)是由英特尔共同创始人戈登·摩尔(Gordon Moore)在 1965 年提出的,最初他观察到集成电路上的晶体管数量每年都会翻倍。后来这个规律被修订为每两年翻倍一次。这一趋势影响了电子设备的性能,包括处理速度、内存容量、甚至像像素等因素,导致了电子设备功能的快速增强和尺寸、成本的快速减小。

在过去的几十年中,摩尔定律一直在推动着技术的进步,但在最近的一段时间内,这一定律开始遇到了物理和经济方面的挑战。

  • 物理层面的问题:晶体管尺寸接近了原子级别,使得我们越来越难以继续缩小其尺寸
  • 没钱导致的问题:制造更先进的集成电路的成本也在不断上升

因此,虽然在技术上可能仍然可以遵循摩尔定律,但在经济上,这种情况可能已经不再可行。

不过,也有一些新的技术可能会帮助我们继续推动技术的发展,比如量子计算、光子计算以及新型半导体材料等。尽管我们可能不能再严格按照摩尔定律进行,但这并不意味着计算能力的发展会停止,只是可能不再是过去那样的线性增长。

综上,可以说摩尔定律在经济和物理层面上遭遇挑战,但科技进步的趋势并未改变。

记得摩尔定律这玩意儿在《三体》里边出现过,貌似小说中提到,这玩意儿在一些年后已失效了,由于印象中有这么个设定,正好这节又提到了摩尔定律,好奇之下就简单查了查…… 没想到查阅的结果也提到了“物理学”,哈哈…… 又想起《三体》中提到的 —— 物理学是一切学科的基础!

“摄氏温度”、“华氏温度”扩展阅读

摄氏温度(Celsius),又称为摄氏度或华氏度,是目前国际上最常用的温度计量单位之一。在这个温度尺度上,0度是水的冰点(在标准大气压下),而100度是水的沸点。因此,摄氏温度尺度在日常生活和大多数科学研究中得到了广泛的使用。

华氏温度(Fahrenheit),是主要在美国使用的一种温度尺度。在华氏温度尺度中,32度是水的冰点,212度是水的沸点(都在标准大气压下)。这意味着华氏温度尺度的“度”比摄氏温度尺度的“度”要小,换句话说,在同样的温度变化下,华氏温度的变化量会比摄氏温度的变化量大。

这两种温度尺度可以互相转换,转换公式如下:

  • 从华氏温度转换到摄氏温度:C = (F - 32) * 5/9
  • 从摄氏温度转换到华氏温度:F = C * 9/5 + 32

其中,C 是摄氏温度,F 是华氏温度。