Python-03-进制转换、数据类型详解、类型转换、运算符

目录

01-整数的表示方式

02-进制转换+03-代码实现

04-数据类型转换

05-转换成为整数

06-转换为浮点数

07-转换为字符串

08-转换成为布尔类型

09-算数运算符

10-算数运算符在字符串中的使用

11-赋值运算符

12-赋值运算符的特殊场景

13-比较运算符

14-逻辑运算符

15-逻辑运算的短路

16-位运算符(了解)


01-整数的表示方式

# Python里的数据类型:
# 整型(int)  浮点型(float) 复数(complex)
# 字符串(str)  布尔(bool)  列表(list)  元组(tuple)  字典(dict)  集合(set)

# 整型就是整数。计算机其实只能保存二进制 0 和  1,为了方便数据的表示,同时计算机也支持八进制和十六进制
# 二进制  八进制  十六进制   十进制   在Python里都能够表示
a = 98  # 默认数字都是十进制的数字。 98 就是十进制的九十八

b = 0b101101101  # 以 0b 开头的数字是二进制
print(b)  # 当使用print语句打印一个数字的时候,默认也是使用十进制打印输出的

# c = 0b121010102  二进制里最大的个位数是1,不能出现2

c = 0o34  # 以 0o开头的数字是八进制的数字
print(c)  # 28

# x = 0o79  八进制里最大的个位数是7

# 十六进制 0~9 a~f
d = 0x2a  # 以 0x开头的数字是十六进制
print(d)  # 42
# Python里的数据类型:
# 整型(int)  浮点型(float) 复数(complex)
# 字符串(str)  布尔(bool)  列表(list)  元组(tuple)  字典(dict)  集合(set)

02-进制转换+03-代码实现

a = 12  # 十进制的数字12
print(bin(a))  # 0b1100 使用bin内置函数可以将数字转换成为二进制
print(oct(a))  # 0o14 使用oct内置函数可以将数字转换成为八进制
print(hex(12))  # 0xc  使用hex内置函数可以将数字转换成为十六进制

#下面是把其他进制变成10进制
x = '1a2c'
y = int(x, 16)  # 把字符串 1a2c 当做十六进制转换成为整数
print(y)  # 6700  打印一个数字,默认使用十进制输出
print(bin(y))

m = '12'
n = int(m, 8)  # 把字符串的 12 当做八进制转换成为整数
print(n)  # 10

04-数据类型转换

# 进制转换  将 int 类型以不同的进制表现出来
# 类型转换  将一个类型的数据转换为其他类型的数据
# int ==> str    str ==> int    bool ==> int  int ==> float

age = input('请输入您的年龄:')
# 原因: input 接收到的用户输入,都是 str字符串类型
# 在Python里,如果字符串和数字做加法运算,会直接报错
# 把字符串类型的变量 age 转换成为数字类型的 age
# print(age + 1)  错误
# print(type(age))  # <class 'str'>

# 使用 int 内置类可以将其他类型的数据转换成为整数
new_age = int(age)
# print(type(new_age)) <class 'int'>
print(new_age + 1)

# 为什么要转换数据类型:因为不同的数据类型,进行运算时,它的运算规则不一样。

05-转换成为整数

# 使用 int 内置类可以将数据转换成为整数

a = '31'
b = int(a)
print(a)  # 31
print(b)  # 31

# print(a + 1)  # 报错
print(b + 1)  # 32

# 如果字符串不是一个合法的数字,会直接报错
# x = 'hello'
# y = int(x)
# print(y)

x = '1a2c'
y = int(x, 16)  # 把字符串 1a2c 当做十六进制转换成为整数
print(y)  # 6700  打印一个数字,默认使用十进制输出
print(bin(y))

m = '12'
n = int(m, 8)  # 把字符串的 12 当做八进制转换成为整数
print(n)  # 10


06-转换为浮点数

a = '12.34'
# 使用内置 float 类可以将其他类型数据转换成为 float浮点数
b = float(a)
print(b + 1)

# 如果字符串不能被转换成为有效的浮点数,会报错
# c = float('hello')
# print(c)

