基本数据类型

类型简写示例
整数类型int233
浮点数类型float23.3
复数类型complex23.3+33j
布尔类型boolTrue / False
字符串类型strwdnmd

1.整数类型:可以表示正数、负数、0

整数类型理论上的取值范围是无穷小到无穷大,实际取值范围受限于计算机内存大小,一般认为整数类型没有取值范围限制。

十进制默认的进制
二进制0b开头
八进制0o开头
十六进制0x开头
整数的不同进制表示方式

示例代码

a=233  
b=-233  
c=0  
print(a,type(a))  
print(b,type(b))  
print(c,type(c))  
  
#整数的不同进制表示方式  
print('DEC',233)  
print('BIN',0b11101001)  
print('OCT',0o351)  
print('HEX',0xE9)

2.浮点类型:整数部分 + 小数部分

       • 浮点数存储不精确性:使用浮点数进行计算时,可能会出现小数位数不确定的情况

       • 解决方法:导入模块decimal(此处不展开)

示例代码

a=1.1  
b=2.2  
c=2.1  
print(a+b) #等于3.3000000000000003 为什么会这样?  
  
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))  
  
print(a+c) #并不是都会出现以上情况

3.复数类型:a+bj

复数的虚部通过后缀 “J” 或 “j” 表示,如:2+33j

在复数类型中,实部和虚部的数值都是浮点类型;对于复数z,可以使用z.real和z.imag分别获取实数部分和虚数部分。

示例代码

print((2+33j).real)  
print((2+33j).imag)  
print(type((2+33j).real))  
print(type((2+33j).imag))  

4.布尔类型:用来表示真假的值(*)

True1
False0

布尔值可以转化为整数:

示例代码

a=True  
b=False #首字母大写  
print(a,type(a))  
print(b,type(b))  
      
#布尔值可以转化为整数计算  
print(a+1)  
print(b+1)  

5.字符串类型:不可变字符序列(**)

  • 使用单引号、双引号、三引号定义
  • 单引号、双引号定义的字符串必须在同一行
  • 三引号定义的字符串可多行

示例代码

str1='A1高闪来一个'  
str2="A1高闪来一个"  
str3="""A1高闪 
来一个"""  
str4='''''A1高闪 
来一个'''  
  
print(str1,type(str1))  
print(str2,type(str2))  
print(str3,type(str3))  
print(str4,type(str4))  

注:*)课本中并没有涉及布尔类型           **)笔者并没有完全遵循课本的引入顺序

数据类型转换

为什么需要转换数据类型?先看以下代码,能否打印出“Name: Yui    Height: 156”?自行尝试后继续阅读。

(其中的加号“+”是连接符,用于字符串的拼接,只用作引入,在本章节不作为重点)

示例代码

name='Yui'  
height=156  
print(type(name))  
print(type(height)) #二者数据类型不相同  
print('Name:'+name+'    Height:'+height)  
发生异常: TypeError
can only concatenate str (not "int") to str
File "D:\py_coding\test.py", line 5, in <module>
print('Name:'+name+' Height:'+height)
你会看到类似的报错

height变量类型为int,name变量类型为str,无法拼接;可以将int类型转换为str后再打印:

示例代码

name='Yui'  
height=156  
print('Name:'+name+'    Height:'+str(height)) 
函数名用处
str()将其他数据类型转为字符串也可以用引号(‘ ’)转换
int()将其他数据类型转为整型文字、小数类字符串无法转换浮点数转整数抹零取整
float()将其他数据类型转为浮点型文字无法转换整数转浮点数末尾为.0

运算符

1.算术运算符

标准算术运算符加(+),减(-),乘(*),除(/),整除(//)
取余运算符%
幂运算符**

2.赋值运算符:=

执行顺序:从右到左

支持链式赋值、参数赋值、系列解包赋值

示例代码

#链式赋值  
a=b=c=114514  
print(a,type(a))  
print(b,type(b))  
print(c,type(c))  
#参数赋值  
a+=1  
print(a) 
#解包赋值  
m,n,p=1,2,3print(m,n,p)  

#用解包赋值交换变量  
m,n=n,m  
print(m,n)

3.比较运算符

运算结果为布尔类型;

使用 == 比较变量的值;is/is not 比较变量的标识。

示例代码

a,b=233,666  
print(a>b)  
print(a<b)  
print(a>=b)  
print(a<=b)  
print(a==b)  
print(a!=b)  
c,d=233,233  
print(a==b) #比value  
print(a is b) #比ID  
print(a is not b) #a的id和b的id是不相等的吗?  
  
lst1=[1,2,3,4,5]  
lst2=[1,2,3,4,5]  
print(lst1==lst2) #比value  
print(lst1 is lst2) #比ID  
print(lst1 is not lst2) #lst1的id和lst2的id是不相等的吗?  
print(id(lst1))  
print(id(lst2))  

4.布尔运算符

WordPress的表格真是一言难尽,允许我偷懒贴一张图

示例代码

a,b=233,666  

print(a==233 and b==666)  
print(a==233 and b<666)  
print(a!=233 and b==666)  
print(a!=233 and b!=666)  
  
print(a==233 or b==666)  
print(a==233 or b<666)  
print(a!=233 or b==666)  
print(a!=233 or b!=666)  
  
m=True  
n=False  
print(not(m))  
print(not(n)) 
str1='kano_dayo'  
print('kano'in str1)  
print('test'in str1)  
print('kano'not in str1)  
print('test'not in str1) 

5.位运算

按位与&对应位数都为1结果位才是1,否则为0
按位或|对应位数都为0结果位才是0,否则为1
左移位<< 高位溢出舍弃,低位补0
右移位>> 低位溢出舍弃,高位补0

结论:

• 向左移动一位相当于乘以2

• 向右移动一位相当于除以2

6.运算符优先级

( )中的内容>算术>位>比较>布尔>赋值


我们所度过的每个平凡的日常,也许就是连续发生的奇迹