格式化输出以及运算符

1、格式化输出

方法一:此方法相对复杂

  • 格式化字符串:将指定的数据按照指定的格式组合成指定的字符串。
  • 注意:%.nf表示保留小数点后n位,n>1(四舍五入)。
  • 注意:%.nd,当n大于原数字的长度,则最终显示的结果长度为n,不够的在左边补0,一般用于时间的表示。
# 一、占位符
"""
%d:可以匹配数字,一般用来匹配整型
%f:可以匹配数字,一般用来匹配浮点型
%s:可以匹配任意类型
"""
#1、print格式化输出:print("%x" % (数据元组))
print('%s,%d,%.2d,%.2f' % (22,1,3,3.456))   #22,1,03,3.46
print('%s,%d,%.2d,%.2f' % (2.2,1,3,3.451))   #2.2,1,03,3.45
print('%s,%d,%.2d,%.2f' % ('jkk',1,3,3.455))   #jkk,1,03,3.46

# 语法:"使用占位符设置格式" % (实际的数据)
# 需求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"",format             *****
# 语法:f"{实际的数据}...."
print(f"面积:{area},周长:{length}")
print(f'姓名:{name},年龄:{45}')

2、算术运算符

运算符说明
+
-
*
/
//取整
%求余(取模)
**求次方
  • 第一优先级:在数学运算符中,但凡有浮点数参与运算,结果都是浮点型
  • 进行除法运算,结果都是浮点型
  • // 取整【获取除法运算之后得到的整数部分,若运算中有浮点数,则结果为浮点型,但小数部分为0】
  • 优先级见下图从高到低
  • 注意:在实际项目开发中,当多种运算符进行混合运算时,强烈建议使用小括号来手动控制运算符的优先级,并且尽量将复杂的问题简单化,尽量分步执行
    请添加图片描述
# 注意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'

# //:取整【获取除法运算之后得到的整数部分】
a = 10
b = 7
print(a // b)   # 1

print(5 // 2)  # 2
print(5 // 2.0)  # 2.0
print(5.0 // 2)  # 2.0

# %:求余/取模【获取除法运算之后得到的余数】
print(a % b)  # 3
print(5.0 % 3)  # 2.0

# **:求幂/求次方
print(a ** b)   # 10000000
print(5.0 ** 2) #25.0
print(16 ** 0.5)   # 给16开平方  4.0


3、赋值运算符

# 1.=用于定义变量或给变量重新赋值
name = 'aaa'  # 定义变量
name = 'hello'  # 重新赋值

# 2.=右边只要是一个数值或可以计算出结果的表达式,都是将等号右边计算出来结果,最后给等号左边的变量赋值
# =的优先级是最低的
a = 4 + 5 * 2 + 10 - 5
print(a)

# 3.+= -= *= /= //= %= **=的工作原理:必须先定义变量,然后给变量进行相应的运算,最后给该变量重新赋值
print(m)
m += 5  # 等价于m = m + 5,进行指定的运算之后重新赋值
print(m)

c = 5
c **= 2
print(c)

4、关系运算符

关系运算符

5、逻辑运算符

运算符说明
and
or
not
  • 在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))    # 123456
print('%.5d' % (456))   # 00456


print('=' * 20)

# 一、bin,oct,hex:将十进制转换为对应的二进制,八进制和十六进制
a = 10

x1 = bin(a)
x2 = oct(a)
x3 = hex(a)
print(x1,x2,x3) # 0b1010 0o12 0xa

# 二、int(value,base),base表示value的进制,也可以将二进制,八进制或者十六进制转换为十进制
print(int("234"))
print(int("234",base=10))
print(int("234",10))

print(int("110",base=10))   #   110
print(int("110",base=2))    #   6
print(int("110",base=8))    #   72
print(int("110",base=16))   #   272

#练习题【面试题】
print(int("0b110220",base=16))  #   185664032
print(2*16 + 2*pow(16,2) + pow(16,4) + pow(16,5) + 11*pow(16,6))  #   185664032

# print(int('311',2)) #ValueError: invalid literal for int() with base 2: '311'

# 注意:如果在int中要使用base关键字,则value一般为字符串
# print(int(234,base=10))  #TypeError: int() can't convert转换 non-string with explicit base

7、位运算符

运算符说明
&
/
^异或
~取反
<<左移
>>右移
  • 一个数异或一个数2次,结果仍为该数本身(a ^ b ^ b = a)
# 异或
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)

#左移右移
#4、正数的左移和右移
a = bin(10)
print(a)
# print(a << 2)   #TypeError: unsupported operand type(s) for <<: 'str' and 'int'
print(bin(10 << 2))   #0b101000 (左移相当于右边补0,相当于增加)
print(bin(10 >> 2))   #0b10 (右移相当于删的思想)

#5、负数的左移和右移
a = bin(-10)
print(a)    #-0b1010
print(bin(-10 << 2))   #-0b101000 (左移相当于右边补0,相当于增加)
print(bin(-10 >> 2))   #-0b11 (右移相当于删的思想)
  • 左移:右边补0
    m<<n(相当于m*2**n)
  • 右移:负数左边补1,正数左边补0
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值