文章目录
- 一、字面值常量和表达式
- 二、变量
-
- [2.1 定义变量](#2.1 定义变量)
- [2.2 变量的命名规则](#2.2 变量的命名规则)
- [2.3 变量的类型](#2.3 变量的类型)
- [2.4 不同类型大小](#2.4 不同类型大小)
- [2.5 动态类型](#2.5 动态类型)
- 三、注释
- 四、输入与输出
- 五、运算符
-
- [5.1 算术运算符](#5.1 算术运算符)
- [5.2 关系运算符](#5.2 关系运算符)
- [5.3 逻辑运算符](#5.3 逻辑运算符)
- [5.4 赋值运算符](#5.4 赋值运算符)
一、字面值常量和表达式
python
print(1 + 2 * 3) # 7
print(1 + 2 / 3) # 1.6666666666666665
这里的1 + 2 * 3就被称为表达式 ,表达式的运算结果称为表达式的返回值,而像1,2,3这样的数字称为字面值常量。
细节:
在C/C++中,2 / 3是向下取整,而在Python中则是变成了浮点数。
并且Python中不存在四舍五入的概念,所以第二个表达式的结果如上,Python中浮点数在内存中的存储遵循IEEE754标准。
二、变量
2.1 定义变量
跟C/C++一样,Python也有变量
python
a = 100 + 120
print(a) # 220
这里的a就是变量
变量存在的目的就是把结果保存起来,方便后续使用
2.2 变量的命名规则
- 变量名由数字、字母、下划线构成。
- 变量名不能以数字开头。
- 变量名不能和Python的"关键字"重复。
- 变量名大小写敏感,比如num和Num是两个不同的变量名。
2.3 变量的类型
Python中变量的类型不需要在定义的时候显式声明,是根据初始化的值的类型来进行确定的。
- 整数 int
python
a = 1
print(type(a)) # <class 'int'>
细节:
与C/C++等其他语言不同的是,Python中int类型的变量能够表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大的数据。
- 浮点数 float
python
a = 1.01
print(type(a)) # <class 'float'>
与C/C++等其他语言不同的是,Python中的浮点数只有float一种类型,没有double类型,实际上Python中的float就相当于C/C++等语言中的double类型,表示双精度浮点数。
- 字符串 str
python
a = 'abc'
print(type(a))
Python语法要求字符串必须要用引号括起来(单引号双引号三引号都行)
如果字符串本身包含引号呢?
python
a = "my name is "yyh"" # error
正确写法:
python
a = "my name is 'yyh'"
b = 'my name is "yyh"'
字符串中有单引号,就用双引号引起来
字符串中有双引号,就用单引号引起来
如果同时有单引号和双引号呢?
可以使用三引号
python
'''或"""
python
a = '''My 'name' is "yyh"'''
print(a) # My 'name' is "yyh"
字符串也可以使用len来获取长度
python
a = 'abcdef'
print(len(a)) # 6
跟C++一样,可以使用+对两个字符串进行拼接,比如:
python
a = 'abcdef'
b = 'ghi'
c = a + b
print(c) # abcdefghi
- 布尔 bool
布尔类型的取值只有两种,True(真)和False(假)。
特别注意大小写
python
a = True
print(a) # True
python
a = 10
b = 20
print(a == b) # False
2.4 不同类型大小
int 默认四个字节,可以动态扩容
float 固定八个字节
bool 一个字节
str 变长的
2.5 动态类型
动态类型与静态类型:
- 动态类型: 在运行时,解释器基于变量值的类型决定变量的类型。
- 静态类型: 在编译时,编译器基于所声明的数据类型确定变量的类型。
C/C++等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型,而Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型。
python
a = 10
print(type(a)) # <class 'int'>
a = '10'
print(type(a)) # <class 'str'>
三、注释
Python有两种注释方法:
1️⃣ 注释行
python
# 这是一个注释
2️⃣ 文档字符串
python
"""
这是一个注释
"""
单引号双引号同理
四、输入与输出
输入输出的最基本的方法就是控制台,用户可以通过控制台输入一些字符串传递给程序,程序再通过控制台将其运行结果展示给用户。
- 输出
python
a = 100
print(a) # 100
格式化输出:
预期格式化输出:a = 100
python
a = 100
print(f"a = {a}") # a = 100
使用f作为前缀的字符串,称为f-string。
- 输入
python
num = input('请输入一个数字: ')
print(f"输入的数字是 {num}")
# 请输入一个数字: 5
# 输入的数字是 5
input的返回值就是用户输入的内容,是字符串类型。
python
a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
print(f"a + b = {a + b}")
python
请输入第一个数字: 123
请输入第二个数字: 456
a + b = 123456
如果想要进行算术运算,那么需要在运算前对读取到的值进行类型转换。比如:
python
a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
a = int(a)
b = int(b)
print(f"a + b = {a + b}")
python
请输入第一个数字: 123
请输入第二个数字: 456
a + b = 579
五、运算符
5.1 算术运算符
Python中的算术运算符,包括+
、-
、*
、/
、%
、**
(幂)、//
(地板除)。
注意事项:
两个整数相除后可能得到的是一个浮点数。不会舍弃小数
**
可以求一个数的整数次方,也可以求一个数的小数次方
//
是地板除,整数除以整数得到的结果还是整数(舍弃小数部分,向下取整)
5.2 关系运算符
像 <
、 <=
、>
、>=
、==
、!=
这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的关系。
这里特殊说一下两个字符串也可以直接比较大小。
用的是字典序比较
而浮点数比较不能直接使用==来判断两个浮点数是否相等,因为浮点数在计算机中的表示并不是精确的。比如:
python
print(0.1 + 0.2 == 0.3) # False
print(0.1 + 0.2) # 0.30000000000000004
正确的比较方式应该是,判定这两个浮点数的差值是否小于允许的误差范围。比如:
python
a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001) # True
5.3 逻辑运算符
像 and
or
not
这一系列的运算符称为逻辑运算符
and
:并且。两侧操作数均为True,则最终结果为True,否则为False(一假则假)or
:或者。两侧操作数均为False,则最终结果为False,否则为True(一真则真)not
:逻辑取反。操作数本身为True,则返回False,本身为False,则返回True。
python
a = 100
b = 200
print(not a > b) # True
细节问题:
在Python中支持连续比较,
a < b and b < c
等价于a < b < c
,这个设定与其他编程语言都不相同。
5.4 赋值运算符
- =的使用
链式赋值是使用=同时对多个变量进行赋值的常见方式,比如:
python
a = b = 100
print(f"a = {a}, b = {b}") # a = 100, b = 100
多元赋值:
python
a, b = 100, 200
print(f"a = {a}, b = {b}") # a = 100, b = 200
多元赋值能帮我们解决一些特殊问题,比如完成两个变量的交换:
python
a, b = 100, 200
a, b = b, a
print(a, b) # 200 100
- 复合赋值运算符
对于复合赋值运算符+=来说,a += 1等价于a = a + 1,其他复合赋值运算符也是类似的道理。
注意:
C/C++等某些语言中支持++和--运算符,但Python中不支持这种运算符,如果需要对变量进行自增/自减,则直接进行对应的+= 1/-= 1操作。