文章目录
在上一章节中,我们已经知道了什么是变量。接下来,我们再对变量深入理解一下。
一、变量类型
为了区分不同种类的数据,我们引入了"类型"这个概念。
在Python中,类型不需要我们去主动指定,编译器会根据我们对变量进行的初始化或赋值操作,判断这个变量为哪种类型。这也意味着,在一个程序中,一个变量的类型是可以随时转换的。
1.整数
a = 10
print(type(a)) #<class 'int'>
在Python中,可以使用type来查看当前变量的类型。运行上面这段代码,我们可以得出:当变量中存储的是一个整数时,它的数据类型为"int"。
2.浮点数(小数)
a = 0.5
print(type(a)) #<class 'float'>
当变量中存储的是一个小数时,它的数据类型为"float"。
3.字符串
a = "hello"
print(type(a)) #<class 'str'>
a = 'hello'
print(type(a)) #<class 'str'>
在Python中,使用单引号或者双引号 引起来的称为字符串,用str表示。
a = 'hello'
print(type(a)) #<class 'str'>
print(len(a)) #5(获取字符串长度)
我们可以使用len函数来获取字符串的长度。(如上代码)
a = 'hello'
b = 'world'
print(a + b) #helloworld(拼接字符串)
我们还可以使用加号将两个字符串进行拼接。(注意:不能用字符串和整数或浮点数相加!!!)
4.布尔
布尔类型(bool)是一种特殊的类型,取值只有两种:True(真)和False(假)(注意:两种的首字母都要大写!!!)
a = True
print(type(a)) #<class 'bool'>
b = False
print(type(b)) #<class 'bool'>
5.其他
除上述类型外,Python中还有许多其他的类型,我们后续再进行详细介绍。
二、输入输出
1.输出
在之前的学习中,我们已经多次使用print函数在控制台上输出我们想要打印的内容。
a = 10
print(a)
但有时我们也许希望输出的内容中能带一些说明,例如"a = 10",这时就可以使用f作为前缀的字符串:f-string。
a = 10
print(a) #10
print(f'a = {a}') #a = 10
{}中存放的是变量。
像上面这段代码我们就使用了f-string来达到想要的结果。
2.输入
Python通过input函数读取用户从控制台的输入。
num = input('请输入一个数字:')
print(f'你输入的数字为:{num}')
input的参数会显示在控制台上,等待你输入数据,可以将input的参数看作"提示信息",是可有可无的。
此时,我们编写一个程序,输入两个整数,计算它们的和:
a = input('请输入一个数字:')
b = input('请输入一个数字:')
c = a + b
print(f'求和结果为{c}')
我们运行这段代码,会发现结果并非两个数的和。
这是因为input的返回值是字符串类型,两个字符串相加是将两个字符串进行拼接。
而要想计算两个数的和,就需要先将输入的整数转化为int类型。
a = input('请输入一个数字:')
b = input('请输入一个数字:')
a = int(a)
b = int(b)
c = a + b
print(f'求和结果为{c}') #30
我们通过 int() 将字符串类型的a转换为整型类型的a。对于其他数据类型也可以使用类似的方法进行转换。
三、运算符
1.算术运算符
算术运算符包括加、减、乘、除、取余、乘方、地板除。
在算术运算符中有几个需要注意的点:
注意点1:0不能作为被除数,否则程序会抛出异常。
print(10 / 0)
注意点2: ** 代表乘方,既可以运算整数次方,也可以运算小数次方。
a = 4
print(a ** 2) #16
print(a ** 0.5) #2.0
注意点3:// 代表地板除,也叫取整除法。在运算时,如果运算结果是小数,则会舍弃小数点后的数字,只保留整数。
print(16 // 5) #3
2.关系运算符
关系运算符包括:**<、>、<=、>=、==、!=**这6种。
关系运算符的返回值为布尔类型,如果表达式成立就返回True,否则返回False。
a = 10
b = 20
print(a > b) #False
print(a < b) #True
print(a == b) #False
print(a != b) #True
print(a >= b) #False
print(a <= b) #True
关系运算符也可以对字符串进行比较。比较大小的规则是按照字典序进行的。(字典序可以理解为:一个单词在字典上越靠前就越小,反之就越大)
a = 'hello'
b = 'world'
print(a > b) #False
print(a < b) #True
print(a == b) #False
print(a != b) #True
print(a >= b) #False
print(a <= b) #True
在上一章节中,我们说过小数在内存中不会精确保存。所以如果在进行小数运算时使用关系运算符可能会产生意想不到的错误。(如下代码)
a = 0.1
b = 0.2
c = 0.3
print(a + b == c) #False
print(a + b) #0.30000000000000004
在进行小数比较时,应该判断差值是否在可接受的范围内。
a = 0.1
b = 0.2
c = 0.3
print(-0.000001 < (a + b - c) < 0.000001) #True
3.逻辑运算符
逻辑运算符包括:and、or、not
and 并且:两侧结果均为True时,最终结果为True;否则为False。(一假则假)
or 或者:两侧结果均为False时,最终结果为False;否则为True。(一真则真)
not 逻辑取反:操作数本身为True时,返回False;操作数本身为False时,返回True。
a = 10
b = 20
c = 30
print(a < b and b < c) #True
print(a < b < c) #True
print(a < b and b > c) #False
print(a > b or b > c) #False
print(a < b or b > c) #True
print(not a < b) #False
print(not a > b) #True
在Python中,(a < b and b < c)和(a < b < c)这两种写法是等价的。
在使用and和or时,可能会出现短路的情况。
print(10 > 20 and 10 / 0 == 1) #False
print(10 < 20 or 10 / 0 == 1) #True
在之前我们说过,被除数不能为0,否则会抛出异常;而在这里,代码却正常运行,这就是因为出现了"短路"的情况,逻辑运算符右侧的表达式没有被执行。
对于and来说:如果左侧表达式为False,则整体的结果一定为False,右侧表达式不再计算。
对于or来说:如果左侧表达式为True,则整体的结果一定为True,右侧表达式不再计算。
4.赋值运算符
赋值运算符就是 “=”。在进行变量初始化和赋值的时候已经多次用到了赋值运算符,这是其最基本的用法。赋值运算符还可用于链式赋值和多元赋值。
4.1 链式赋值
a = b = 10
4.2 多元赋值
a, b = 10, 20
基于多元赋值,可以快速实现两个数的交换:
a = 10
b = 20
a, b = b, a
print(a, b) #20 10
4.3 复合赋值运算符
复合赋值运算符包括:+=、-=、*=、/=、%= 。
a = 1
a = a + 1
print(a) #2
a = 1
a += 1
print(a) #2
在上面这段代码中,我们以"+="举例,其他复合赋值运算符也是同理。
5.小结
对于运算符的了解,掌握以上这些便可应对Python基础中大部分场景。