一、 保留字与标识符
开发程序时不能把保留字(具有特定意义,区分大小写)作为变量、函数、类、模块和其他对象名称使用

保留字
示例3-1查询pathon中的保留字
import keyword
print(keyword.kwlist)#查询保留字
print(len(keyword.kwlist))#查询保留字字的个数

示例3-2保留字严格区分大小写
true='真'
True='真'#True是pathon中的保留字
  • 标识符命名规则
    第一个字符不能是数字
    不能使用保留字
    标识符严格区分大小写
    以下划线开头的字符有特殊意义,一般应避免使用相似的标识符
    允许使用中文作为标识符,但不建议使用




二、变量与常量
变量名=value

变量可以用来存储数据,变量没有类型,变量存储的数据有类型-

变量的定义
示例3-3变量的定义与使用
luck_number=8#创建一个整数变量luck_number,并为其赋值为8

my_name='ysj'#字符串类型变量
print('luck_number的字符串类型为:',type(luck_number))

#pathon动态修改变量的数据类型。通过赋不同的值可以直接修改
luck_number='北京欢迎您'
print('luck_number的数据类型为:',type(luck_number))#<close 'str'>

#在pathon中允许多个变量指向同一个值
no=number=1024 #no和number都指向同一个值
print(no,number)
print(id(no))#id()查看对象的内存地址 1614276149712
print(id(number))#1614276149712

常量的定义
示例3-4常量的定义
pi=3.1415926#定义了一个变量
PI=3.1415926#定义了一个常量


三、数值类型
整数类型:十进制(默认)、二进制(0b/0B)、八进制(0o/0O)、十六进制(0x/0X);属于不可变类型

整数类型
示例3-5整数的四种表示形式
num=987#默认使用十进制表示整数
num2=0b101001#使用二进制表示整数
num3=0o765#使用八进制表示整数有
num4=0x87ABF#使用十六进制表示整数
print(num)
print(num2)
print(num3)
print(num4)

1.浮点型:表示带有小数点的数值,由小数和整数组成

注意:两个浮点数运算时,有一定概率在结果后面增加一些**不确定的数****

2.复数:由实部(.real)和虚部(.imag)组成

浮点型与复数
示例3-6浮点数类型使用
height=187.6 #身高
print(height)
print(type(height)) #type()查看这个变量height的数据类型

x=10
y=10.0
print('x的数据类型为:',type(x))#int
print('y的数据类型为:',type(y))#flot

x=1.99E1413
print('科学计数法:',x,'x的数学类型:',type(x))
print(0.1+0.2)#不确定的尾数问题0.300000000004

print(round(0.1+0.2,1))#保留一位小数,0.3

示例3-7 复数的使用
x=123+456j
print('实数部分为:',x.real)
print('虚数部分为:',x.imag)

3.字符串类型:不可变字符

界定符(单引号,双引号,三引号)

字符串
示例3-8字符串的使用
city='天津'
address="天津市宝坻区香江大街3号"
print(city)
print(address)

#多行字符串
info='''地址:天津市宝坻区香江大街3号
    收件人:ysj
    手机号:18600000000
'''
info2="""地址:天津市宝坻区香江大街3号
    收件人:ysj
    手机号:18600000000"""
print(info)
print('---------------------------')
print(info2)

示例3-9转义字符的使用
print('北京')
print('欢迎你')
print('----------------------')
print('北京\n欢迎您') #遇到\n即换行,可以连续换多行
print('北\n京\n欢\n迎\n您')
print('-------------')
print('北京北京\t欢迎您')#\t空格有多大取决于前面字符有多少
print('hello\toooo')#hello为5个字符,一个制表位为8个字符8-5=3
print('hellooooo')
print('老师说:\'好好学习,天天向上\'')
print('老师说:\"好好学习,天天向上\"')

#原字符,使转义字符失效的字符
print(r'北\n京\n欢\n迎\n您')
print(R'北\n京\n欢\n迎\n您')


4.字符串类型

字符串又被称为有序的字符序列,对字符串中的某个字符的检索称为索引

字符串检索
示例3-10字符串的索引及切片
s='HELLOWORLD'
print(s[0],s[-10]) #序号0和序号-10表示的是同一个字符
print('北京欢迎您'[4])#获取字符串中索引为4
print('北京欢迎您'[-1])
print(s[2:7])#从2开始到7结束,不包含7,正向递增
print(s[-8:-3])#不包含-3,反向递减
print(s[:5])#默认N从0开始到5结束,不包含5
print(s[5:])#M默认是切到字符串结尾

  • 常用字符串操作

常用字符串操作
示例3-11字符串型的操作
x='2022年'
y='北京冬奥会'
print(x+y)#连接两个字符
print(x*10)#对x字符复制10次
print(10*x)

print('北京'in y) #true
print('上海'in y) #false

5.布尔类型

用来表示真(True表示整数1)或假(Flase表示整数0)的数据

布尔类型
示例3-12布尔类型的操作
x=True
print(x)
print(type(x))
print(x+10) #11--->1+10
print(False+10) #10--->0+10
print('------------')
print(bool(18)) #测试整数18的布尔值
print(bool(0.0)) #测试整数0.0的布尔值
#非零的整数布尔值都为True
print(bool('北京欢迎您')) #True
print(bool('')) #False
#所有非空字符串的布尔值都为True
print(bool(False))#False
print(bool(None)) #False