c = 101
print(float(c))  # 101.0

m = float('12')  # 将字符串转换成为浮点数
n = float(12)   # 将整型数字转换成为浮点数
print(m, n)

07-转换为字符串

# 使用 str 内置类可以将其他类型的数据转换成为字符串
a = 34
b = str(a)

print(a + 1)  # 35
# print(b + 1)
print(a)  # 34
print(b)  # 34

print(type(a))  # <class 'int'>
print(type(b))  # <class 'str'>

08-转换成为布尔类型

# 使用 bool内置类可以将其他数据类型转换成为布尔值
print(bool(100))  # 将数字100转换成为布尔值
print(bool(-1))  # -1转换成为布尔值也是True
print(bool(0))  # False

# 数字里,只有数字 0 被转换成为布尔值是False,其他数字转换成为布尔值都是True

print(bool('hello'))  # True
print(bool('False'))  # True
print(bool(''))  # False
print(bool(""))  # False
# 字符串里,只有空字符串  ''  / "" 可以转换成为False,其他字符串都转换成为True

# None 转换成为布尔值是 False
print(bool(None))  # False
print(bool("None"))  # True

print(bool([]))  # False
print(bool(()))  # False
print(bool({}))  # False

print(bool())

# {'name': 'zhangsan', 'age': 18}
# {1,2,3,4}
# {}  # 空字典
s = set()  # 空集合
print(bool(s))

# 数字0,空字符串 ''/"",空列表[],空元组(),空字典{},空集合set(),空数据None会被转换成为False

# 在计算机里,True和False其实就是使用数字 1 和 0 来保存的
print(True + 1)  # 2
print(False + 1)  # 1

# 隐式类型转换
if 0:
    print('good')

09-算数运算符

# Python里支持很多算数运算符
# +加 -减  *乘  /除  **幂运算  // 整除   %取余(取模)运算
print(1 + 1)  # 2
print(4 - 2)  # 2
print(3 * 2)  # 6

# 在Python3里,两个整数相除,得到的结果会是一个浮点数
print(6 / 2)  # 3.0
print(9 / 2)  # 4.5

print(3 ** 3)  # 27
print(81 ** (1 / 2))  # 9.0

