【我的Python通关秘籍】从被报错虐到优雅编程02

第一阶段 第二章

目录

一、字面量

二、注释

三、变量

四、数据类型

五、数据类型转换

六、标识符

七、运算符

八、字符串的三种定义方式

九、字符串的拼接

十、字符串格式化

十一、字符串格式化的精度控制

十二、字符串格式化的方式二

十三、对表达式进行格式化

十四、字符串格式化练习题讲解

十五、数据输入(input语句)


一、字面量

(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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值