变量
- 定义:用来保存数据的“名字”
- 组成:标识(用id()函数获取),类型(用type()函数获取),值(用print()函数获取)
- 变量的命名
- 没有被赋值的变量不能读取出来
NameError
- 由英文字母,下划线和数字组成,不能以数字开头,不能包含空格
- 不能把关键字(保留字)当做变量名
import keyword print(keyword.kwlist)
- 不能把内置函数当做变量名,不小心用了可以用del删除
dir(__builtins__)
- 见名知意或者使用注释(#)
- 没有被赋值的变量不能读取出来
赋值语句
- a = 1是赋值语句,赋值语句把右边的值赋值到左边的变量接收
- 系列解包赋值
x,y,z = 1,2,3
#交换a,b的值
a,b = 10,20
a,b = b,a
- 链式赋值
x = y = z = 20
- 参数赋值:+=、-=、*=、/=、//=、%=
输入和输出
- 编辑模式下输出结果需要使用print()函数
- input输入函数
- 括号里的字只起提示作用
in_a = input('请输入一个数字:')
- input接收到的类型都是字符串
>>>in_a = input('请输入一个数字:') 请输入一个数字:2 >>>in_a '2'
数值类型
- 整型
>>>type(1)
<class 'int'>
- 整数的不同进制表示方式
#不同进制转十进制
print('十进制',12) #输出十进制 12
print('二进制',0b1010) #输出二进制 10
print('八进制',0o176) #输出八进制 126
print('十六进制',0x1f) #输出十六进制 31
#十进制转不同进制
num = int(input('请输入一个十进制整数:'))
#十进制转二进制,bin()函数
#type(bin(num)) 类型为str
print(str(num)+'的二进制数为:'+bin(num)) #95的二进制数为0b1011111
print(num,'的二进制数为:',bin(num)) #95 的二进制数为 0b1011111,有空格
#十进制转八进制,oct()函数
print(str(num)+'的八进制数为:'+oct(num))
#十进制转十六进制,hex()函数
print(str(num)+'的十六进制数为:'+hex(num))
- 浮点型
>>>type(1.2)
<class 'float'>
- 布尔型 True(1) False(0)
type(True)
<class 'bool'>
- 复数
type(1+2j)
<class 'complex'>
- 类型转换
- str()
#可以用str()函数转成str类型的有:整型、浮点型、布尔型 name = '张三' age = 18 #print('我叫'+name+'今年'+age+'岁') #当str类型与int类型进行连接时会报错 print('我叫'+name+'今年'+str(age)+'岁') #将int类型通过str()函数转成str类型 print('我叫'+name+'今年'+'18'+'岁') #用引号将int类型转成str类型
- int()
#可以用int()函数转成int类型的有:整数型字符串、浮点型(只截取整数部分)、布尔型 #文字型字符串和浮点型字符串不行
- float()
a = 1 print(float(a)) #输出1.0 #可以用float()函数转成float类型的有:整数型字符串、浮点型字符串(小数位数不变)、整型、布尔型 #文字型字符串不行
运算符
-
算术运算符
- 加+
- 减-
- 乘*
- 除/
- 幂运算**
- 整除(取商)//
- 取余%
- 一正一负的取整运算:向下取整
print(9//-4) #-3 print(-9//4) #-3
- 一正一负的取余运算:余数=被除数-除数*商
print(9//-4) #9-(-4)*(-3)=-3 print(-9//4) #-9-4*(-3)=3
整型之间除法的计算结果,都是浮点型。就算刚好整除,也会得到一个浮点型数据。
浮点型的计算结果是浮点型,只要参与运算的双方有一个是浮点型,那么结果也是浮点型。 -
比较运算符
- <、>、<=、>=、!=、==
- 对象value的比较:==
- 对象的id的比较:is, is not
a = 10 b = 10 print(a == b) #True print(a is b) #True print(a is not b) #False lst1 = [10,20.30] lst2 = [10,20,30] print(lst1 == lst2) #True print(lst1 is lst2) #False
-
布尔运算符
- and,只有当and两边为真时,才返回真
- or,当or两边其一为真,则返回真
- not,真的变成假的,假的变成真的
- 优先级:not>and>or,从左到右
>>>not 1 == 1 and 2 == 2 and 2 == 3 or 3 ==3 True
- in
- not in
-
位运算
- 位与&:对应数位都是1,结果数位才是1,否则为0
print(4 & 8) #0,按位&,同为1结果为1,同为0结果为0
- 位或 |:对应数位都是0,结果数位才是0,否则为1
print(4 | 8) #12,按位|
- 左移位运算符<<:高位溢出舍弃,低位补0
print(4<<1) #8,向左移动1位,相当于乘2 print(4<<2) #16,向左移动2位
- 右移位运算符>>:低位溢出舍弃,高位补0
print(4>>1) #2,向右移动1位,相当于除以2
-
运算符的优先级
算术运算–>位运算–>比较运算–>布尔运算–>赋值运算
逻辑运算
- 逻辑短路:通过and连接,当左边为假时,右边的结果对于整体的结果没有影响;通过or连接,当左边为真时,右边的结果对于整体的结果没有影响;not不存在逻辑短路
>>>1 == 1 and a == 2 报错 NameError >>>1 == 2 and a == 2 False >>>1 == 1 or a == 2 True
- 以下情况出现了逻辑短路( ‘1’ > ‘2’ > 3相当于’1’ > ‘2’ and ‘2’ > 3)
>>>'1' > '2' > 3 False >>>'1' > '2' and '2' > 3 False # 字符串不能与数字比较大小
- a and b,如果a是False,则整个结果必定为False,因此返回a的值;如果a是True,则表达式的结果取决于b,因此返回b的值
- a or b,如果a是True,则整个结果必定为True,因此返回a的值;如果a是False,则表达式的结果取决于b,因此返回b的值
字符串(str)
- 字符串和数字不能相加
TypeError
- 字符串定义的方式
- 单引号
- 双引号
- 三引号(三个单引号和三个双引号都可以)可换行
- 字符串的计算
- +用于字符串的拼接
- *字符串乘数字表示把当前的字符串重复几遍
- 没有减法和加法
- 字符串的拼接
- +
- %s相当于占位符,按顺序
>>>str1 = '2022' >>>str2 = '6' >>>str3 = '17' >>>'%s年%s月%s日'%(str1,str2,str3) '2022年6月17日'
- join在统一拼接符时最方便,只能用于字符串拼接
>>>'-'.join([str1,str2,str3]) '2022-6-17'
- 默认按顺序,数字表示下标,下标从零开始
>>>'{}年{}月{}日'.format(str1,str2,str3) '2022年6月17日' >>>'{1}年{2}月{0}日'.format(str1,str2,str3) '6年17月2022日'
- f是format的简写
>>>f'{str1}年{str2}月{str3}日' '2022年6月17日'
- 字符串的格式化
- %d或%i表示格式化整数
>>>'%d'%1.8 '1' >>>#不能写成'%d'%'1.8' >>>'%3d'%1.8 ' 1' >>>'%03d'%1.8 '001' >>>'%.3d'%1.8 '001'
- %f表示格式化浮点数,默认保留小数点后6位
>>>'%f'%1.8 '1.800000' >>>#不能写成'%d'%'1.8' >>>'%2f'%1.8 '1.800000' >>>'%.2f'%1.8 '1.80' >>>'%5.2f'%1.8 ' 1.80' >>>'%05.2f'%1.8 '01.80' >>>'%02.2f'%1.8 '1.80'
- %r表示对象原样输出
>>>print('%s'%123) 123 >>>print('%s'%'123') 123 >>>print('%r'%123) 123 >>>print('%r'%'123') '123'
- %c表示格式化ASCII码
ord()将字符变成对应ASCII值 ,chr()将ASCII码值变成对应的字符
>>>'%c'%65 'A' >>>'%c'%97 'a' >>>ord('a') 97 >>>chr(97) 'a'
- 八进制输出
>>>'%o'%9 '11' >>>'%o'%11 '13' >>>'%o'%7 '7'
- 十六进制输出,10-15之间的数字用a-f表示
>>>'%x'%2 '2' >>>'%x'%12 'c' >>>'%x'%15 'f' >>>'%x'%22 '16'
- format的用法
常见数值模块
- 高精度模块(decimal)
decimal.Decimal(字符串类型)
>>>2.2 - 2
0.20000000000000018
>>>import decimal
>>>decimal.Decimal('2.2') - decimal.Decimal('2')
Decimal('0.2')
>>>float(decimal.Decimal('2.2') - decimal.Decimal('2'))
0.2
- 数学模块(math)
- math.ceil() 向上取整
>>>math.ceil(1.2) 2
- math.floor() 向下取整
>>>math.floor(1.8) 1
- math.pi π
- math.fabs() 绝对值
- math.sqrt() 开平方
- math.pow(x,y) x^y
- 查看math模块里的所有内置函数方法
dir(math)
注释
- 单行注释 :以”#”开头,直到换行结束
- 多行注释 :并没有单独的多行注释标记,将一对三引号(‘’'或"“”)之间的代码称为多行注释
- 中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式 #coding:gbk