print(10 / 3)  # 3.333333333333333
print(10 // 3)  # 3 整除
print(-5 // 2)  # -2.5 ==> -3 争取,向下取整

print(10 % 3)  # 1  取余,只取余数部分
print(1928 % 9876)
# +加 -减  *乘  /除  **幂运算  // 整除   %取余(取模)运算

10-算数运算符在字符串中的使用

# 字符串里有限度的支持加法和乘法运算符


# 加法运算符:只能用于两个字符串类型的数据,用来拼接两个字符串
print('hello' + 'world')  # 将多个字符串拼接为一个字符串

# print('18' + 1)  # # 在Python里,数字和字符串之间,不能做加法运算

# 乘法运算符:可以用于数字和字符串之间,用来将一个字符串重复多次
print('hello' * 2)  # hellohello

# print('hello' - 'yes')
# print('hello' * 'god')

11-赋值运算符

#  = 等号在计算机编程里,我们称之为赋值运算符,和数学里的等号有一定的区别

# 数学
# 1 + 1 = 2
# 4 = 4

# 计算机编程里,等号(赋值运算符)作用是将等号右边的值赋值给等号的左边
# 等号的左边一定不能是常量或者表达式
a = 4

# 10 = x
# 3 + 3 = m
m = 3 + 3

x = 1
# x = x + 2
# 复合赋值运算符
x += 2
print(x)  # 3

x -= 1
print(x)  # 2

x *= 3
print(x)  # 6

x /= 2
print(x)  # 3.0

x **= 5
print(x)  # 243.0

x //= 2
print(x)  # 121.0

x %= 2  # x = x % 2
print(x)  # 1.0

12-赋值运算符的特殊场景

# 等号连接的变量可以传递赋值
a = b = c = d = 'hello'
print(a, b, c, d)

# x = 'yes' = y = z

m, n = 3, 5  # 拆包
print(m, n)

x = 'hello', 'good', 'yes'
print(x)  # ('hello', 'good', 'yes')

# 拆包时,变量的个数和值的个数不一致,会报错
# y, z = 1, 2, 3, 4, 5
# print(y, z)
# o, p, q = 4, 2
# print(o, p, q)


# * 表示可变长度
# o, *p, q = 1, 2, 3, 4, 5, 6
# print(o, p, q)  # 1 [2, 3, 4, 5] 6

# *o, p, q = 1, 2, 3, 4, 5, 6
# print(o, p, q)  # [1, 2, 3, 4] 5 6


o, p, *q = 1, 2, 3, 4, 5, 6
print(o, p, q)  # 1 2 [3, 4, 5, 6]

13-比较运算符

# 大于 >  小于 <   大于等于 >=  小于等于  <=   不等于 != / <>   等等与 ==
print(2 > 1)  # True
print(2 < 4)  # True
print(4 >= 3)  # True
print(4 <= 9)  # True
print(5 != 6)  # True
print('hello' == 'hello')  # True

# 比较运算符在字符串里的使用
# 字符串之间使用比较运算符,会根据各个字符的编码值逐一进行比较
# ASCII码表
print('a' > 'b')  # False   97 > 98
print('abc' > 'b')  # False 97 > 98

# 数字和字符串之间,做 == 运算的结果是False,做 != 结果是True,不支持其他的比较运算
# print('a' > 90)
print('a' == 90)  # False
print('a' != 97)  # True
# 大于 >  小于 <   大于等于 >=  小于等于  <=   不等于 != / <>   等等与 ==

14-逻辑运算符

# 逻辑运算符   逻辑与and   逻辑或or  逻辑非not


# 逻辑与规则:只要有一个运算数是False,结果就是False;只有所有的运算数都是True,结果才是True
print(2 > 1 and 5 > 3 and 10 > 2)  # True
print(3 > 2 and 5 < 4 and 6 > 1)  # False

# 逻辑或规则:只要有一个运算数是True,结果就是True;只有所有的运算数都是False,结果才是False
print(3 > 9 or 4 < 7 or 10 < 3)  # True
print(3 > 5 or 4 < 2 or 8 < 7)  # False

# 逻辑非运算:True ==> False   False ==> True
print(not (5 > 2))
# 逻辑运算符   逻辑与and   逻辑或or  逻辑非not

15-逻辑运算的短路

# 逻辑与运算,只有所有的运算数都是True,结果才为True
# 只要有一个运算数是False,结果就是False
4 > 3 and print('hello world')
4 < 3 and print('你好世界')  # 逻辑与运算的短路问题

# 逻辑或运算,只有所有的运算数都是False,结果才是False
# 只要有一个运算数是True,结果就是True
4 > 3 or print('哈哈哈')
4 < 3 or print('嘿嘿嘿')

# 逻辑运算的结果,一定是布尔值吗?  不一定
# 逻辑与运算做取值时,取第一个为False的值;如果所有的运算数都是True,取最后一个值
print(3 and 5 and 0 and 'hello')  # 0
print('good' and 'yes' and 'ok' and 100)  # 100

# 逻辑或运算做取值时,取第一个为True的值;如果所有的运算数都是False,取最后一个值
print(0 or [] or 'lisi' or 5 or 'ok')  # lisi
print(0 or [] or {} or ())  # ()

16-位运算符(了解)

# 按位与&   按位或|  按位异或^  按位左移<<   按位右移>>  按位取反~
a = 23
b = 15
print(a & b) 7
print(a | b) 31
print(a ^ b) 24

x = 5
print(x << 3)  # a << n  ==> a * 2的n次方

y = 15
print(y >> 2)  # a >> n ==> a 除以 2的n次方


#这里的的运算全是二进制的,具体的运算规则如下:
23    :0001 0111
15    :0000 1111

7     :0000 0111 (按位与& 

31    :0001 1111  ( 按位或| 

24    :0001 1000 (按位异或^ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老板来片烤面包

君子博学于文,赠之以礼,谢君~

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

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

打赏作者

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

抵扣说明:

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

余额充值