3.格式化字符串 and 运算符和表达式 and 进制转换

一、格式化字符串

%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)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiayi_init_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值