目录
一、标识符
1.1 什么是标识符
在 Python 程序中,我们可以给很多东西起名字,比如:
- 变量的名字;
- 方法的名字;
- 类的名字,等等。
这些名字,我们把它统一的称之为标识符,用来做内容的标识。
所以,标识符:是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。
既然要起名字,就会有对应的限制。
1.2 标识符命名规则
Python 中,标识符命名的规则主要有 3 类:
- 内容限定
- 大小写敏感
- 不可使用关键字
1.2.1 标识符命名规则 - 内容限定
标识符命名中,只允许出现:
- 英文
- 中文
- 数字
- 下划线(_)
这四类元素。其余任何内容都不被允许。
1.2.2 标识符命名规则 - 大小写敏感
以定义变量为例:
Andy = “安迪1”
andy = “安迪2”
字母 a 的大写和小写,是完全能够区分的。
1.2.3 标识符命名规则 - 不可使用关键字
Python中有一系列单词,称之为关键字。关键字在Python中都有特定用途,我们不可以使用它们作为标识符。
1.3 案例演示
# 规则1:内容限定,限定只能使用:中文、英文、数字、下划线,注意:不能以数字开头
# 错误的代码示范:1_name = "张三"
# 错误的代码示范:name_! = "张三"
name_ = "张三"
_name = "张三"
name_1 = "张三"
# 规则2:大小写敏感
Andy = "安迪"
andy = 666
print(Andy)
print(andy)
# 规则3:不可使用关键字
# 错误的示例,使用了关键字:class = 1
# 错误的示例,使用了关键字:def = 1
Class = 1
1.4 变量命名规范
学完了标识符(变量、类、方法)的命名规则后,我们在来学习标识符的命名规范。
- 变量名
- 类名
- 方法名
不同的标识符,有不同的规范。
我们目前只接触到了:变量。所以,目前学习:变量的命名规范。
- 见名知意
- 下划线命名法
- 英文字母全小写
1.4.1 变量命名规范 - 见名知意
变量的命名要做到:
- 明了:尽量做到,看到名字,就知道是什么意思
- 简洁:尽量在确保“明了”的前提下,减少名字的长度
1.4.2 变量命名规范 - 下划线命名法
多个单词组合变量名,要使用下划线做分隔。
1.4.3 变量命名规范 - 英文字母全小写
命名变量中的英文字母,应全部小写:
1.5 总结
1. 什么是标识符?
用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。
2. 标识符的命名规则?
- 内容限定(中文、英文、数字、下划线)
- 大小写敏感
- 不可使用关键字
3. 变量的命名规范?
- 见名知意
- 下划线命名法
英文字母全小写。
不遵守规则:会出现问题
不遵守规范:不太高级
二、运算符
2.1 算术(数学)运算符
2.2 算术运算符的演示
# 算术(数学)运算符
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)
运行结果:
2.3 运算符类型
2.3.1 赋值运算符
2.3.2 复合赋值运算符
2.3.3 演示
# 赋值运算符
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)
运行结果:
2.4 总结
1. 常见的算术(数学)运算符有:
加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、求平方(**)
2. 赋值运算符有:
- 标准赋值: =
- 复合赋值:+=、-=、*=、/=、//=、%=、**=
三、字符串扩展
3.1 字符串的三种定义方式
字符串在 Python 中有多种定义形式:
- 单引号定义法:name = '你好世界'
- 双引号定义法:name = "你好世界"
- 三引号定义法:name = """你好世界"""
三引号定义法,和多行注释的写法一样,同样支持换行操作。
使用变量接收它,它就是字符串;
不使用变量接收它,就可以作为多行注释使用。
3.1.1 字符串的引号嵌套
思考:如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?
- 单引号定义法,可以内含双引号
- 双引号定义法,可以内含单引号
- 可以使用转移字符(\)来将引号解除效用,变成普通字符串
3.1.2 演示
# 单引号定义法,使用单引号进行包围
name = '你好世界'
print(type(name))
# 双引号定义法
name = "你好世界"
print(type(name))
# 三引号定义法,写法和多行注释是一样的
name = """
你好
世界
"""
print(type(name))
# 在字符串内 包含双引号
name = '"你好世界"'
print(name)
# 在字符串内 包含单引号
name = "'你好世界'"
print(name)
# 使用转义字符 \ 解除引号的效用
name = "\"你好世界\""
print(name)
name = '\'你好世界\''
print(name)
运行结果:
3.1.3 总结
1. 字符串的三种定义方式:
- 单引号方式
- 双引号方式
- 三引号方式
2. 引号的嵌套
- 可以使用:\ 来进行转义(\ 后面的符号被转义,即失效)
- 单引号内可以写双引号或双引号内可以写单引号
3.2 字符串拼接
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过 + 号即可完成,如:
输出结果:
单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接,如:
3.2.1 演示
# 字符串字面量之间的拼接
print("你好" + "世界")
# 字符串字面量和字符串变量的拼接
name = "Tom"
address = "广东省广州市"
tel = "996"
print("我是:" + name + ",我的地址是:" + address + ",我的电话是:" + tel)
运行结果:
既然可以和字符串变量完成拼接,那么,是否可以和其它变量类型如数字类型完成拼接呢?
name = "Tom"
address = "广东省广州市"
tel = 996 # 不加引号
print("我是:" + name + ",我的地址是:" + address + ",我的电话是:" + tel)
TypeError: can only concatenate str (not "int") to str
3.2.2 总结
1. 如何完成字符串拼接?
使用“+”号连接字符串变量或字符串字面量即可。
2. 有哪些注意事项?
无法和非字符串类型进行拼接。
3.3 字符串格式化
我们会发现,这个拼接字符串也不好用啊:
-
变量过多,拼接起来实在是太麻烦了
-
字符串无法和数字或其它类型完成拼接
所以,有没有其它方式,即方便又支持拼接其它类型呢?这个方式,就是字符串的格式化。
我们可以通过如下语法,完成字符串和变量的快速拼接。
其中的,%s
- % 表示:我要占位
- s 表示:将变量变成字符串放入占位的地方
所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置。
那,数字类型呢?可以不可以占位?
class_num = 22
avg_salary = 16781
message = "清华大学,本科%s级,毕业平均工资:%s" % (class_num, avg_salary)
print(message)
可以的,这里是将数字转换成了字符串。也就是数字 22,变成了字符串"22"被放入占位的地方。
注意:多个变量占位变量要用括号括起来并按照占位的顺序填入
Python中,其实支持非常多的数据类型占位,最常用的是如下三类:
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位:
name = "腾讯"
setup_year = 1998
stock_price = 19.99
message = "%s,成立于:%d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)
运行结果:腾讯,成立于:1998,我今天的股价是:19.990000
3.4 格式化的精度控制
细心的同学可能会发现:上面浮点数 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。
3.4.1 演示
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)
运行结果:
3.4.2 总结
1. 精度控制的语法是:
m.n 的形式控制,如 %5d、%5.2f、%.2f;m 和 .n 均可省略。
2. 如果 m 比数字本身宽度还小,会发生什么事?
m 不生效。
3. .n 会对小数部分做精度限制,同时:?
会对小数部分做四舍五入。
3.5 字符串格式化 - 快速写法
目前通过%符号占位已经很方便了,还能进行精度控制。
可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?
那当然:有
通过语法:f"内容{变量}" 的格式来快速格式化
看如下代码:
name = "腾讯"
set_up_year = 1998
stock_price = 19.99
# f: format
print(f"我是{name},我成立于:{set_up_year}年,我今天的股价是:{stock_price}")
注意:这种写法不做精度控制,也不理会类型,适用于快速格式化字符串。
3.6 字符串格式化 - 表达式的格式化
刚刚的演示,都是基于变量的。
可是,我想更加优雅些,少写点代码,直接对“表达式”进行格式化是否可行呢?
那么,我们先了解一下什么是表达式。
表达式:一条具有明确执行结果的代码语句。
如:
1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字。
又或者,常见的变量定义:
name = “张三” age = 11 + 11
等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量。
print("1 * 1 的结果是:%d" % (1 * 1))
print(f"1 * 2的结果是:{1 * 2}")
print("字符串在Python中的类型名是:%s" % type("字符串"))
运行结果:
在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码。
四、数据输入
4.1 获取键盘输入
试想一下,我们经常遇到过程序需要我们输入信息的场景。
比如:银行取钱
4.2 input语句(函数)
我们前面学习过 print 语句(函数),可以完成将内容(字面量、变量等)输出到屏幕上。
在 Python中,与之对应的还有一个 input 语句,用来获取键盘输入。
- 数据输出:print
- 数据输入:input
使用上也非常简单:
- 使用 input() 语句可以从键盘获取输入
- 使用一个变量接收(存储)input 语句获取的键盘输入数据即可
input() 语句其实是可以在要求使用者输入内容前,输出提示内容,方式如下:
name = input("请告诉我你是谁?")
print("我知道了,你是:%s" % name)
4.3 input 语句获取的数据类型
我们刚刚试验的都是输入了字符串类型的数据。那么如果我们输入数字类型或其它类型,结果会如何?
# 输入数字类型
num = input("请告诉我你的银行卡密码:")
# 数据类型转换
num = int(num)
print("你的银行卡密码的类型是:", type(num))
4.4 总结
-
input()语句的功能是,获取键盘输入的数据
-
可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。
-
要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型(除非进行数据转换)
上一篇文章:【Python | 基础语法篇】01、字面量、注释、变量、数据类型及转换_Stars.Sky的博客-CSDN博客