四、数据类型的转换

数据转化:隐式转换(自动转换)和显式转换(通过函数转换)
想要将字符串转换为数字,必须要求字符串内的内容都是数字

点击查看代码
示例3-13数据类型之间的转换
x=10
y=3
z=x/y #在执行除法运算时将运算结果赋值给z
print(z,type(z)) #隐式转换,将运算隐式转了结果

#floot转换为int,只保留整数部分
print('floot类型转为int类型:',int(3.14))
print('floot类型转为int类型:',int(3.9))
print('floot类型转为int类型:',int(-3.14))
print('floot类型转为int类型:',int(-3.9))

#将int转为float类型
print('将int转为float类型:',float(10))
#将str转为int类型
print(int('100')+int('200'))
#将字符串转为int或float时报错的情况
#print(int('18a')) #ValueError: invalid literal for int() with base 10: '18a'
# print(int('3.14')) #ValueError: invalid literal for int() with base 10: '3.14'
#print(float('45a.987')) #ValueError: could not convert string to float: '45a.987'


#chr()ord()一对
print(ord('杨')) #杨在Unicode中对应的整数值
print(chr(26472)) #26472整数在Unicode中对应的整字符是什么

#进制之间的转换操作,十进制与其他进制之间的转换操作
print('十进制转为十六进制:',hex(26472))
print('十进制转为八进制:',oct(26472))
print('十进制转为二进制:',bin(26472))


五、eval函数(内置函数)

用于去除字符串最外层的引号,并按照pathon语句方式执行去掉引号后的字符串
eval()函数常与input()函数一起使用
变量=eval(字符串)

点击查看代码
示例3-14 eval函数的使用
s='3.14+3'
print(s,type(s))
x=eval(s) #使用eval函数去掉s这个字符串中左右引号,执行加法运算
print(x,type(x))

#eval()常与intput()一起使用,用来获取用户输入的数值
age=eval(input('请输入您的年龄:')) #将字符串类型转为int类型,相当于int(age)
print(age,type(age))

height=eval(input('请输入您的身高:'))
print(height,type(height))

hello='北京欢迎您'
print(hello)
print(eval('hello'))#输出了北京欢迎您
#print(eval('北京欢迎您'))#ameError: name '北京欢迎您' is not defined
#注:使用eval函数括号里必须要定义



六、运算符

  • 算数运算符

注意:算术运算符具有优先级
第一级幂运算
第二级乘、除、取余、整除
第三级加减

点击查看代码
示例3-15算术运算符的使用
print('加法:',1+1)
print('减法:',1-1)
print('乘法:',2*3)
print('除法:',10/2)
print('整除:',10//3)
print('取余:',10%3)
print('幂运算:',2**4) #2*2*2*2
print(10/0) #ZeroDivisionError: division by zero

  • 赋值运算符

点击查看代码
示例3-16 赋值运算符的使用
x=20 #直接赋值,将20赋值给变量x
y=10
x=x+y #将x+y赋值给x
print(x) #x的值为30
x+=y #40 相当于x=x+y
x-=y #相当于x=x-y
print(x) #30
x*=y #x=x*y
print(x) #300
x/=y #x=x/y
print(x) #30.0发生了类型转换x的数据为float类型
x%=y #x=x%y
print(x) #0.0
z=3
y//=z #想到于y与z整除在赋值给y
print(y) #3

y**=2 #相当于y=y**2
print(y)

#Pathon 支持链式赋值
a=b=c=100 #相当于执行了a=100 b=100 c=100

#Pathon 支持系列解包赋值
a,b=10,20 #相当于执行a=10 b=20
print(a,b)

print('-------如何交换两个变量的值-------')
a,b=b,a #将a的值赋值给b,将b的值赋值给a
print(a,b)

 

  • 比较运算符(关系运算符)


注意:比较结果为bool类型

点击查看代码
示例3-17 比较运算符的使用
print('98大于90吗?',98>90)
print('98小于90吗?',98<90)
print('98等于90吗?',98==90)
print('98不等于90吗?',98!=90)
print('98大于等于90吗?',98>=90)
print('98小于等于90吗?',98<=90)

  • 逻辑运算符

点击查看代码
示例3-18逻辑运算符的使用
#and运算
print(True and True)
print(True and False)
print(False and False)
print(False and True)
print('-'*40)

print(8>7 and 6>5)
print(8>7 and 6<5)
print(8<7 and 10/0) #Flase ,10/0并没有计算,当第一个表达式的结果为Flase时,并不会计算and右边表达式结果
print('-'*40)

#or运算
print(True or True)
print(True or False)
print(False or False) #Flase
print(False or True)

print(8>7 or 10/0) #True ,10/0并没有计算,当第一个表达式的结果为True时,并不会计算or右边表达式结果
print('-'*40)

#not运算
print(not True)
print(not False)
print(not (8>7))

  • 位运算符




点击查看代码
示例3-19位运算的使用
print('按位与运算',12&8)
print('按位或运算',4|8)
print('按位异或运算',31^22) #相同为0
print('按位取反',~123)

print('左移位',2<<2) #8,表示2向左移动2位 2*2*2
print('左移位',2<<3) #16 相当于2*2*2*2
print('右移位',8>>2) #相当于8/2,4/2
print('右移位',-8>>2) #-2
#总结:向左移位1次,相当于乘一次2;向右移一次相当于除以一次2