字面量
什么是字面量
字面量:在代码中,被写下来的的固定的值,称之为字面量
常用的值类型
Python中常用的有6种值(数据)的类型
字符串
字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
如:
"你好,Python"
"键盘敲烂,月薪过万"
"!@#$%^&"
Python中,字符串需要用双引号(")包围起来 被引号包围起来的,都是字符串
如何在代码中写它们
我们目前要学习的这些类型,如何在代码中表达呢?
类型 | 程序中的写法 | 说明 |
整数 | 666,-88 | 和现实中的写法一致 |
浮点数(小数) | 13.14,-5.21 | 和现实中的写法一致 |
字符串(文本) | "键盘敲烂,月薪过万" | 程序中需要加上双引号来表示字符串 |
代码示例
示例:
print(10)print(3.1415926)print(True)print("True")print("3.14.!#$!@#$!@#%#2515926")
总结:
1. 掌握字面量的含义
代码中,被写在代码中的固定的值,称之为字面量
2. 常见的字面量类型
我们目前了解:整数、浮点数、字符串这三类即可
3. 如何基于print语句完成各类字面量的输出
print(字面量),如:
print(10),输出整数10
print(13.14),输出浮点数13.14
print("键盘敲烂,月薪过万"),输出字符串:键盘敲烂,月薪过万
注释
注释的作用
未使用注释代码
使用注释的代码
注释:在程序代码中对程序代码进行解释说明的文字。
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够 大大增强程序的可读性。
注释的分类
单行注释:以 #开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用
注意,#号和注释内容一般建议以一个空格隔开
多行注释: 以 一对三个双引号 引起来 ("""注释内容""")来解释说明一段代码的作用使用方法
注释实战
按照如图所示,对代码添加
单行注释以及
多行注释
添加完成注释后,执行程序
验证注释是否对程序产生影响
代码示例
示例:
"""
单行注释:#
多行注释:一对三引号在PyCharm中ctrl+alt+l:快速格式化代码(美化)
"""
# 打印一个整数
print(10)
# 打印一个浮点数
print(3.1415926)
# 打印一个布尔值
print(True)
# 打印一个字符串
print("True")
# 打印一个字符串
print("3.141.f#@$5926")
总结:
1. 注释的作用是?
注释是代码中的解释型语句,用来对代码内容进行注解 注释不是代码,不会被程序执行
2. 单行注释如何定义?
通过 # 号定义,在#号右侧的所有内容均作为注释
建议在#号和注释内容之间,间隔一个空格 单行注释
一般用于对一行或一小部分代码进行解释
3. 多行注释如何定义?
通过一对三个引号来定义("""注释内容"""),
引号内部均是注释,可以换行
多行注释一般对:Python文件、类或方法进行解释
变量
什么是变量
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。 简单的说,变量就是在程序运行时,记录数据用的
变量的定义格式
变量名称:每一个变量都有自己的名称,称之为:变量名,也就是变量本身
=: 赋值,表示将等号右侧的值,赋予左侧的变量
变量的值: 每一个变量都有自己存储的值(内容),称之为:变量值
变量就像盒子,可以存放内容
变量的特征
变量,从名字中可以看出,表示“量”是可变的。
所以,变量的特征就是,变量存储的数据,是可以发生改变的。
如图所示:
箱子里可以放足球和篮球
思考
为什么必须要使用变量?
都是输出内容,直接输出不行吗?
变量的目的是存储运行过程的数据
存储的目的是为了:重复使用
代码示例
示例:
"""
变量的定义格式:变量名=变量值
解释:把 = 右边的变量值赋值给左边的变量名
"""# 需求1:定义money存储100元,假设花了10元,求还剩下多少
# 1-定义变量
money = 100
print(money)
# 2-花了10元求剩下的钱数
# 变量的值是可以改变的
# PyCharm中alt+shift+enter自动优化代码
money = money - 10
print(money)# 需求2:定义变量分别储存账号和密码
username = "张三"
password = "123456"
# 打印账号密码
# print打印多个变量,可以用,隔开
print("账号密码为:", username, password)
总结
变量含义:在程序运行过程中,用来存储数据或者记录数值的抽象概念
定义格式:
变量名 = 变量值
把=右侧的值赋值给=左侧的变量名
用处:
存储程序运行过程中变化的数据
重复使用
变量的特征:变量值可以改变
数据类型
数据类型
在学习字面量的时候,我们了解到:数据是有类型的。
目前在入门阶段,我们主要接触如下三类数据类型:
string、int、float这三个英文单词,就是类型的标准名称。
type()语句
那么,问题来了,如何验证数据的类型呢?
我们可以通过type()语句来得到数据的类型:
语法:
type(被查看类型的数据)
1. 在print语句中,直接输出类型信息:
str是string的缩写
2. 用变量存储type()的结果(返回值)
查看的都是<字面量>的类型,能查看变量中存储的数据类型吗?
那当然:可以
变量有类型吗?
我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?
查看的是:变量存储的数据的类型。因为,变量无类型,但是它存储的数据有。
盒子是足球、篮球吗?
我们可能会说:字符串变量
但要知道,不是变量是字符串,而是它存储了:字符串
总结
1. 使用什么语句可以查看数据的类型?
type()
2. 如下代码,name_type变量可以存储变量name的类型信息,是因为?
因为type()语句会给出结果(返回值)
3. 变量有没有类型?
没有,字符串变量表示变量存储了字符串而不是表示变量就是字符串
字符串定义
字符串类型的不同定义方式
字符串有3种不同的定义方式:
双引号定义法
"字符串"
单引号定义法
'字符串'
三引号定义法
"""字符串"""
三引号定义法,表示在一堆三个双引号的范围内,均是字符串,如下:
要注意的是,包含范围是:从三个引号开始,到下一个三个引号结束
代码示例
示例:
# 使用单引号定义字符串
text1 = '我是一个字符串'
text2 = "我也是一个字符串"
text3 = """一对三个引号不仅可以定义注释,也可以定义字符串"""
# ctrl + d快速复制当前行
# end默认为换行符,每使用一次print()语句会自动在打印内容的结尾添加一个换行符
print(text1, "的数据类型为", type(text1), end="\t")
print(text2, "的数据类型为", type(text2))
print(text3, "的数据类型为", type(text3))# 三个引号定义的字符串,所见即所得
# \n表示换行符
# \t表示制表符
text4 = """
\t床前明月光\n\n疑是地上霜我长得很帅
"""
print(text4, "的数据类型是:", type(text4))
数据类型转换
为什么要转换类型
数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等 那么,我们为什么要转换它们呢?
数据类型转换,将会是我们以后经常使用的功能。
如:
从文件中读取的数字,默认是字符串,我们需要转换成数字类型
后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
将数字转换成字符串用以写出到外部系统 等等
用途很多,那么让我们来学习一下如何转换吧。
常见的转换语句
同前面学习的type()语句一样,这三个语句,都是带有结果的(返回值) 我们可以用print直接输出 或用变量存储结果值
类型转换注意事项
类型转换不是万能的,毕竟强扭的瓜不会甜,我们需要注意:
1. 任何类型,都可以通过str(),转换成字符串
2. 字符串内必须真的是数字,才可以将字符串转换为数字
代码示例
示例:
# 需求1:书籍类型是字符串类型的"100",要求在分数的基础上加10,打印最终结果
# 定义字符串分数
score = "100"
print(score, type(score))
# 在此基础上加10分
# 先将字符串转换为整数类型
score = int(score)
score = score + 10
print(score, type(score))# 需求2:将整数和浮点数和布尔值转换为字符串
a = 10
b = 3.14
c = True
print(a, type(a))
print(b, type(b))
print(c, type(c))a1 = str(a)
b1 = str(b)
c1 = str(c)
print(a1, type(a1))
print(b1, type(b1))
print(c1, type(c1))# 需求3:将浮点数转换为整数会丢失精度
a = 3.1415
b = int(a)
print(a, type(a))
print(b, type(b))
总结
1. 字符串、整数、浮点数类型转换的语句是?
2. 任何类型都可以转换成字符串,对不对?
正确
3. 字符串可以随意转换成数字,对不对?
错误,字符串内必须只有数字才可以
4. 浮点数转整数会丢失什么?
丢失精度,也就是小数部分
标识符
什么是标识符
在Python程序中,我们可以给很多东西起名字,比如:
变量的名字
方法的名字
类的名字,等等
这些名字,我们把它统一的称之为标识符,用来做内容的标识。
所以,标识符:
是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。
标识符命名规则
Python中,标识符命名的规则主要有3类:
内容限定
区分大小写
不可使用关键字
标识符命名规则 - 内容限定
标识符命名中,只允许出现:
字母
数字
下划线(_)
中文
这四类元素。
其余任何内容都不被允许。
注意
1. 不推荐使用中文
2. 数字不可以开头
标识符命名规则 - 区分大小写
以定义变量为例:
Andy = “安迪1”
andy = “安迪2”
字母a的大写和小写,是完全能够区分的。
标识符命名规则 - 不可使用关键字
Python中有一系列单词,称之为关键字 关键字在Python中都有特定用途 我们不可以使用它们作为标识符
变量命名规范
学完了标识符(变量、类、方法)的命名规则后,我们在来学习标识符的命名规范。
变量名
类名
方法名
不同的标识符,有不同的规范。
我们目前只接触到了:变量。所以,目前学习:变量的命名规范。
见名知意
下划线命名法
英文字母全小写
变量命名规范 - 见名知意
变量的命名要做到:
简洁:尽量在确保“明了”的前提下,减少名字的长度
明了:尽量做到,看到名字,就知道是什么意思
变量命名规范 - 下划线命名法
多个单词组合变量名,要使用下划线做分隔。
变量命名规范 - 英文字母全小写
命名变量中的英文字母,应全部小写:
代码示例
示例:
"""
标识符规则示例
"""
# 导包
import keyword
# 1-不能使用关键字# 从keyword包中获取所有的关键字
# 查看源码:按住鼠标ctrl键鼠标点击相对应的代码
# 返回之前的代码:ctrl+alt+←
kw = keyword.kwlist
# print(kw)
# and = 10
# 不要使用python自带的名字作为标识符
# print = 10
# print(print)# 2-内容上只能是字母、数字、下划线、中文并不建议组成
a_1 = 10
print(a_1)
# 以下内容会报错,因为-&是特殊字符
# a-2 = 20
# print(a-2)
# a@2 = 30# 3- 不能以数字开头
# 1a =10
# 中文可以作为标识符但不建议使用,太low
姓名 = "张三"
print(姓名)"""
标识符示范
"""
# 1-见名知意
# 2-使用下划线命名法又叫蛇型命名法
person_name = "张三"
brand_name = "华为"
# 3-小驼峰命名法(不建议使用)
personName = "张三"
brandName = "华为"
# 4-大驼峰命名法(一般用于定义类名)
PersonName = "张三"
BrandName = "华为"
总结
什么是标识符?
用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。
标识符命名规则(必须遵守)
内容限定:只能是字母、数字(不能作为开头)、下划线(_)、中文(不建议)
严格区分大小写
不能使用关键字
标识符命名规范(建议遵守)
见名知意
下划线命名法
关键字:在编程语言中有特殊含义的单词就是关键字
1-先导包:import keyword
2-再获取:kw = keyword.kwlist
运算符
算术(数学)运算符
算术运算符的演示
加减乘除和求平方,我们在前面已经使用过啦。
现在在带上:整除以及求余数,一起试一试吧。
赋值运算符
复合赋值运算符
代码示例
示例:
# 算数运算符 + — * / // ** %
"""
a = 10
b = 20
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)
"""# 复合赋值运算符 += -= *= /= //= **= %=
a = 20
b = 20
a = a + 3
b += 3
print(a, b)
a = a - 3
b -= 3
print(a, b)
a = a * 3
b *= 3
print(a, b)
# /和/=会将计算结果自动转换为float
a = a / 3
b /= 3
print(a, b)
# 获取除法运算中的商数据类型不变
a = int(a) // 3
b //= 3
print(a, b)
a = a ** 3
b **= 3
print(a, b)
a = a % 5
b %= 5
print(a, b)
总结:
算术运算符:+ - * / // % **
赋值运算符:=
复合赋值运算符:+= -= *= /= //= %= **=
注意:/运算的结果是浮点类型 //获取除法运算中的商数据类型不变
字符串扩展
字符串的三种定义方式
字符串在Python中有多种定义形式:
单引号定义法:name='李华'
双引号定义法:name="李华"
三引号定义法:name="""李华"""
三引号定义法,和多行注释的写法一样,同样支持换行操作。
使用变量接收它,它就是字符串
不使用变量接收它,就可以作为多行注释使用。
字符串的引号嵌套
思考:如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?
单引号定义法,可以内含双引号
双引号定义法,可以内含单引号
可以使用转移字符(\)来将引号解除效用,变成普通字符串
代码示例
# 双引号定义字符串其中可以包含单引号
# 双引号定义字符串中想要表达双引号需要使用转义\
s1 = "你好,世界"
s2 = "你好,''世界"
s3 = "你好,\"\"世界"
print(s1, s2, s3)# 单引号定义字符串其中可以包含双引号
# 单引号定义字符串中想要表达单引号需要使用转义\
a1 = '你好,世界'
a2 = '你好,""世界'
a3 = '你好,\'\'世界'
print(a1, a2, a3)# 三引号定义字符串其中可以包含单、双引号
# 三引号定义字符串中想要表达三引号需要使用转义\
b1 = """你好,世界"""
b2 = """你'好世"界"""
b3 = """你好\"""世界"""
print(b1, b2, b3)
总结
字符串的三种定义方式:
单引号方式
双引号方式
三引号方式
引号的嵌套
可以使用:\来进行转义
单引号内可以写双引号或双引号内可以写单引号
字符串拼接
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过+号即可完成,如:
输出结果:
不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接,如:
输出结果:
既然,字符串和变量进行拼接,我们来完成一个小需求:
定义2个变量:
name,内容是“李华”
address,内容是“建材城东路9号”
要求写程序通过print语句以及字符串拼接的方式输出:
“我是:李华,我的地址是:建材城东路9号院”
既然可以和字符串变量完成拼接,那么,是否可以和其它变量类型如数字类型完成拼接呢?
让我们试一试。
字符串无法和非字符串变量进行拼接
因为类型不一致,无法接上
就像接力赛一样,不是队友,不能接力的哦
总结
1. 如何完成字符串拼接?
使用“+”号连接字符串变量或字符串字面量即可
2. 有哪些注意事项?
无法和非字符串类型进行拼接
字符串格式化
我们会发现,这个拼接字符串也不好用啊
变量过多,拼接起来实在是太麻烦了
字符串无法和数字或其它类型完成拼接。
所以,有没有其它方式,即方便又支持拼接其它类型呢?
这个方式,就是字符串的格式化
我们可以通过如下语法,完成字符串和变量的快速拼接。
其中的,%s
% 表示:我要占位
s 表示:将变量变成字符串放入占位的地方
所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置
那,数字类型呢?可以不可以占位?
那必须可以,我们来尝试如下代码:
多个变量占位
变量要用括号括起来
并按照占位的顺序填入
数字也能用%s占位吗?
可以的哦,这里是将数字 转换成了 字符串哦 也就是数字57,变成了字符串"57"被放入占位的地方
数字类型,也太没有地位了吧,竟然要被转成字符串拼接。
有没有体面一点的方式,让数字以其原本的面貌拼接进去呢?
安排:
Python中,其实支持非常多的数据类型占位
最常用的是如下三类
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位
总结
字符串格式化的语法?
"%占位符" % 变量
2. 常用占位符有哪3个?
字符串: %s
整数: %d
浮点数: %f
数字精度控制
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位
细心的同学可能会发现:
浮点数19.99,变成了19.990000输出
这里我们就要讲解一下,字符串格式化之“数字精度控制”
我们可以使用辅助符号"x.y"来控制数据的宽度和精度
x,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效 .
y,控制小数点精度,要求是数字,会进行小数的四舍五入
示例:
%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
体验一下如下代码的快乐吧。
总结
1. 精度控制的语法是:
x.y的形式控制,如%5d、%5.2f、%.2f
x和.y均可省略
2. 如果x比数字本身宽度还小,会发生什么事?
x不生效
3. .y会对小数部分做精度限制,同时:?
会对小数部分做四舍五入
字符串格式化 - 快速写法
目前通过%符号占位已经很方便了,还能进行精度控制。
可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?
那当然:有
通过语法:f"内容{变量}"的格式来快速格式化
看如下代码
这种写法不做精度控制
也不理会类型
适用于快速格式化字符串
总结
1. 可以通过
f”{变量} {变量}”的方式进行快速格式化
2. 这种方式:
不理会类型
不做精度控制
适合对精度没有要求的时候快速使用
字符串格式化 - 表达式的格式化
刚刚的演示,都是基于变量的。
可是,我想更加优雅些,少写点代码,直接对“表达式”进行格式化是否可行呢?
那么,我们先了解一下什么是表达式。
表达式:一条具有明确执行结果的代码语句
如:
1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字
又或者,常见的变量定义:
name = “张三” age = 11 + 11
等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量。
那么,对于字符串格式化,能否直接格式化一个表达式呢?
可以,上代码:
在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码哦
总结
1. 表达式是什么?
表达式就是一个具有明确结果的代码语句,如 1 + 1、type(“字符串”)、3 * 5等
在变量定义的时候,如 age = 11 + 11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧的变量
2. 如何格式化表达式?
f"{表达式}"
"%s\%d\%f" % (表达式、表达式、表达式)
格式化字符串示例:
# 需求:name存储名字,age存储年龄,height存储身高,weight存储体重,打印最终的个人信息
name = "李明"
age = 23
height = 175
weight = 65.5
# 方式1 :print打印多个内容
print("我的名字是",name,"我的年龄是",age,"岁,我的身高是",height,"cm,我的体重是",weight,"kg。")
# 方式2 :使用+拼接字符串并打印
print("我的名字是"+name+"我的年龄是"+str(age)+"岁,我的身高是"+str(height)+"cm,我的体重是"+str(weight)+"kg。")
# 方式3:使用%s %d %f占位符的方式格式化输出字符串
print("我的名字是:%s我的年龄是%d岁,我的身高是%fcm,我的体重是%dkg。" % (name,age,height,weight))
# 方式4 :控制精度格式化输出字符串
print("我的名字是:%s我的年龄是%2d岁,我的身高是%.2fcm,我的体重是%3dkg。" % (name,age,height,weight))
# 方式5:快速格式化方式输出字符串
print(f"我的名字是:{name}我的年龄是{age}岁,我的身高是{height}cm,我的体重是{weight}kg。")
总结:
字符串的拼接:
方式1:利用print()同时输出多个内容按逗号分隔的方式
方式2 :利用+号拼接多个字符串的方式
使用+号只能连接字符串,不能将数值与字符串进行拼接
字符串的格式化
方式1:所有变量都用%s去占位
方式2:字符串使用%s占位,整数使用%d占位,浮点数使用%f占位
精度控制
精度控制的语法:x.y
x表示数值的宽度
y表示小数部分的位数(如方式4)
如果x宽度比数字本身宽度还小,不会生效
y会对小数部分做四舍五入的精度限制
快速格式化
f”{变量}xxx”
这种方式不理会数据类型,不做精度控制
数据输入
获取键盘输入
试想一下,我们经常遇到过程序需要我们输入信息的场景。
比如:银行取钱
如何在Python中做到读取键盘输入的内容呢?
这里就要请出input语句了
input语句(函数)
我们前面学习过print语句(函数),可以完成将内容(字面量、变量等)输出到屏幕上。
在Python中,与之对应的还有一个input语句,用来获取键盘输入。
数据输出:print
数据输入:input
使用上也非常简单:
使用input()语句可以从键盘获取输入
使用一个变量接收(存储)input语句获取的键盘输入数据即可
在前面的代码中,输出”请告诉我你是谁?“的print语句其实是多余的
input()语句其实是可以在要求使用者输入内容前,输出提示内容的哦,方式如下:
如图,在input的括号内直接填入提示内容即可。
input语句获取的数据类型
我们刚刚试验的都是输入了字符串类型的数据。
那么如果我们输入数字类型或其它类型,结果会如何?
那么,让我们通过前面学习过的???
type()语句
来验证一下输入内容的数据类型吧。
可以看到,无论键盘输入何种类型的数据
最终的结果都是:字符串类型的数据
代码示例
# 从键盘输入用户名和密码
# input()默认从键盘接收的数据都会转换为str字符串类型
# user_name = input("请输入您的用户名:")
# print(f"您刚才输入的用户名是:{user_name}")
#
# password = input("请输入您的密码:")
# print(f"您刚才输入的密码是:{password}")
# print(type(password))# 需求:计算购买商品的总价格=单价*数量
# 单价和数量从键盘录入
# 获取单价,将转换为浮点类型
a = float(input("你的单价: "))
# 获取商品的数量,并转换为浮点类型
b = float(input("你的商品数量: "))
# 计算并输出商品的总价
print(f"商品的总价:{a * b}")
总结
变量 = input(“提示语”)
如果括号中有提示语,会先将提示主打印到控制台
等用户输入数据之后,input()会自动接收用户输入的内容并赋值给定义的变量
注意:默认接收的类型都str字符串类型,如果需要使用其它类型必须手动转换
input()语句的功能是,获取键盘输入的数据
可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。
要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型