第1章 Python基本语法元素
实例:温度转换
- 缩进、注释、命名、变量、保留字
- 数据类型、字符串、整数、浮点数、列表
- 赋值语句、分支语句、函数
- input()、print()、eval()、print()格式化
小例:计算圆面积、绘制同切圆、绘制五角星
文章首部添加 @TOC
(注:编辑器会根据文章标题自动生成目录)
-1.1 程序设计基本方法
1.1.1 计算机与程序设计
功能性
可编程性
发展:摩尔定律 指数方式
程序设计语言 = 编程语言
编程语言分为2类:低级语言(操作计算机硬件)、高级语言(接近自然语言,在不同计算机上表达方式相同)
低级语言分为2类:机器语言、汇编语言
机器语言:2进制
汇编语言:不同计算机汇编指令不同
通用编程语言 P7
1.1.2 编译和解释 P8
源代码:采用某种编程语言编写的计算机程序,人类可读
【咱们现在写的】
eg. result = 2 + 3
指的是:将2+3的运算结果赋给一个变量叫result
目标代码:计算机可直接执行,人类不可读(专家除外)
【计算机看的二进制】
eg. 1101001000111011
指的是:2+3的运算结果
编程语言的执行方式
两种:编译和解释
编译和解释
编译:一次性翻译,之后不再需要源代码(类似英文翻译)
【全翻译完了计算机再去“看”】
编译器:compiler
解释:每次程序运行时 随翻译随执行(类似实时的同声传译)(每次都需要源代码参与)
【翻译一句“看”一句;外国人在旁边一边说,咱一边翻译,外国人必须在这儿】
解释器:interpreter
因此根据执行方式不同,对应分类为⬇️
静态语言和脚本语言
静态语言:使用编译执行的编程语言
eg. C/C++语言、Java语言
优势:编译器一次性生成目标代码,优化更充分(程序运行速度更快)
(不需要编译器,在同类型操作系统上使用灵活)
(编译器会集成优化技术,使生成的目标代码具备更好的执行效率,解释器不能,因为代码优化技术会消耗运行时间)
详见P8
脚本语言:使用解释执行的编程语言
eg. Python、JavaScript、PHP
优势:执行程序时需要源代码,维护更灵活(源代码在,维护灵活、跨多个操作系统平台)
(保留源代码,可移植,方便纠错和维护)
详见P9
【一个速度快,一个方便找bug和复制粘贴】
1.1.3 程序的基本编写方法 P22
IPO——程序的基本编写方法
-I:Input 输入,程序的输入 P22
-P:Process 处理,程序的主要逻辑 P23
-处理是程序对输入数据进行计算产生输出结果的过程
-处理方法统称为算法,它是程序最重要的部分
-算法是一个程序的灵魂
-O:Output 输出,程序的输出 P22
问题的计算部分:一个待解决问题中,可以用程序辅助完成的部分
计算机只能解决计算问题,即问题的计算部分
编程解决问题的步骤
6个步骤
分析问题:分析问题的计算部分,想清楚(解决这个问题的哪一个需求?)
划分边界:划分问题的功能边界,规划IPO
设计算法:设计问题的求解算法,关注算法
编写程序:编写问题的计算程序,编程
调试测试:调试程序使正确运行,运行调试
升级维护:适应问题的升级维护,更新完善
求解计算问题的精简步骤
3个精简步骤
- 确定IPO:明确计算部分及功能边界
- 编写程序:将计算求解的设计变成现实
- 调试程序:确保程序按照正确逻辑能够正确运行
1.1.4 计算机编程
Q:编程很难学吗?A:掌握方法就很容易!
- 首先,掌握编程语言的语法,熟悉基本概念和逻辑
- 其次,结合计算问题思考程序结构,会使用编程套路
- 最后,参照案例多练习多实践,学会举一反三次
-1.2 Python开发环境配置
1.2.1 Python语言概述
1.2.2 Python基本开发环境IDLE
Python官方提供 适用于小规模程序开发
Python官方环境:Python解释器+ IDLE开发环境
轻量级:只有几十MB大小,使用灵活
功能丰富:编辑器+交互环境+标准库+库安装工具…
1.2.3 Python程序编写与运行
Python的两种编程方式:交互式和文件式
- 交互式:对每个输入语句即时运行结果,适合语法练习
- 文件式:批量执行一组语句并运行结果,编程的主要方式
1.2.4 Python高级开发环境VSCode
VSCode:Visual Studio Code
微软出品,与Visual Studio同质量的专业级开发工具
跨平台免费工具:支持Windows/Linux/MacOS
编辑器模式:轻量级、功能丰富、可扩展性强…
第一步:安装IDLE环境;第二步:安装VSCode
- 下载地址:https://code.visualstudio.com
工具大小约50MB
-1.3 实例1:温度转换
1.3.1 需求分析
两种温度体系的转换
1.3.2 问题分析
该问题中计算部分的理解和确定
- 理解1:直接将温度值进行转换
理解2:将温度信息发布的声音或图像形式进行理解和转换(用程序去处理声音或图像形式的输入格式)
理解3:监控温度信息发布渠道,实时获取并转换温度值(爬虫爬取)
分析问题
采用理解1:直接将温度值进行转换
温度数值需要标明 温度体系,即摄氏度或华氏度
转换 后 也需要给出温度体系
划分边界
- 输入:带 华氏或摄氏 标志 的温度值
- 处理:根据温度标志 选择适当的 温度转换算法
- 输出:带 摄氏或华氏 标志 的温度值
输入输出格式设计
标识放在温度 最后,F表示华氏度,C表示摄氏度
82F表示华氏82度,28C表示摄氏28度
设计算法
根据华氏和摄氏温度定义,利用转换公式如下:
C = ( F –32 ) / 1.8
F = C * 1.8 + 32
其中,C表示摄氏温度,F表示华氏温度
1.3.3 实例编写
TemStr = input("请输入带有符号的温度值:")
if TemStr[-1] in ['F', 'f']:
C = (eval(TemStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TemStr[-1] in ['C', 'c']:
F = 1.8*eval(TemStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
运行效果:
(base) liuruideMBP:songtian liurui$ python3 TempConvert.py
请输入带有符号的温度值:82F
转换后的温度是27.78C
(base) liuruideMBP:songtian liurui$ python3 TempConvert.py
请输入带有符号的温度值:28C
转换后的温度是82.40F
1.3.4 举一反三
Python语法元素理解【Why第一个学这个,How】
温度转换程序共10行代码,但包含很多语法元素
清楚理解这10行代码能够快速入门Python语言
参考框架结构、逐行分析、逐词理解
输入输出的改变【格式可以改~】
- 温度数值与温度标识之间 关系 的设计可以改变
- 标识改变 放在温度数值之 前:C82, F28
- 标识字符 改变 为多个字符:82Ce、28Fa
计算问题的扩展【转换问题!!!】
- 温度转换问题是各类转换问题的代表性问题
- 货币转换、长度转换、重量转换、面积转换…
- 问题不同,但程序代码相似
-1.4 Python程序语法元素分析
目录:
- 程序的格式框架
- 命名与保留字
- 数据类型
- 语句与函数
- Python程序的输入输出
- "温度转换"代码分析
1.4.1 程序的格式框架
目录:
- 缩进、注释、命名、变量、保留字
- 数据类型、字符串、整数、浮点数、列表
- 赋值语句、分支语句、函数
- input()、print()、eval()、print()格式化
代码高亮
:编程的色彩辅助体系,不是语法要求【帮你更好读代码和找bug】
- 根据不同含义
- 在不同环境中,表现不同(比如颜色不同)
- 本课程使用IDLE默认色彩体系
- 有没有高亮or不同颜色,对代码运行没有影响
TemStr = input("请输入带有符号的温度值:")
if TemStr[-1] in ['F', 'f']:
C = (eval(TemStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TemStr[-1] in ['C', 'c']:
F = 1.8*eval(TemStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
缩进
:一行代码开始前的空白区域,表达程序的格式框架
缩进表达程序的格式框架
- 严格明确:缩进是语法的一部分,缩进不正确,程序运行错误
- 所属关系:表达代码间 包含和层次关系 的**唯一**手段
- 长度一致:(在单一)程序内一致即可,一般用4个空格或1个TAB
注释
:用于提高代码可读性的辅助性文字,不被执行
python两种:
- 多行注释:以==’’’==开头和结尾【三个单引号】
'''这是多行注释第一行
这是多行注释第二行'''
1.4.2 命名与保留字
变量
:程序中用于保存和表示数据的占位符号
- 变量采用 标识符(名字) 来表示,关联标识符的过程叫 命名
- 可以使用 等号(=) 向变量 赋 值或 修改 值,= 被称为 赋值符号
- eg. TempStr = “82F”——即#向变量TempStr赋值"82F"
- 单一等号以后都称为赋值符号
命名
:关联标识符的过程
- 命名规则: 大小写字母、数字、下划线和中文等字符及组合
如: TempStr, Python_Great, 这是门Python好课
- 注意事项: 大小写敏感(区分大小写)、首字符不能是数字、不与保留字相同
如: Python和python是不同变量,123Python是不合法的
保留字
:被编程语言内部定义并保留使用的标识符
- Python语言有35个保留字(也叫关键字)
- 保留字是编程语言的基本单词,大小写敏感
- eg. if是保留字,If 是变量
- 红色本门课不会涉及
- True、False、None 唯三首字母大写的
1.4.3 数据类型
数据类型
:字符串、整数、浮点数、列表
10,011,101 该如何解释呢?【可有多种理解】
这是一个二进制数字 或者 十进制数字
作为二进制数字,10,011,101的值是十进制157
这是一段文本 或者 用逗号,分隔的3个数字
作为一段文本,逗号是文本中的一部分,一共包含10个字符
供计算机程序理解的数据形式
- 程序设计语言 不允许 存在语法歧义,需要定义数据的形式
需要给10,011,101关联 一种 计算机可以理解的形式
- 程序设计语言通过一定方式向计算机表达数据的形式
"123"表示文本字符串123,123则表示数字123
10,011,101
- 整数类型:10011101
- 字符串类型:“10,011,101”
- 列表类型:[10, 011, 101]
字符串
:由0个或多个字符组成的有序字符序列
- 字符串由一对单引号或一对双引号表示(单引号和双引号无区别)
"请输入带有符号的温度值: "或者’C’
- 字符串是字符的有序序列,可以对其中的字符进行索引【有顺序,可抽取】
"请"是"请输入带有符号的温度值: "的第0个字符
(在字符串中,编号是从0开始的。在计算机很多概念中,如果涉及到序号,一般都是从0开始,而不是从1开始。)
字符串的使用:
使用[ ]获取字符串中 一个或多个 字符
- 索引:返回字符串中单个字符
<字符串>[M]
在字符串后面加上一个方括号,方括号中间给出序号位置
eg. "请输入带有符号的温度值: "[0]
eg. TempStr[-1]
- 切片:返回字符串中 一段 字符 子串
<字符串>[M: N]
在字符串后面加上一个方括号,方括号中间给出序号区间
(N不取!)
eg. "请输入带有符号的温度值: "[1:3]——取出第一个和第二个字符,没有第三个!!!
eg. TempStr[0:-1]——从0开始的,不到最后一个,到最后第二个!!!
数字类型
:整数和浮点数
- 整数:数学中的整数(包含正负)
32或者-89
- 浮点数:数学中的实数,带有小数部分(包含正负)
1.8或者-1.8 或者-1.0
列表类型
:由0个或多个数据组成的有序序列
- 列表使用[ ]表示,采用逗号(,)分隔各元素
eg. [‘F’,‘f’]表示两个元素’F’和’f’
- 使用保留字in 判断一个元素是否在列表中
字符串[序号] in [列表]
eg. TempStr[-1] in [‘C’, ‘c’]——判断前者是否与列表中某个元素相同
若存在 在该列表,产生一个True
若不存在,返回一个False
1.4.4 语句与函数
赋值语句
:由赋值符号构成的一行代码
- 赋值语句用来给变量赋予新的数据值
C=(eval(TempStr[0:-1])-32)/1.8 ——#将右侧运算结果赋给变量C
- 赋值语句右侧的数据类型同时作用于变量
TempStr=input("")——#input()返回一个字符串,TempStr也是字符串
分支语句
:由判断条件 决定 程序运行方向的语句
- 使用保留字if elif else构成条件判断的分支结构
if TempStr[-1] in [‘F’,‘f’]:
#如果条件为True则执行冒号后语句
#如果条件为False则跳过冒号后语句
- 每个保留字所在行最后存在一个冒号(,语法的一部分
冒号及后续缩进 用来表示 后续语句与条件的 所属关系
函数
:根据 输入参数 产生 不同 输出 的功能过程
(用一个名字和一个括号组成)
- 类似数学中的函数,y = f(x)
eg. print(“输入格式错误”) —— # 打印输出"输入格式错误"
- 函数采用==<函数名>(<参数>) ==方式使用
eg. eval(TempStr[0:-1]) —— # TempStr[0:-1]是参数
1.4.5 Python程序的输入输出
输入函数input()
:从 控制台 获得 用户输入 的函数
- input()函数的使用格式:
<变量> =input(<提示信息字符串>)
- 用户输入的信息以字符串类型保存在<变量>中
eg. TempStr = input(“请输入”)
—— # TempStr保存用户输入的信息
"请输入"不是TemStr的一部分
输出函数print()
:以 字符形式 向控制台 输出结果 的函数
- print()函数的基本使用格式:
print(<拟输出字符串或字符串变量>)
- 字符串类型的一对引号仅在程序内部使用,输出无引号
eg. print(“输入格式错误”)
—— # 向控制台输出 输入格式错误
print()函数的格式化:
评估函数eval()
:去掉参数最外侧引号并执行余下语句的函数
1.4.6 "温度转换"代码分析
TemStr = input("请输入带有符号的温度值:")
if TemStr[-1] in ['F', 'f']:
C = (eval(TemStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TemStr[-1] in ['C', 'c']:
F = 1.8*eval(TemStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
- 第1行:注释
- 第2行:使用input函数让用户输入,获得信息。以字符串形式保存在变量TemStr。
- 第3行:if表达一个分支语句,判断后面的条件。如果变量TemStr最后一个字符是F或者f,那么用户输入的是华氏度,进入第4行和第5行进行转换(如82F);如果不是,进入第6行。
- 第4行:用eval评估函数,除去TemStr函数的最后一位(也就是F或者f,得到"82"),并讲字符串转换为整数(82),可以参与整数间的运算,转换为一个摄氏度。
- 第5行:将转换得到的 摄氏温度值,赋给变量C,并用print函数将变量C输出出来。
- 【foramt:把参数按位置顺序来填充到字符串中,拼接字符串】
- 第6行:如果变量TemStr最后一个字符是C或者c,那么用户输入的是摄氏度,进入第7行和第8行进行转换;如果不是,进入第10行。
- 第7行:
- 第8行:
- 第9行:分支语句else
- 第10行:到else之后,else语句默认执行
附录:format()的用法
-
作为拼接字符串进行使用
‘{}’.format(变量)
-
保留小数
‘{:.2f}’.format(12.333) 保留小数点后两位
‘{a:.2f}’.format(a=12.333)
-
百分比格式
‘{:.2%}’.format(0.333)
-
进制转换
‘{0:x}’.format(20) 转换成十六进制
‘{0:o}’.format(20) 转换成八进制
进制转换的时候用{0:进制}
-
对齐方式
‘{a:<10}’.format(a=12.3,b=13.44) 左对齐,长度为10
‘{a:0>10}’.format(a=12.3,b=13.44) 右对齐…
‘{a:0^10}’.format(a=12.3,b=13.44) 居中对齐…
‘{a:0<10}’.format(a=12.3,b=13.44) 数字补x (填充左边)
-
转义{和}符号
‘{{ hello{0} }}’.format('python’)
f = ’ hello {0} '.format
f('python’)
作者:光游骑兵
作业