一、格式化字符串
%d:可以匹配数字,一般用来匹配整型%f:可以匹配数字,一般用来匹配浮点型%s:可以匹配任意类型
# 格式化字符串:将指定的数据按照指定的格式组合成指定的字符串 # 一、占位符 """ %d:可以匹配数字,一般用来匹配整型 %f:可以匹配数字,一般用来匹配浮点型 %s:可以匹配任意类型 """ # 语法:"使用占位符设置格式" % (实际的数据) print(10) print(34,6,6,7,'abc',True) # 需求1:从控制台输入圆的半径,计算该圆的周长和面积,圆周率可以定义为常量3.14 PI = 3.14 r = float(input("请输入圆的半径:")) length = 2 * PI * r area = PI * r * r # PI * r ** 2 # a print("面积:",area,"周长:",length) # b. # 注意1:占位符和实际数据的数量一定要保持一致 print("面积:%f,周长:%f" % (area,length)) # c. # 注意2:%.nf表示保留小数点后n位,n>1 ****** print("面积:%.2f,周长:%.2f" % (area,length)) # 2.需求: name = "张三" age = 10 # 注意3:进行占位符格式化时,占位符和实际数据的类型需要匹配 print("姓名:%s,年龄:%d" % (name,age)) # 注意4:%.nd,当n大于原数字的长度,则最终显示的结果长度为n,不够的在左边补0,一般用于时间的表示 print("数字:%.7d" % (3465)) # 二、f"",format ***** # 语法:f"{实际的数据}...." print(f"面积:{area},周长:{length}") print(f'姓名:{name},年龄:{45}')
二、运算符和表达式
1.算术运算符
运算符 说明 + 加 - 减 * 乘 / 除 // 取整 % 求余(取模) ** 求幂(求次方)
a = 5 b = 3 # 1.+ - print(a + b) print(a - b) # 注意1:字符串可以使用+,表示拼接,但是只能是 字符串 + 字符串 print("hello" + 'Python') # print('abc' + 10) # TypeError: can only concatenate str (not "int") to str # print(10 + 'abc') # TypeError: unsupported operand type(s) for +: 'int' and 'str' # 注意2:在数学运算符中,但凡有浮点数参与运算,结果都是浮点型 print(5.0 - 2) print(5 - 2.0) print(5.0 - 2.0) # 2.* / print(a * b) print(a / b) # 注意3:进行除法运算,结果都是浮点型 print(10 / 2) # 5.0 print(5 * 2.0) # 10.0 print(5 / 2) # 3.//:取整【获取除法运算之后得到的整数部分】 print(a // b) # 1 print(5 // 2) # 2 print(5 // 2.0) # 2.0 print(5.0 // 2) # 2.0 # 4.%:求余/取模【获取除法运算之后得到的余数】 print(a % b) # 2 print(5.0 % 3) # 2.0 # 5.**:求幂/求次方 print(a ** b) print(5.0 ** 2) print(16 ** 0.5) # 给16开平方 4.0 # 6.优先级 # 注意4:算术运算符的优先级,**最高,+ -最低 print(2 + 3 * 5) # 17 print(2 * 10 ** 3) # 2000 print((2 * 10) ** 3) # 8000
2.赋值运算符
运算符 说明 = 简单赋值运算符 +=、-=、*=、/=、%=、//=、**=等 复合赋值运算符
# 1.=用于定义变量或给变量重新赋值 name = 'aaa' # 定义变量 name = 'hello' # 重新赋值 # 2.=右边只要是一个数值或可以计算出结果的表达式,都是将等号右边计算出来结果,最后给等号左边的变量赋值 # =的优先级是最低的 a = 4 + 5 * 2 + 10 - 5 print(a) # 3.+= -= *= /= //= %= **=的工作原理:必须先定义变量,然后给变量进行相应的运算,最后给该变量重新赋值 m = 10 print(m) m += 5 # 等价于m = m + 5,进行指定的运算之后重新赋值 print(m) c = 5 c **= 2 print(c)
总结:
1.=用于定义变量或给变量重新赋值 2.等号右边只要是一个数值或可以计算出结果的表达式,都是将等号右边计算出来结果,最后给等号左边的变量赋值 3.+= -= *= /= //= %= **=的工作原理:必须先定义变量,然后给变量进行相应的运算,最后给该变量重新赋值
3.关系运算符
运算符 说明 == 相等 != 不相等 > 大于 < 小于 >= 大于等于 <= 小于等于
# 1.基本使用 ***** a = 34 b = 7 print(a == b) # 等于 print(a != b) # 不等于 print(a > b) print(a >= b) print(a < b) print(a <= b) # 注意: # a == b整体运算完的结果是布尔值,但是a=b整体是没有结果的,只是a有结果 print(a == b) # 比较 a = b # 赋值 print(a) y = 1 z = 4 x = (y == z + 1) print(x) y = 1 z = 4 y = z + 1 # x = (y = z + 1) x = y print(x) # 2.适用的数据类型 # a.数字 # b.字符串 # 注意:字符串也可以比较大小,比较的依据是ACSII码表,但是,该字符串只能由数字,字母或符号组成 """ 常见ASCII码的大小规则:0~9<A~Z<a~z。 1)数字比字母要小。如 “7”<“F”; 2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ; 3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ; 4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。 5)几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 """ print('a' > '3') # True print('abc' > 'zxy') # False print('abc' > 'axy') # False print('abc' > 'a1233') # True
总结:
1.关系运算符/条件运算符/比较运算符 2.=表示赋值,==表示比较 3.关系运算符运算的结果是一个布尔值,表达式成立则结果为True,如果表达式不成立则结果为False 4.关系运算符的使用场景:if语句或while循环
4.逻辑运算符
逻辑运算符是用来做逻辑计算的,就像之前用到的比较运算符 ,每一次比较其实就是一次条件判断,都会得到一个相应的True或者False的值,而逻辑运算符的操作数就是一个用来做条件判断的表达式或者变量
运算符 说明 and 与 or 或 not 非
重点:短路原则
a.A and B,如果A为False,不需要计算B的值,整个表达式的结果为False
b.A or B,如果A为True,不需要计算B的值,整个表达式的结果为True
c.and和or混合使用
1>表达式从左往右运算,如果or的左侧为True,则会短路or后面所有的表达式【不管是and还是or连接】,整个表达式的结果为True
2>表达式从左往右运算,如果and的左侧为False,则短路后面所有的and,直到or出现,接着计算
3>如果or的左侧为False,或者and的左侧为True,则不能使用短路逻辑判断
注意:所有被短路的表达式均不会被输出
""" 1.逻辑运算符只是进行逻辑运算,所以一般结合if语句或while循环使用较多 2.逻辑运算符大多数情况下是结合关系运算符使用的 3.在Python中,表示假的数据:0 0.0 "" False None [] () {} 等 4.and和or运算的结果不一定是布尔值,取决于参与运算的数据类型,not运算的结果一定是布尔值 """ # 1.与:and """ 真 and 真 ----》真 真 and 假 ----》假 假 and 真 ----》假 假 and 假 ----》假 规律:一假为假,全真为真 """ print('abc' and 66) # 66 print('abc' and 0) # 0 print(True and None) # None print([45,6] and 0.0) # 0.0 print([45,6] and 'abc') # abc print(0 and 66) print(0 and 'gagga') print(0 and None) print(0 and []) print(0 and 0.0) """ 结论:A and B a.如果A为真,则整个表达式A and B的结果是B b.如果A为假,则B会被短路,则整个表达式A and B的结果是A """ # 2.或:or """ 真 or 真 ----》真 真 or 假 ----》真 假 or 真 ----》真 假 or 假 ----》假 规律:一真为真,全假为假 """ print(0 or 66) print(0 or 'gagga') print(0 or None) print(0 or []) print(0 or 0.0) print('abc' or 66) # abc print('abc' or 0) # abc print(True or None) # True print([45,6] or 0.0) # [45,6] print([45,6] or 'abc') # [45,6] """ 结论:A or B a.如果A为假,则整个表达式A or B的结果是B b.如果A为真,则B会被短路,则整个表达式A or B的结果是A """ # 3.非:not """ not 真 ----》False not 假 -----》True """ print(not True) print(not False) print(not 0) print(not 0.0) print(not "") print(not None) print(not []) print(not 45) print(not 4.2) print(not "abc") print(not [45,7])
总结:
1.逻辑运算符只要进行逻辑运算,所以一般结合if语句或while循环使用较多 2.逻辑运算符大多数情况下是结合关系运算符使用的 3.在Python中,表示假的数据:0 0.0 "" False None [] () {} 等 4.and和or运算的结果不一定是布尔值,取决于参与运算的数据类型,not运算的结果一定是布尔值
5.成员运算符
in:如果在指定的序列中找到值,则返回True,否则返回False
not in:如果在指定的序列中没有找到值,则返回True,否则返回False
6.身份运算符
身份运算符用于比较两个对象的存储单元
is:判断两个标识符是不是引用自一个对象
is not:判断两个标识符是不是引用自不同对象
7.运算符优先级
当出现一个复杂的表达式,有可能多种运算符会混合在一起运算,就会涉及到运算符的优先级。具体如下:
注意:在实际项目开发中,当多种运算符进行混合运算时,强烈建议使用小括号来手动控制运算符的优先级,并且尽量将复杂的问题简单化,尽量分步执行
三、进制转换
计算机在内存中以二进制【0和1】的形式存储数据,在二进制的基础上,计算机还支持八进制和十六进制这两种进制
一个二进制表示一个比特(bit),也称为位,计算机处理数据的最小单位为字节【Byte】,1字节= 8位 ,比如:0010 1010
但是,我们生活中习惯使用十进制,所以当人与计算机之间进行交互的时候就要涉及到进制之间的转换
进制的表示有特定的符号集和进位制:
二进制:0和1,逢二进一
八进制:0~7
十进制:0~9,逢十进一
十六进制:0~9,a~f/A~F
单位:B,KB,MB,GB,TB,PB,EB....DB
换算关系:1KB = 1024B
1.进制转换原理
十进制 —》二进制
转换原理:对十进制数进行除2运算,直到商为0为止,然后将各个步骤得到的余数倒着写出来
二进制—》十进制
转换原理:把二进制数按权展开、相加即得十进制数(位权,十进制的位权是10,二进制的是2,位置表示法 ,如:345 930 803
0000 1010----》1 x 2(3) + 1 x 2(1) = 10
0010 1010----》42
1001 0110-----》150
二进制—》八进制
转换原理:三位二进制按权展开相加得到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
1011 1110--->11 14--->b e
0011 1011---->3 11 --->3b
十进制—》八进制或者十六进制
方法一:把十进制转成二进制x,然后再由二进制转成八进制或者十六进制
方法二:对十进制除以8或者16进行取余,直到商为0为止,类似十进制转二进制
八进制或者十六进制—》十进制
转换原理:把八进制或者十六进制按权展开,相加即得十进制
2.原码反码补码
原码:一个数的二进制表示形式,高位表示符号位,0表示正数,1表示负数
反码:在原码的基础上,除了符号位之外,其他位取反
补码:在反码的基础上,加1
注意:正数的原码反码补码是同一个,如:6的二进制为0000 0110,则6的原码反码补码都是0000 0110
10 + (-10) = ?
10:原反补0000 1010
-10:原:1000 1010 反:1111 0101 补:1111 0110
原码: 0000 1010 1000 1010 --------- 1001 0100 反码: 0000 1010 1111 0101 --------- 1111 1111 补码: 0000 1010 1111 0110 ---------- 0000 0000 结论:计算机中存储数据采用的二进制的补码形式 人容易识别都是原码,计算机识别的是补码 -2 + (-3) = ?
3.整数表示
# 二进制,八进制,十进制和十六进制在Python中都可以表示 # 1.二进制 # 表示方式:用0b开头,b:bin n1 = 0b1010 print(n1) # 2.八进制 # 表示方式:用0o表示,o:oct n2 = 0o226 print(n2) # 3.十进制 n3 = 43 print(n3) # 4.十六进制 # 表示方式:用0x表示,x:hex n4 = 0x3b print(n4) n41 = 0xef print(n41)
4.代码实现进制转换
函数 说明 bin(x) 将数字x转换为二进制 oct(x) 将数字x转换为八进制 hex(x) 将数字 x转换为十六进制
# 一、bin,oct,hex:将十进制转换为对应的二进制,八进制和十六进制 a = 10 x1 = bin(a) x2 = oct(a) x3 = hex(a) print(x1,x2,x3) # 二、int(value,base),base表示进制,也可以将二进制,八进制或者十六进制转换为十进制 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)) # 注意:如果在int中要使用base关键字,则value一般为字符串 # print(int(234,base=10)) #TypeError: int() can't convert转换 non-string with explicit base
5.位运算符
运算符 说明 & 与 | 或 ^ 异或 ~ 取反 << 左移 >> 右移
# 与 print(6 & 3) print(8 & 3) # 或 print(6 | 3) print(8 | 3) # 异或 print(6 ^ 3 ^ 3) # 交换两个变量的值 # 方式四:异或 a = 10 b = 20 a = a ^ b # a = 10 ^ 20 b = a ^ b # b = 10 ^ 20 ^ 20 = 10 a = a ^ b # a = 10 ^ 20 ^ 10 = 20 print(a,b) # 取反 print(~6) # 左移与右移 print(6 << 2) print(8 << 3) print(6 >> 2) print(-6 >> 2)