1、格式化输出
方法一:此方法相对复杂
- 格式化字符串:将指定的数据按照指定的格式组合成指定的字符串。
- 注意:%.nf表示保留小数点后n位,n>1(四舍五入)。
- 注意:%.nd,当n大于原数字的长度,则最终显示的结果长度为n,不够的在左边补0,一般用于时间的表示。
"""
%d:可以匹配数字,一般用来匹配整型
%f:可以匹配数字,一般用来匹配浮点型
%s:可以匹配任意类型
"""
print('%s,%d,%.2d,%.2f' % (22,1,3,3.456))
print('%s,%d,%.2d,%.2f' % (2.2,1,3,3.451))
print('%s,%d,%.2d,%.2f' % ('jkk',1,3,3.455))
PI = 3.14
r = float(input("请输入圆的半径:"))
length = 2 * PI * r
area = PI * r * r
print("面积:",area,"周长:",length)
print("面积:%f,周长:%f" % (area,length))
print("面积:%.2f,周长:%.2f" % (area,length))
name = "张三"
age = 10
print("姓名:%s,年龄:%d" % (name,age))
print("数字:%.7d" % (3465))
方法二:相对简单
print(f"面积:{area},周长:{length}")
print(f'姓名:{name},年龄:{45}')
2、算术运算符
运算符 |
说明 |
+ |
加 |
- |
减 |
* |
乘 |
/ |
除 |
// |
取整 |
% |
求余(取模) |
** |
求次方 |
- 第一优先级:在数学运算符中,但凡有浮点数参与运算,结果都是浮点型
- 进行除法运算,结果都是浮点型
- // 取整【获取除法运算之后得到的整数部分,若运算中有浮点数,则结果为浮点型,但小数部分为0】
- 优先级见下图从高到低
- 注意:在实际项目开发中,当多种运算符进行混合运算时,强烈建议使用小括号来手动控制运算符的优先级,并且尽量将复杂的问题简单化,尽量分步执行
print("hello" + 'Python')
a = 10
b = 7
print(a // b)
print(5 // 2)
print(5 // 2.0)
print(5.0 // 2)
print(a % b)
print(5.0 % 3)
print(a ** b)
print(5.0 ** 2)
print(16 ** 0.5)
3、赋值运算符
name = 'aaa'
name = 'hello'
a = 4 + 5 * 2 + 10 - 5
print(a)
print(m)
m += 5
print(m)
c = 5
c **= 2
print(c)
4、关系运算符
5、逻辑运算符
- 在and时,第一个为假,不用管后面是什么,整个表达式为假。
- 在or时,第一个为真,不用管后面是什么,整个表达式为真。
- 总结:
1.逻辑运算符只要进行逻辑运算,所以一般结合if语句或while循环使用较多
2.逻辑运算符大多数情况下是结合关系运算符使用的
3.在Python中,表示假的数据:0 0.0 “” False None [] () {} 等
4.and和or运算的结果不一定是布尔值,取决于参与运算的数据类型,not运算的结果一定是布尔值
6、进制转换
- 十进制 —》二进制
转换原理:对十进制数进行除2运算,直到商为0为止,然后将各个步骤得到的余数倒着写出来
- 二进制—》十进制
转换原理:把二进制数按权展开、相加即得十进制数(位权,十进制的位权是10,二进制的是2,位置表示
- 二进制—》八进制
转换原理:三位二进制按权展开相加得到1位八进制数,从右向左开始分组,三位为一组,不足时补0
1001 0110---->010 010 110---->2 2 6—>226
1010001---->001 010 001---->1 2 1
- 二进制—》十六进制
转换原理:与二进制转八进制方法相似,八进制是取三合一,十六进制是取四合一,同样,二进制转成十六进制是从右向左开始分组,四位为一组,不足时补0
1001 0110---->9 6
1010001—>0101 0001---->5 1
- 十进制—》八进制或者十六进制
方法一:把十进制转成二进制x,然后再由二进制转成八进制或者十六进制
方法二:对十进制除以8或者16进行取余,直到商为0为止,类似十进制转二进制
- 八进制或者十六进制—》十进制
转换原理:把八进制或者十六进制按权展开,相加即得十进制
- 原码、反码、补码
1、原码:一个数的二进制表示形式,高位表示符号位,0表示正数,1表示负数
2、反码:在原码的基础上,除了符号位之外,其他位取反
3、补码:在反码的基础上,加1
4、注意:正数的原码反码补码是同一个,如:6的二进制为0000 0110,则6的原码反码补码都是0000 0110
5、计算机中运算是先将数值变为补码(正数是其本身,负数补码规则如上),然后通过二进制运算后再将结果通过补码的逆运算转为原码,原码转为对应数值。
- 通过代码实现进制转换
函数 |
说明 |
bin(x) |
将数字转换为二进制(binary : 二进制的) |
oct(x) |
将数字转换为八进制 (octonary:八进制的) |
hex(x) |
将数字转换为十六进制 (hexadecimal:十六进制的) |
- 结论:计算机中存储数据采用的二进制的补码形式,人容易识别都是原码,计算机识别的是补码(计算机当中的运算都是通过补码进行的)
注意:正数的原码反码补码是同一个,如:6的二进制为0000 0110,则6的原码反码补码都是0000 0110
10 + (-10) = ? 10:原反补0000 1010
-10:原:1000 1010 反:1111 0101 补:1111 0110
所以10 + (-10) 在计算机中就是:0000 1010 + 1111 0110 = 0000 0000
print('%.5d' % (123456))
print('%.5d' % (456))
print('=' * 20)
a = 10
x1 = bin(a)
x2 = oct(a)
x3 = hex(a)
print(x1,x2,x3)
print(int("234"))
print(int("234",base=10))
print(int("234",10))
print(int("110",base=10))
print(int("110",base=2))
print(int("110",base=8))
print(int("110",base=16))
print(int("0b110220",base=16))
print(2*16 + 2*pow(16,2) + pow(16,4) + pow(16,5) + 11*pow(16,6))
7、位运算符
运算符 |
说明 |
& |
与 |
/ |
或 |
^ |
异或 |
~ |
取反 |
<< |
左移 |
>> |
右移 |
- 一个数异或一个数2次,结果仍为该数本身(a ^ b ^ b = a)
print(6 ^ 3 ^ 3)
a = 10
b = 20
a = a ^ b
b = a ^ b
a = a ^ b
print(a,b)
a = bin(10)
print(a)
print(bin(10 << 2))
print(bin(10 >> 2))
a = bin(-10)
print(a)
print(bin(-10 << 2))
print(bin(-10 >> 2))
- 左移:右边补0
m<
- 右移:负数左边补1,正数左边补0