一、Python基础语法
1、字面量
- 掌握字面量的含义
- 了解常见的字面量类型
- 基于print语句完成各类字面量的输出
什么是字面量?
字面量:在代码中,被写下来的的固定的值,称之为字面量
常用的值类型
Python中常用的有6种值(数据)的类型
字符串
字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
Python中,字符串需要用双引号(")包围起来。
被引号包围起来的,都是字符串。
如何在代码中写它们
我们目前要学习的这些类型,如何在代码中表达呢?
总结:
- 掌握字面量的含义
代码中,被写在代码中的固定的值,称之为字面量
- 常见的字面量类型
我们目前了解:整数、浮点数、字符串这三类即可
- 如何基于print语句完成各类字面量的输出
print(字面量),如:
print(10),输出整数10
print(13.14),输出浮点数13.14
2、注释
- 了解注释的作用
- 能够使用单行注释和多行注释
注释的作用
注释:在程序代码中对程序代码进行解释说明的文字。
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够
大大增强程序的可读性。
注释的分类
单行注释:以 #开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用
注意,#号和注释内容一般建议以一个空格隔开
多行注释: 以 一对三个双引号 引起来 ( )来解释说明一段代码的作用使用方法
注释实战
按照如图所示,对代码添加
- 单行注释以及
- 多行注释
添加完成注释后,执行程序
验证注释是否对程序产生影响
总结:
- 注释的作用是?
注释是代码中的解释型语句,用来对代码内容进行注解
注释不是代码,不会被程序执行
- 单行注释如何定义?
通过 # 号定义,在#号右侧的所有内容均作为注释
建议在#号和注释内容之间,间隔一个空格
单行注释一般用于对一行或一小部分代码进行解释
- 多行注释如何定义?
通过一对三个引号来定义("""注释内容"""),引号内部均是注释,可以换行
多行注释一般对:Python文件、类或方法进行解释
3、变量
- 理解变量的作用及特征
- 掌握变量的定义方式
什么是变量
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。
简单的说,变量就是在程序运行时,记录数据用的
变量的特征
变量,从名字中可以看出,表示"量"是可变的。
所以,变量的特征就是,变量存储的数据,是可以发生改变的。
思考
为什么必须要使用变量?
都是输出内容,直接输出不行吗?
变量的目的是存储运行过程的数据
存储的目的是为了:重复使用
总结:
1、变量是什么,有什么作用?
变量就是在程序运行时,记录数据用的
- 变量的定义格式是?
变量名 = 变量值
- 变量的特征是?
变量的值可以改变
- print语句如何输出多份内容?
print(内容1, 内容2, ......, 内容N)
- Python中如何做减法?
使用符号 - 即可完成减法运算
拓展:加(+)、减(-)、乘(*)、除(/)
4、数据类型:
- 掌握使用type()语句查看数据的类型
- 理解变量无类型而数据有类型的概念
在学习字面量的时候,我们了解到:数据是有类型的。
目前在入门阶段,我们主要接触如下三类数据类型:
string、int、float这三个英文单词,就是类型的标准名称。
type()语句
那么,问题来了,如何验证数据的类型呢?
我们可以通过type()语句来得到数据的类型:
语法:
type(被查看类型的数据)
type()语句的使用方式
- 在print语句中,直接输出类型信息:
- 用变量存储type()的结果(返回值)
查看的都是<字面量>的类型,能查看变量中存储的数据类型吗?
那当然:可以
变量有类型吗?
我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?
查看的是:变量存储的数据的类型。因为,变量无类型,但是它存储的数据有。
总结:
- 使用什么语句可以查看数据的类型?
type()
- 如下代码,name_type变量可以存储变量name的类型信息,是因为?
因为type()语句会给出结果(返回值)
- 变量有没有类型?
没有,字符串变量表示变量存储了字符串而不是表示变量就是字符串
字符串类型的不同定义方式
字符串有3种不同的定义方式:
三引号定义法,表示在一堆三个双引号的范围内,均是字符串,如下:
5、数据类型转换
- 掌握如何在字符串、整数、浮点数之间进行相互转换
- 了解转换的注意事项
为什么要转换类型
数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等
那么,我们为什么要转换它们呢?
数据类型转换,将会是我们以后经常使用的功能。
如:
- 从文件中读取的数字,默认是字符串,我们需要转换成数字类型
- 后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
- 将数字转换成字符串用以写出到外部系统
- 等等
用途很多,那么让我们来学习一下如何转换吧。
常见的转换语句
同前面学习的type()语句一样,这三个语句,都是带有结果的(返回值),我们可以用print直接输出,或用变量存储结果值。
类型转换注意事项
类型转换不是万能的,毕竟强扭的瓜不会甜,我们需要注意:
- 任何类型,都可以通过str(),转换成字符串
- 字符串内必须真的是数字,才可以将字符串转换为数字
总结:
1、字符串、整数、浮点数类型转换的语句是?
2、任何类型都可以转换成字符串,对不对?
正确
- 字符串可以随意转换成数字,对不对?
错误,字符串内必须只有数字才可以
- 浮点数转整数会丢失什么?
丢失精度,也就是小数部分
6、标识符
- 理解什么是标识符
- 掌握标识符的命名规则
- 掌握变量的命名规范
什么是标识符
在Python程序中,我们可以给很多东西起名字,比如:
- 变量的名字
- 方法的名字
- 类的名字,等等
这些名字,我们把它统一的称之为标识符,用来做内容的标识。
所以,标识符:
是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。
标识符命名规则
Python中,标识符命名的规则主要有3类:
- 内容限定
- 大小写敏感
- 不可使用关键字
标识符命名规则 - 内容限定
标识符命名中,只允许出现:
- 英文
- 中文
- 数字
- 下划线(_)
这四类元素。
其余任何内容都不被允许。
标识符命名规则 - 大小写敏感
以定义变量为例:
Andy = "安迪1"
andy = "安迪2"
字母a的大写和小写,是完全能够区分的。
标识符命名规则 - 不可使用关键字
Python中有一系列单词,称之为关键字
关键字在Python中都有特定用途
我们不可以使用它们作为标识符
变量命名规范
学完了标识符(变量、类、方法)的命名规则后,我们在来学习标识符的命名规范。
- 变量名
- 类名
- 方法名
不同的标识符,有不同的规范。
我们目前只接触到了:变量。所以,目前学习:变量的命名规范。
- 见名知意
- 下划线命名法
- 英文字母全小写
变量命名规范 - 见名知意
变量的命名要做到:
明了:尽量做到,看到名字,就知道是什么意思
简洁:尽量在确保"明了"的前提下,减少名字的长度
变量命名规范 - 下划线命名法
多个单词组合变量名,要使用下划线做分隔。
变量命名规范 - 英文字母全小写
命名变量中的英文字母,应全部小写:
总结:
- 什么是标识符?
用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。
- 标识符的命名规则?
- 内容限定:(中文、英文、数字、下划线)
- 大小写敏感
- 不可使用关键字
- 变量的命名规范?
- 见名知意
- 下划线命名法
- 英文字母全小写
7、运算符
了解Python中常见算术(数学)运算符、赋值运算符
算术(数学)运算符
算术运算符的演示
加减乘除和求平方,我们在前面已经使用过啦。
现在在带上:整除以及求余数,一起试一试吧。
赋值运算符
复合赋值运算符
总结:
1、常见的算术(数学)运算符有: 加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、求平方(**)
2、赋值运算符有:
- 标准赋值: =
- 复合赋值:+=、-=、*=、/=、//=、%=、**=
8、字符串扩展
- 字符串的三种定义方式
- 字符串拼接
- 字符串格式化
- 格式化的精度控制
- 字符串格式化方式2
- 对表达式进行格式化
字符串的三种定义方式
字符串在Python中有多种定义形式:
单引号定义法:
双引号定义法:
三引号定义法:
三引号定义法,和多行注释的写法一样,同样支持换行操作。
使用变量接收它,它就是字符串
不使用变量接收它,就可以作为多行注释使用。
字符串的引号嵌套
思考:如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?
- 单引号定义法,可以内含双引号
- 双引号定义法,可以内含单引号
- 可以使用转移字符(\)来将引号解除效用,变成普通字符串
总结:
字符串的三种定义方式:
- 单引号方式
- 双引号方式
- 三引号方式
引号的嵌套
- 可以使用:\来进行转义
- 单引号内可以写双引号或双引号内可以写单引号
字符串拼接
- 掌握如何拼接字符串
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过+号即可完成。
不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接。
既然可以和字符串变量完成拼接,那么,是否可以和其它变量类型如数字类型完成拼接呢?
让我们试一试。
总结:
1、如何完成字符串拼接?
使用"+"号连接字符串变量或字符串字面量即可
- 有哪些注意事项?
无法和非字符串类型进行拼接
字符串格式化
- 掌握通过占位的形式拼接字符串(字符串格式化)
我们会发现,这个拼接字符串也不好用啊
变量过多,拼接起来实在是太麻烦了
字符串无法和数字或其它类型完成拼接。
我们可以通过如下语法,完成字符串和变量的快速拼接。
其中的,%s
% 表示:我要占位
s 表示:将变量变成字符串放入占位的地方
所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置。
那,数字类型呢?可以不可以占位?
那必须可以,我们来尝试如下代码:
多个变量占位,变量要用括号括起来,并按照占位的顺序填入。
数字也能用%s占位吗?
可以的哦,这里是将数字 转换成了 字符串哦
也就是数字57,变成了字符串"57"被放入占位的地方
数字类型,也太没有地位了吧,竟然要被转成字符串拼接。
有没有体面一点的方式,让数字以其原本的面貌拼接进去呢?
安排。
Python中,其实支持非常多的数据类型占位
最常用的是如下三类
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位。
总结:
1、字符串格式化的语法?
"%占位符" % 变量
- 常用占位符有哪3个?
字符串:%s
整数:%d
浮点数:%f
格式化的精度控制
- 掌握格式化字符串的过程中做数字的精度控制
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位
细心的同学可能会发现:
浮点数19.99,变成了19.990000输出
这里我们就要讲解一下,字符串格式化之"数字精度控制"
我们可以使用辅助符号"m.n"来控制数据的宽度和精度
- m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
- .n,控制小数点精度,要求是数字,会进行小数的四舍五入
示例:
- %5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
- %5.2f:表示将宽度控制为5,将小数点精度设置为2,小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35
- %.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35
体验一下如下代码的快乐吧。
总结:
- 精度控制的语法是:
m.n的形式控制,如%5d、%5.2f、%.2f
m和.n均可省略
- 如果m比数字本身宽度还小,会发生什么事?
m不生效
- .n会对小数部分做精度限制,同时:?
会对小数部分做四舍五入
字符串格式化方式2
- 掌握快速字符串格式化的方式
目前通过%符号占位已经很方便了,还能进行精度控制。
可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?
那当然:有
通过语法:f"内容{变量}"的格式来快速格式化
看如下代码
这种写法不做精度控制
也不理会类型
适用于快速格式化字符串
总结:
1、可以通过
f"{变量} {变量}"的方式进行快速格式化
- 这种方式:
- 不理会类型
- 不做精度控制
适合对精度没有要求的时候快速使用
对表达式进行格式化
- 了解什么是表达式
- 掌握对表达式进行字符串格式化
刚刚的演示,都是基于变量的。
可是,我想更加优雅些,少写点代码,直接对"表达式"进行格式化是否可行呢?
那么,我们先了解一下什么是表达式。
表达式:一条具有明确执行结果的代码语句
如:
1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字
又或者,常见的变量定义:
name = "张三" age = 11 + 11
等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量。
那么,对于字符串格式化,能否直接格式化一个表达式呢?
可以,上代码:
在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码哦
总结:
- 表达式是什么?
表达式就是一个具有明确结果的代码语句,如 1 + 1、type("字符串")、3 * 5等
在变量定义的时候,如 age = 11 + 11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧的变量
- 如何格式化表达式?
f"{表达式}"
"%s\%d\%f" % (表达式、表达式、表达式)
练习:
股价计算小程序
定义如下变量:
- name,公司名
- stock_price,当前股价
- stock_code,股票代码
- stock_price_daily_growth_factor,股票每日增长系数,浮点数类型,比如1.2
- growth_days,增长天数
计算,经过growth_days天的增长后,股价达到了多少钱
使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。
示例输出:
红色框框都是变量,要使用格式化的方式拼接进去
提示,可以使用: 当前股价 * 增长系数 ** 增长天数, 用来计算最终股价哦
如,股价19.99 * 系数1.2 ** 7天 = 71.62778419199998,小数点现在精度2位后结果:71.63
二、Python判断语句
前言
进行逻辑判断,是生活中常见的行为。同样,在程序中,进行逻辑判断也是最为基础的功能。
为什么学习判断语句?
判断在程序中广泛应用,如果没有它,这些功能都难以实现。
布尔类型和比较运算符
- 掌握布尔类型用于表示:真和假
- 掌握比较运算符用于计算:真和假
进行判断,只有2个结果:
- 是
- 否
布尔类型
Python中常用的有6种值(数据)的类型
布尔类型的定义
布尔类型的字面量:
True 表示真(是、肯定)
False 表示假 (否、否定)
定义变量存储布尔类型数据:
变量名称 = 布尔类型字面量
布尔类型不仅可以自行定义
同时也可以通过计算的来。
也就是使用比较运算符进行比较运算得到布尔类型的结果。
比较运算符
布尔类型的数据,不仅可以通过定义得到,也可以通过比较运算符进行内容比较得到。
如下代码:
总结:
1、在Python中,可以表示真假的数据类型是:
布尔类型,字面量True表示真,字面量False表示假
- 除了可以定义布尔类型外,还可以通过____计算得到布尔类型?
通过<比较运算符>计算得到布尔类型的结果
- == 判断是否相等,!= 判断是否不相等
- >判断是否大于,<判断是否小于
- >=判断是否大于等于,<=判断是否小于等于
if语句的基本格式
- 掌握逻辑判断语句(if)的基本语法格式
- 掌握布尔类型数据,在判断语句中的作用
if判断语句
if语句的注意点
判断语句的结果,必须是布尔类型True或False
True会执行if内的代码语句
False则不会执行
总结:
1、if语句的基本格式:
- if语句的注意事项:
- 判断条件的结果一定要是布尔类型
- 不要忘记判断条件后的: 引号
- 归属于if语句的代码块,需在前方填充4个空格缩进
if else 语句
- 掌握if else 语句的组合用法
if满足条件会执行相应的代码语句,如果不满足呢?
有没有不满足的情况下,可供执行的代码呢?
if else 语句可以实现
if else语句注意点
-
else后,不需要判断条件
-
和if的代码块一样,else的代码块同样需要4个空格作为缩进
总结:
1、if else 语句,其中
- if和其代码块,条件满足时执行
- else搭配if的判断条件,当不满足的时候执行
- if else语句的注意事项:
- else不需要判断条件,当if的条件不满足时,else执行
- else的代码块,同样要4个空格作为缩进
if elif else语句
掌握if elif else语句进行多条件判断的语法
某些场景下,判断条件不止一个,可能有多个。
这种需求能用Python实现吗?
if elif else 语句可以实现
if elif else语句
if elif else语句 注意点:
elif 语句可以写多个。
判断是互斥且有顺序的:
- 满足1(如图编号)将不会理会2和3
- 满足2,将不会理会3
- 1、2、3均不满足,进入else
- else也可以省略不写,效果等同3个独立的if判断
空格缩进同样不可省略
总结:
1、if elif else语句的作用是?
可以完成多个条件的判断
- 使用if elif else的注意点有:
- elif可以写多个
- 判断是互斥且有序的,上一个满足后面的就不会判断了
- 可以在条件判断中,直接写input语句,节省代码量
判断语句的嵌套
- 掌握Python判断语句的终极用法:嵌套使用
有很多场景,不仅仅是多个并列条件,还会有满足前置条件才会二次判断的多层判断需求。
对这种需求,嵌套判断语句可以实现
许多逻辑的判断,是嵌套的,多层次的。
对于这种需求,我们可以:自由组合 if elif else,完成特定需求的要求
基础语法格式如下:
如上图,第二个if,属于第一个if内,只有第一个if满足条件,才会执行第二个if
嵌套的关键点,在于:空格缩进
通过空格缩进,来决定语句之间的:层次关系
简单嵌套:
如图:
判断有2层
当外层if满足条件(图中编号1)时,才会执行内层if判断(图中编号2)
当外层if(编号1)不满足,直接执行外层esle
自由组合嵌套,需求如下:
公司要发礼物,条件是:
-
必须是大于等于18岁小于30岁的成年人
-
同时入职时间需满足大于两年,或者级别大于3才可领取
如图:
if elif else 可以自由组合
满足缩进的要求即可
总结:
- 嵌套判断语句可以用于多条件、多层次的逻辑判断
- 嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断
- 嵌套判断语句,一定要注意空格缩进,Python通过空格缩进来决定层次关系