简述
本章节,我们会通过经典的 温度转换实例 尝试 Python 编程,目标是掌握 Python 基本语法元素,能够编写 10 行代码。
TIP:知识点讲解顺序 :::warning 温 馨 提 示
看不懂的内容先跳过,对于一些基础知识点的详细介绍在后续课程中。
内容讲解顺序问题:
- 1.3 中,介绍了一个温度转换的 demo,但是对于这个 demo 相关知识点的介绍在 1.4 中,并且在 1.4 中也对 1.3 的 demo 中的每一行代码做了详细的说明。
- 字符串的相关知识点在本节用到的比较多,和字符串相关的内容,比如切片、索引、格式化…… 会在 3. 基本数据类型 章节中介绍。
- 函数的相关知识点,会在 5. 函数和代码复用 中介绍。
- ……
仔细观察老师的讲课特点不难发现这么一个规律:先提供代码,再介绍相关知识点
其实后续的很多章节知识点的介绍,也是满足这个行为逻辑的,老师并不会先把知识点给我们掰扯清楚,然后去写实例。如果在学习过程中,遇到不理解的,无需到处查资料,死磕,影响学习进度,直管往下学便是,等学完所有内容后再磕不理解的点。
如果你在学习时,习惯是弄懂每一个知识点再往后学,那么这个温馨提示对你或许有点帮助…… :::
课件
代码汇总
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-1] in ["F", "f"]:
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ["C", "c"]:
F = 1.8 * eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: 82C
转换后的温度是179.60F
请输入带有符号的温度值: 28F
转换后的温度是-2.22C
"""
TempStr = input("请输入带有符号的温度值: ")
if TempStr[0] in ["F", "f"]:
C = (eval(TempStr[1:]) - 32) / 1.8
print("转换后的温度是C{:.2f}".format(C))
elif TempStr[0] in ["C", "c"]:
F = 1.8 * eval(TempStr[1:]) + 32
print("转换后的温度是F{:.2f}".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: C82
转换后的温度是F179.60
请输入带有符号的温度值: F28
转换后的温度是C-2.22
"""
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-2:] in ["Fa", "fa"]:
C = (eval(TempStr[:-2]) - 32) / 1.8
print("转换后的温度是{:.2f}Ce".format(C))
elif TempStr[-2:] in ["Ce", "ce"]:
F = 1.8 * eval(TempStr[:-2]) + 32
print("转换后的温度是{:.2f}Fa".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: 82Ce
转换后的温度是179.60Fa
请输入带有符号的温度值: 28Fa
转换后的温度是-2.22Ce
"""
num = 3.14159
print("The number is: {:.2f}".format(num))
# The number is: 3.14
num = 3.14159
print(f"The number is: {num:.2f}")
# The number is: 3.14
# 在 Python 3.6 及以上版本中,推荐使用这种 f-string 的方式来格式化字符串
n = eval(input())
if n == 0:
print("Hello World")
elif n > 0:
print("He\nll\no \nWo\nrl\nd")
else:
for c in "Hello World":
print(c)
"""
0
Hello World
1
He
ll
o
Wo
rl
d
-1
H
e
l
l
o
"""
s = input()
print("{:.2f}".format(eval(s)))
"""
10 + 100
110.00
1 / 20
0.05
"""
template = "零一二三四五六七八九"
s = input()
for c in s:
print(template[eval(c)], end="")
"""
123
一二三
9876543210
九八七六五四三二一零
"""
CurStr = input()
if CurStr[:3] == "RMB":
print("USD{:.2f}".format(eval(CurStr[3:]) / 6.78))
elif CurStr[:3] in ["USD"]:
print("RMB{:.2f}".format(eval(CurStr[3:]) * 6.78))
"""
RMB123
USD18.14
USD20
RMB135.60
"""
第 1 周课程导学
课前复习
.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) 学习本课程,你需要满足以下基本要求:
- 会使用计算机和 office 软件
- 阅读简单英文内容(至少英语 3 级及以上)
- 熟练使用 Web 浏览器
- 每周至少安排 1 - 2 个小时来撸代码,连续 9 周
本课概要
.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:输出 —— 将处理结果返回
程序设计基本方法
单元开篇
.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)
计算机与程序设计
.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) 计算机与程序设计:
- 计算机:是根据指令操作数据的设备
- 计算机的发展:计算机的发展参照摩尔定律,表现为指数方式
- 摩尔定律:计算机发展历史上最重要的预测法则
- 程序设计:是计算机可编程性的体现
- 程序设计语言:是一种用于交互(交流)的人造语言
编译和解释
.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) 计算机执行源程序的两种方式:
- 编译
- 解释
根据执行方式不同,编程语言分为两类:
- 静态语言
- 脚本语言
编译和解释
- 编译:将源代码一次性转换成目标代码的过程
- 解释:将源代码逐条转换成目标代码同时逐条运行的过程
静态语言和脚本语言
- 静态语言:编译执行,比如:C/C++、Java……
- 脚本语言:解释执行,比如:Python、JavaScript、PHP……
视频中最后提及的一点有些意思,静态语言的源码容易丢……
确实,静态语言编译完成后,我们直接拿编译产物就可以解决问题了,而脚本语言则不同,它需要解释执行,解释的内容自然就是我们所编写的源代码。
简言之呢,就是前者(静态语言)解决问题的时候无需源码,后者(脚本语言)需要源码。因此,相较而言,静态语言的源码被搞丢的可能性比较大……
程序的基本编写方法
.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 个精简步骤:
- 确定 IPO:明确计算部分及功能边界
- 编写程序:将计算求解的设计变成现实
- 调试程序:确保程序按照正确逻辑能够正确运行
计算机编程
.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) 为什么要学习计算机编程?
- 编程能够训练思维
- 编程能够增进认识
- 编程能够带来乐趣
- 编程能够提高效率
- 编程带来就业机会
单元小结
.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) 小结:
- 计算机的功能性和可编程性
- 编译和解释、静态语言和脚本语言
- IPO、理解问题的计算部分
- 掌握计算机编程的价值
Python 开发环境配置
本节介绍 python 开发环境的配置,从 0 到 1 带着我们去下载并安装 python,并且演示了如何运行 python 程序。
我更倾向于在 VSCode 中编写 python 程序,但是如何在 VSCode 中初始化 python 的学习环境,貌似老师并没有录制视频来加以说明。为此,自己简单录制了一个 5min 时长左右的演示视频,并介绍了一款快速运行脚本的 VSCode 插件 Code Runner,有需要的小伙伴直接查看视频即可。
温馨提示:
如果你在搭建 Python 的开发环境时遇到了问题,不妨参考菜鸟教程上的这两篇文章:
Python3 环境搭建 | 菜鸟教程
Python VScode 配置 | 菜鸟教程
单元开篇
.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)
Python 语言概述
.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
.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) 下载地址:
- https://www.python.org/downloads/ Python 官网
- https://www.python123.io/downloads Python123
随便哪个都行,哪个下载更快用哪个
Python 语言编写与运行
.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
- 下载 VSCode:https://code.visualstudio.com/ 全局下一步,完成安装
- 安装 VSCode 插件:Code Runner,以便后续快速运行 python 程序
在 VSCode 中运行 python:
- 手动:打开终端,输入
python3 文件相对路径
- 自动:使用 Code Runner 插件,右键
Run Code
- 可选择运行整个文件内容
- 可选择运行部分文件内容
单元小结
.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)
- Python语言的发展历史
- 选取一种系统平台构建Python开发环境
- 尝试编写与运行3个Python小程序
实例 1:温度转换
本节的程序能理解多少算多少,在学完下一节「Python程序语法元素分析」之后,要求能够独立完成温度转换 demo 的编写。
“温度转换”问题分析
.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)
问题分析清楚,可以开始编程啦!
“温度转换”实例编写
.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)
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-1] in ["F", "f"]:
C = (eval(TempStr[0:-1]) - 32) / 1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ["C", "c"]:
F = 1.8 * eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: 82C
转换后的温度是179.60F
请输入带有符号的温度值: 28F
转换后的温度是-2.22C
"""
程序逐行分析
TempStr = input("请输入带有符号的温度值: ")
这行代码让用户输入一个带有温度符号(C,c,F,f)的温度值,然后将输入的字符串赋值给变量 TempStr
。
if TempStr[-1] in ["F", "f"]:
这行代码检查 TempStr
的最后一个字符(即温度单位)是否为 ‘F’ 或 ‘f’。如果是,它意味着用户输入的是华氏温度,然后执行下一行代码进行温度转换。
C = (eval(TempStr[0:-1]) - 32) / 1.8
- 这行代码首先通过
TempStr[0:-1]
获取除最后一个字符(即温度单位)外的所有字符 - 然后使用
eval()
函数将这些字符(应为数字)转换为数值 - 接着,它使用华氏转摄氏的公式
(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("输入格式错误")
这行代码在用户输入的温度格式不正确时(即既不是摄氏温度也不是华氏温度)打印出一个错误消息。
“温度转换”举一反三
.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) 基于源程序修改:
- 标识改变放在温度数值之前:C82, F28
- 标识字符改变为多个字符:82Ce、28Fa
TempStr = input("请输入带有符号的温度值: ")
if TempStr[0] in ["F", "f"]:
C = (eval(TempStr[1:]) - 32) / 1.8
print("转换后的温度是C{:.2f}".format(C))
elif TempStr[0] in ["C", "c"]:
F = 1.8 * eval(TempStr[1:]) + 32
print("转换后的温度是F{:.2f}".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: C82
转换后的温度是F179.60
请输入带有符号的温度值: F28
转换后的温度是C-2.22
"""
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-2:] in ["Fa", "fa"]:
C = (eval(TempStr[:-2]) - 32) / 1.8
print("转换后的温度是{:.2f}Ce".format(C))
elif TempStr[-2:] in ["Ce", "ce"]:
F = 1.8 * eval(TempStr[:-2]) + 32
print("转换后的温度是{:.2f}Fa".format(F))
else:
print("输入格式错误")
"""
请输入带有符号的温度值: 82Ce
转换后的温度是179.60Fa
请输入带有符号的温度值: 28Fa
转换后的温度是-2.22Ce
"""
存在很多“类似温度转换”的问题,虽问题不同,但程序逻辑相似,比如:货币转换、长度转换、重量转换、面积转换
Python 程序语法元素分析
本节很重要,是学习后续内容的基础。
如果你是编程小白,差不多已经到了可以放弃的时刻了。
本节提及的某些知识点仅仅做了简单的说明,这些知识点在后续课程中还会介绍。
至于是哪些知识点,在老师在视频中有提及,直接看视频便是
单元开篇
.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)
程序的格式框架重要
.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 个引号开头和结尾,可以是一组单引号
**'''**
,或者一组双引号**"""**
- 单行注释:以
命名与保留字重要
.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)
- 变量:程序中用于保存和表示数据的占位符号
- 赋值符号:
=
,可以使用等号**=**
向变量赋值或修改值,**=**
被称为赋值符号 - 命名:关联标识符的过程叫命名
- 命名规则:大小写字母、数字、下划线和中文等字符及组合
- 大小写敏感
- 首字符不能是数字
- 不能跟保留字重名
- 保留字:被编程语言内部定义并保留使用的标识符
数据类型重要
.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个或多个字符组成的有序字符序列
- 序号:正向递增序号 和 反向递减序号
- 序号:正向递增序号 和 反向递减序号
- 字符串的使用:字符串可以使用
**[ ]**
获取字符串中一个或多个字符- 索引:返回字符串中单个字符
**<字符串>[M]**
- 切片:返回字符串中一段字符子串
**<字符串>[M: N]**
- 索引:返回字符串中单个字符
- 数字类型:整数和浮点数都是数字类型
- 整数:数学中的整数,不带小数部分
- 浮点数:数学中的实数,带有小数部分
- 列表类型:由 0 个或多个数据组成的有序序列
**[]**
:列表使用**[ ]**
表示,采用逗号**,**
分隔各元素**in**
:使用保留字 in 判断一个元素是否在列表中
语句与函数重要
.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 程序的输入输出重要
.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(<拟输出字符串或字符串变量>)
- 字符串类型的一对引号仅在程序内部使用,输出无引号
- 槽
{}
、格式化
- 格式:
eval()
:评估函数eval()
,用于去掉参数最外侧引号并执行余下语句的函数- 格式:
**eval(<字符串或字符串变量>)**
**
- 格式:
“温度转换”代码分析
.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)
单元小结
.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)
- 缩进、注释、命名、变量、保留字
- 数据类型、字符串、 整数、浮点数、列表
- 赋值语句、分支语句、函数
- input()、print()、eval()、 print() 格式化
练习
本节的内容还是蛮重要的,主要目的是自测本周的学习成果,有必要把所有题目都过一遍。
视频中提到有 5 道编程题、15 道单选题。
不过我刚才去找了找,编程题找到了 7 道,单选题找到了 10 道,数量有些对不上
原题在 Python123 平台上。
考虑到你可能比较懒,不想去平台上刷题,因此,我都搬运下来了,连同参考答案一起的那种搬运!可以直接看本文档的后续部分即可。
练习与作业
.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)
单选题
🤔 如何验证编程题自己是否写对了?
编程题的答案往往都是不唯一的,提供的示例代码是“参考答案”而非“标准答案”,是实现程序功能的可能之一。
若想要验证自己的写法是否可行,可以上 Python123 平台提交代码,平台提供了一些测试用例,通过测试用例,意味着可行。
Hello World 的条件输出
n = eval(input())
if n == 0:
print("Hello World")
elif n > 0:
print("He\nll\no \nWo\nrl\nd")
else:
for c in "Hello World":
print(c)
"""
0
Hello World
1
He
ll
o
Wo
rl
d
-1
H
e
l
l
o
"""
答案可以有很多种写法。
数值运算
s = input()
print("{:.2f}".format(eval(s)))
"""
10 + 100
110.00
1 / 20
0.05
"""
温度转换
TempStr = input()
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("{:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("{:.2f}F".format(F))
else:
print("输入格式错误")
这是本课程的实例1,请注意两点:
- 将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;
- 采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00。
Hello World I
print('Hello World')
这个程序太简单,不解释。
数字形式转换 I
template = "零一二三四五六七八九"
s = input()
for c in s:
print(template[eval(c)], end="")
"""
123
一二三
9876543210
九八七六五四三二一零
"""
**print()**
中增加 **end=""**
参数表示输出后不增加换行,多个 **print()**
可以连续输出。
温度转换 II
TempStr = input()
if TempStr[0] in ["F"]:
C = (eval(TempStr[1:]) - 32) / 1.8
print("C{:.2f}".format(C))
elif TempStr[0] in ["C"]:
F = 1.8 * eval(TempStr[1:]) + 32
print("F{:.2f}".format(F))
else:
print() # 不输入任何错误提示
这个实例扩展自实例1,请注意以下三点:
- 将输入字符串转换为数字时使用
eval()
函数,不要用int()
函数,因为输入的数字可能不是整数 - 采用
{:.2f}
将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为 10 度,输出为 10.00 TempStr[1:]
表示字符串除首字符外的所有字符
货币转换 I
CurStr = input()
if CurStr[:3] == "RMB":
print("USD{:.2f}".format(eval(CurStr[3:]) / 6.78))
elif CurStr[:3] in ["USD"]:
print("RMB{:.2f}".format(eval(CurStr[3:]) * 6.78))
"""
RMB123
USD18.14
USD20
RMB135.60
"""
这个代码是实例1的一个扩展,注意以下3点:
eval()
函数将字符串转换成数字,不能省略==
表示 “等于”,in
表示成员包含,对于这个题目,由于只允许输入采用全大写方式,两种方法均可:.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 是华氏温度。