第一阶段 第二章
目录
一、字面量
(1) 什么是字面量
字面量:在代码中,被写下来的的固定的值,称之为字面量
(2) 常用的值类型
(3) 字符串
字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
Python中,字符串需要用双引号(")包围起来,被引号包围起来的,都是字符串
总结
1. 掌握字面量的含义
代码中,被写在代码中的固定的值,称之为字面量
2. 常见的字面量类型
我们目前了解整数、浮点数、字符串这三类即可
3. 如何基于print语句完成各类字面量的输出
print(字面量),如:
· print(10),输出整数10
· print(13.14),输出浮点数13.14
· print("黑马程序员"),输出字符串:黑马程序员
二、注释
(1) 注释的作用
注释:在程序代码中对程序代码进行解释说明的文字
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性
(2) 注释的分类
①单行注释:以#开头,#右边的所有文字当做说明,而不是真正要执行的程序,起辅助说明作用
# 我是单行注释
print("Hello World")
单行注释一般用于解释:当行代码,或一小段代码
注意,#号和注释内容一般建议以一个空格隔开
②多行注释:以一对三个双引号引起来("""注释内容""")来解释说明一段代码的作用使用方法
"""
我是多行注释
诗名:悯农
作者:李绅
"""
print("锄禾日当午")
print("汗滴禾下土")
print("谁知盘中餐")
print("粒粒皆辛苦")
多行注释一般用于解释:整个Python代码文件,类,方法
总结
1. 注释的作用是?
注释是代码中的解释型语句,用来对代码内容进行注解
注释不是代码,不会被程序执行
2. 单行注释如何定义?
通过#号定义,在#号右侧的所有内容均作为注释
建议在#号和注释内容之间,间隔一个空格
单行注释一般用于对一行或一小部分代码进行解释
3. 多行注释如何定义?
通过一对三个引号来定义("""注释内容"""),引号内容均是注释,可以换行
多行注释一般对:Python文件、类或方法进行解释
三、变量
(1) 什么是变量
变量:在程序运行时,能存储计算结果或能表示值的抽象概念
简单来说,变量就是在程序运行时,记录数据用的
变量的定义格式:变量名称 = 变量的值
①变量名称 -> 每个变量都有自己的名称,称之为:变量名,也就是变量本身
②= -> 赋值,表示将等号右侧的值,赋予左侧的变量
③变量的值 -> 每一个变量都有自己存储的值(内容),称之为:变量值
"""
演示Python中变量的相关操作
"""
# 定义一个变量,用来记录钱包余额
money = 50
# 通过print语句,输出变量记录的内容
print("钱包还有:",money)
# 买了一个冰淇淋,花费10元
money = money - 10
print("买了冰淇淋花费10元,还剩余:",money,"元")
# 假设,每隔一小时,输出一下钱包的余额
print("现在是下午1点,钱包余额剩余:",40)
print("现在是下午2点,钱包余额剩余:",40)
print("现在是下午3点,钱包余额剩余:",money)
print("现在是下午4点,钱包余额剩余:",money)
总结
1. 变量是什么,有什么作用?
变量就是在程序运行时,记录数据用的
2. 变量的定义格式是?
变量名 = 变量值
3. 变量的特征是?
变量的值可以改变
4. print语句如何输出多份内容?
print(内容1,内容2,......,内容N)
5. Python中如何做减法?
使用符号 - 即可完成减法运算
拓展:加(+)、减(-)、乘(*)、除(/)
四、数据类型
(1) 数据类型
在学习字面量的时候,我们了解到:数据是有类型的
目前在入门阶段,我们主要接触如下三类数据类型:
string、int、float这三个英文单词,就是类型的标准名称
(2) type()语句
我们可以通过type()语句来得到数据的类型:type(被查看类型的数据)
(3) type()语句的使用方式
①在print语句中,直接输出类型信息
②用变量存储type()的结果(返回值)
查看的都是<字面量>的类型,能查看变量中存储的数据类型吗? -> 可以
# 方式1:使用print直接输出类型信息
print(type("你好"))
print(type(666))
print(type(11.345))
# 方式2:使用变量存储type()语句的结果
string_type = type("你好")
int_type = type(666)
float_type = type(11.345)
print(string_type)
print(int_type)
print(float_type)
# 方式3:使用type()语句,查看变量中存储的数据类型信息
name = "你好"
name_type = type(name)
print(name_type)
(4) 变量有类型吗?
我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?
查看的是:变量存储的数据的类型。因为,变量无类型,但是它存储的数据有
总结
1. 使用什么语句可以查看数据的类型?
type()
2. 如下代码,name_type变量可以存储变量name的类型信息,是因为?
name = "你好"
name_type = type(name)
因为type()语句会给出结果(返回值)
3. 变量有没有类型?
没有,字符串变量表示变量存储了字符串而不是表示变量就是字符串
五、数据类型转换
(1) 为什么要转换类型
数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等
数据类型转换,将会是我们一行经常使用的功能:
①从文件中读取的数字,默认是字符串,我们需要转换成数字类型
②后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
③将数字转换成字符串用以写出到外部系统
④等等
(2) 常见的转换语句
int(x) -> 将x转换为一个整数
float(x) -> 将x转换为一个浮点数
str(x) -> 将对象x转换为字符串
同前面学习的type()语句一样,这三个语句,都是带有结果的(返回值),我们可以用print直接输出,或用变量存储结果值
# 将数字类型转换成字符串
num_str = str(11)
print(type(num_str),num_str)
float_str = str(11.345)
print(type(float_str),float_str)
# 将字符串转换成数字
num = int("11")
print(type(num),num)
num2 = float("11.345")
print(type(num2),num2)
# 错误示例,想要将字符串转换成数字,必须要求字符串的内容都是数字
num3 = int("你好")
print(type(num3),num3)
# 整数转浮点数
float_num = float(11)
print(type(float_num),float_num)
# 浮点数转整数,会丢失精度
int_num = int(11.345)
print(type(int_num),int_num)
总结
1. 字符串、整数、浮点数类型转换的语句是?
int(x) -> 将x转换为一个整数
float(x) -> 将x转换为一个浮点数
str(x) -> 将对象x转换为字符串
2. 任何类型都可以转换成字符串,对不对?
正确
3. 字符串可以随意转换成数字,对不对?
错误,字符串内必须只有数字才可以
4. 浮点数转整数会丢失什么?
丢失精度,也就是小数部分
六、标识符
(1) 什么是标识符
在Python程序中,我们可以给很多东西起名字,比如:变量的名字、方法的名字、类的名字、等等。这些名字,我们把它统一的称之为标识符,用来做内容的标识
所以,标识符:是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名
(2) 标识符命名规则
Python中,标识符命名的规则主要有3类:
①内容限定
标识符命名中,只允许出现:英文,中文,数字,下划线(_)这四类元素,其他任何内容都不被允许
注意:不推荐使用中文 / 数字不可以开头
②大小写敏感
以定义变量为例:Andy = "安迪1",andy = "安迪2",字母a的大写和小写,是完全能够区分的
③不可使用关键字
Python中有一系列单词,称之为关键字,关键字在Python中都有特定用途,我们不可以使用它们作为标识符
# 规则1:内容限定,限定只能使用:中文、英文、数字、下划线,注意:不能以数字开头
# 错误的代码示范:1_name = "张三"
# 错误的代码示范:name_! = "张三"
name_ = "张三"
_name = "张三"
name_1 = "张三"
# 规则2:大小写敏感
It = "你好"
it = 666
print(It)
print(it)
# 规则3:不可使用关键字
# 错误的实例,使用了关键字:class = 1
# 错误的实例,使用了关键字:def = 1
Class = 1
(3) 变量命名规范
学完了标识符(变量、类、方法)的命名规则后,我们再来学习标识符的命名规范
变量名、类名、方法名,不同的标识符,有不同的规范。我们目前只接触到了:变量。所以,目前学习:变量的命名规范
①见名知意
明了:尽量做到,看到名字,就知道是什么意思
简洁:尽量在确保"明了"的前提下,减少名字的长度
②下划线命名法
多个单词组合变量名,要使用下划线做分隔
③英文字母全小写
命名变量中的英文字母,应全部小写
总结
1. 什么是标识符?
用户编写代码时,对变量、类、方法等编写的名字,叫做标识符
2. 标识符的命名规则?
内容限定(中文、英文、数字、下划线),大小写敏感,不可使用关键字
3. 变量的命名规范?
见名知意,下划线命名法,英文字母全小写
七、运算符
(1) 算术(数学)运算符
(2) 赋值运算符
(3) 复合赋值运算符
"""
演示Python中的各类运算符
"""
# 算术(数学)运算符
print("1 + 1 = ", 1 + 1)
print("2 - 1 = ", 2 - 1)
print("3 * 3 = ", 3 * 3)
print("4 / 2 = ", 4 / 2)
print("11 // 2 = ", 11 // 2)
print("9 % 2 = ", 9 % 2)
print("2 ** 2 = ", 2 ** 2)
# 赋值运算符
num = 1 + 2 * 3
# 复合赋值运算符
# +=
num = 1
num += 1 # num = num + 1
print("num += 1: ", num)
num -= 1
print("num -= 1: ", num)
num *= 4
print("num *= 4: ", num)
num /= 2
print("num /= 2: ", num)
num = 3
num %= 2
print("num %= 2: ", num)
num **= 2
print("num **= 2: ", num)
num = 9
num //= 2
print("num //= 2: ", num)
总结
1. 常见的算术(数学)运算符有:
加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、求平方(**)
2. 赋值运算符有:
标准赋值:=
复合赋值:+=、-=、*=、/=、//=、%=、**=
八、字符串的三种定义方式
(1) 字符串的三种定义方式
字符串在Python中有多种定义形式:
①单引号定义法:name = '你好'
②双引号定义法:name = "你好"
③三引号定义法:name = """你好""" -> 三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串。不使用变量接收它,就可以作为多行注释使用
"""
演示字符串的三种定义方式:
- 单引号定义法
- 双引号定义法
- 三引号定义法
"""
# 单引号定义法,使用单引号进行包围
name = '你好'
print(type(name))
# 双引号定义法
name = "你好"
print(type(name))
# 三引号定义法,写法和多行注释是一样的
name = """
你好
我好
大家好
"""
print(type(name))
(2) 字符串的引号嵌套
思考:如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?
①单引号定义法,可以内含双引号
②双引号定义法,可以内含单引号
③可以使用转移字符(\)来将引号解除效用,变成普通字符串
# 在字符串内 包含双引号
name = '"你好"'
print(type(name))
# 在字符串内 包含单引号
name = "'你好'"
print(type(name))
# 使用转义字符 \ 解除引号的效用
name = "\"你好\""
print(type(name))
name = '\'你好\''
print(type(name))
总结
1. 字符串的三种定义方式:
单引号方式,双引号方式,三引号方式
2. 引号的嵌套
可以使用:\ 来进行转义
单引号内可以写双引号或双引号内可以写单引号
九、字符串的拼接
(1) 字符串拼接
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过+号即可完成,如:
print("学IT来黑马" + "月薪过万")
# 输出结果:学IT来黑马月薪过万
不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接,如:
name = "黑马程序员"
print("我的名字是:" + name + ",我可以教大家IT技能")
# 输出结果:我的名字是:黑马程序员,我可以教大家IT技能
# 字符串字面量之间的拼接
print("学IT来黑马" + "月薪过万")
# 字符串字面量和字符串变量的拼接
name = "黑马程序员"
address = "建材城东路9号院"
tel = 4006189090
print("我是:" + name + ",我的地址是:" + address)
# 错误示范 print("我是:" + name + ",我的地址是:" + address + ",我的电话是:" + tel)
总结
1. 如何完成字符串拼接?
使用"+"号连接字符串变量或字符串字面量即可
2. 有哪些注意事项?
无法和非字符串类型进行拼接
十、字符串格式化
(1) 字符串格式化
我们会发现,这个拼接字符串也不好用啊
①变量过多,拼接起来实在是太麻烦了
②字符串无法和数字或其它类型完成拼接
我们可以通过如下语法,完成字符串和变量的快速拼接
name = "黑马程序员"
message = "学IT就来 %s" % name
print(message)
# 输出结果:学IT就来 黑马程序员
其中的,%s
% 表示:我要占位
s 表示:将变量变成字符串放入占位的地方
所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置
-> 那,数字类型呢?可以不可以占位?
class_num = 57
avg_salary = 16781
message = "Python大数据学科,北京%s期,毕业平均工资:%s" % (class_num, avg_salary)
print(message)
# 输出结果:Python大数据学科,北京57期,毕业平均工资:16781
多个变量占位,变量要用括号括起来,并按照占位的顺序填入
# 通过占位的形式,完成拼接
name = "黑马程序员"
message = "学IT来:%s" % name
print(message)
# 通过占位的形式,完成数字和字符串的拼接
class_num = 57
avg_salary = 16781
message = "Python大数据学科,北京%s期,毕业平均工资:%s" % (class_num, avg_salary)
print(message)
数字也能用%s占位吗? -> 可以的哦,这里是将数字转换成了字符串,也就是数字57,变成了字符串"57"被放入占位的地方
有没有体面一点的方式,让数字以其原本的面貌拼接进去呢?
Python中,其实支持非常多的数据类型占位,最常用的是如下三类:
①%s -> 将内容转换成字符串,放入占位位置
②%d -> 将内容转换成整数,放入占位位置
③%f -> 将内容转换成浮点数,放入占位位置
name = "传智播客"
setup_year = 2006
stock_price = 19.99
message = "%s,成立于:%d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)
总结
1. 字符串格式化的语法?
"%占位符" % 变量
2. 常用占位符有哪3个?
字符串:%s,整数:%d,浮点数:%f
十一、字符串格式化的精度控制
(1) 字符串格式化
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位
name = "传智播客"
setup_year = 2006
stock_price = 19.99
message = "%s,成立于:%d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)
# 输出结果:我是:传智播客,我成立于:2006,我今天的股价是:19.990000
细心的同学可能会发现:浮点数19.99,变成了19.990000输出
这里我们就要讲解一下,字符串格式化之"数字精度控制"
(2) 字符串格式化 - 数字精度控制
我们可以使用辅助符号"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
num1 = 11
num2 = 11.345
print("数字11宽度限制5,结果是:%5d" % num1)
print("数字11宽度限制1,结果是:%1d" % num1)
print("数字11.345宽度限制7,小数精度2,结果是:%7.2f" % num2)
print("数字11.345不限制,小数精度2,结果是%.2f" % num2)
总结
1. 精度控制的语法是:
m.n的形式控制,如%5d、%5.2f、%.2f
m和.n均可省略
2. 如果m比数字本身宽度还小,会发生什么事?
m不生效
3. .n会对小数部分做精度限制,同时:?
会对小数部分做四舍五入
十二、字符串格式化的方式二
(1) 字符串格式化 - 快速写法
通过语法:f"内容{变量}"的格式来快速格式化
"""
演示第二种字符串格式化的方式:f"{占位}"
"""
name = "传智教育"
set_up_year = 2006
stock_price = 19.99
# f: format
print(f"我是{name},我成立于:{set_up_year}年,我今天的股价是:{stock_price}")
注意:不做精度控制,原样输出
总结
1. 可以通过
f"{变量} {变量}"的方式进行快速格式化
2. 这种方式:
不理会类型,不做精度控制,适合对精度没有要求的时候快速使用
十三、对表达式进行格式化
(1) 字符串格式化 - 表达式的格式化
表达式:一条具有明确执行结果的代码语句
如:1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字
又或者,常见的变量定义:name = "张三"、age = 11 + 11,等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量
"""
演示对表达式进行字符串格式化
"""
print("1 * 1的结果是:%d" % (1 * 1))
print(f"1 * 2的结果是:{1 * 2}")
print("字符串在Python中的类型名是:%s" % type("字符串"))
总结
1. 表达式是什么?
表达式就是一个具有明确结果的代码语句,如1 + 1、type("字符串")、3 * 5等
在变量定义的时候,如age = 11 + 11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧的变量
2. 如何格式化表达式?
f"{表达式}"
"%s\%d\%f" % (表达式、表达式、表达式)
练习:股价计算小程序
# My own work
name = "传智播客"
stock_price = 19.99
stock_code = "003032"
stock_price_daily_growth_factor = 1.2
growth_days = 7
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长的系数是:%.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days, stock_price * stock_price_daily_growth_factor ** growth_days))
十四、字符串格式化练习题讲解
"""
讲解字符串格式化的课后练习题
"""
# 定义需要的变量
name = "传智播客"
stock_price = 19.99
stock_code = "003032"
# 股票 价格 每日 增长 因子
stock_price_daily_growth_factor = 1.2
growth_days = 7
finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数:%.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days, finally_stock_price))
十五、数据输入(input语句)
(1) input语句(函数)
我们前面学习过print语句(函数),可以完成将内容(字面量、变量等)输出到屏幕上
在Python中,与之对应的还有一个input语句,用来获取键盘输入
①数据输出:print
②数据输入:input
使用上也非常简单:
①使用input()语句可以从键盘获取输入
②使用一个变量接收(存储)input语句获取的键盘输入数据即可
"""
演示Python的input语句
获取键盘的输入信息
"""
print("请告诉我你是谁?")
name = input()
print("我知道了,你是:%s" % name)
name = input("请告诉我你是谁?")
print("我知道了,你是:%s" % name)
# 输入数字类型
num = input("请告诉我你的银行卡密码:")
# 数据类型转换
num = int(num)
print("你的银行卡密码的类型是:", type(num))
总结
1. input()语句的功能是,获取键盘输入的数据
2. 可以使用:input(提示信息),用以在使用者输入内容之前显示信息
3. 要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
练习:欢迎登录小程序
# My own work
user_name = input("请输入用户名称:")
user_type = input("请输入用户类型:")
print("您好:%s,您是尊贵的:%s用户,欢迎您的光临。" % (user_name, user_type))