一、 数据类型
1 引入
类型是什么?
print("hello") # hello
print(100) # 100
# 描述买水果:买了2斤苹果,5.5斤桃
fruit_name = "苹果"
weight = 2
2 类型分类
-
基本数据类型
-
字符串(str):表达一种名词,使用引号包围的对象
fruit = '苹果' name = "zs" hobby = """睡觉""" a = "lisi' # 错误
-
数值类型
- 整型(int):数学中的整数。
- 浮点型(float):数学中的小数。
- 复数(complex):包含实部和虚部:a+bj —了解
-
布尔类型(bool):只包含两个值:
True
,False
-
-
组合数据类型----容器
- 列表
- 元组
- 字典
- 集合
-
对象数据类型
3 数值类型的计算
- 同种类型计算得到类型仍然为该类型(bool除外)
- 不同类型计算,首先要转化为同种类型再计算,转化的原则是bool—>int ---->float
# int计算
print(10+20) # 30
a = 10
b = 20
print(a+b) # 10+20 = 30
# float 计算
print(3.5+2.4) # 5.9
print(3.5 +2.5) # 6.0
# 不同类型计算:int+float
print(2+3.5) # 2.0+3.5 = 5.5
# int + bool: True 转化为数字1计算
print(2+True) # 2+1 = 3
# int+bool:False 转化为数字0计算
print(3+False) #
# flaot +bool
print(2.4+True) # 3.4
# bool + bool
print(True + True) # 2
print(True + False) # 1
print(False+False) # 0
二、 进制
1 生活中进制
- 十进制:0-9
- 时间:60进制
- 计量单位
2 计算机中的进制
- 二进制:0-1,0b/B
- 八进制:0-7, 0o/O
- 十进制:0-9,
- 十六进制:0-9 ,a-f, 0x/X
3 进制转化方法
- bin():将给定数字转化为二进制
- oct():将给定数字转化为八进制
- hex():将给定数字转化为十六进制
num = 100
print(bin(100)) # 0b1100100
print(oct(100)) # 0o144
print(hex(100)) # 0x64
三、 类型强制转化
格式:目标类型(待转化数据)
查看数据的类型:type(待查看的数据)
# int --->float:整数后加".0"
float(100) # 100.0
# float --->int:直接舍弃小数部分
num = 2.1
int(num) # 2
num2 = 2.9
int(num2) # 2
# bool -->int
# print(int(True)) # 1
# print(int(False)) # 0
# int -->bool:非零数字都是True
print(bool(10)) # True
print(bool(0)) # False
# float--->bool:非零数字都是True
print(bool(2.234235)) # True
print(bool(0.0003)) # True
print(bool(0.0)) # False
# int--->str:直接在数字两边加引号
s1 = str(10)
num = 10
print(s1,num)
print(type(s1)) # <class 'str'>
print(type(num)) # <class 'int'>
练习:卖水果
- 询问顾客购买水果种类
- 询问购买重量
- 输出一共需要花费的钱
#1 定义单价
apple_price = 3
# 2展示商品
print("本店出售水果:苹果")
# 3询问顾客
buy_name = input("请告诉我您需要购买的水果名称:")
buy_weight = input("请告诉我您需要购买的水果重量:")
# print(type(buy_name))
# print(type(buy_weight))
# 4计算价钱
new_weight = float(buy_weight)
total_price = apple_price * new_weight
print("您一共消费了",total_price,"元")
2 其他类型转化
chr():将一个整数转换为一个字符
ord()
eval()
# chr():将Unicode编码转化对应的字符
print(chr(22242)) # 团
# ord():将字符转化为对应Unicode编码
print(ord("团"))
print(ord("中"))
print(chr(20013))
# eval(str)
print("1+2") # 1+2
res = eval("1+2")
print(res)
print(type(res)) # int
注意:特殊情况不能转化
# str --->int
int("hello") # 报错
四、 运算符
1 算术运算符:+,-,*,/,//,%,**
-
除法
/
:真除法,注意该方法得到的类型一定是浮点型。//
:整除法:只保留商的部分
print(4/2) # 2.0 print(3/2) # 1.5 print(4//2) # 2 print(3//2) # 1 print(4.0/2) # 2.0 print(4.0//2) # 4.0//2.0=2.0
-
取余:
%
print(4%2) # 0 print(2%3) # 2
-
幂运算:
**
print(2**3) # 8 print(1.01**365) # print(0.99**365) #
2 赋值运算符:=
name = "zs"
3 复合运算符:+=,-=,*=,/=,//=,%=,**=
a = 10
a = a+1 # 自增1
a += 1 # 自增1
4 关系(比较)运算符:>,<,==,>=,<=,!=
得到的结果一定是布尔类型
print(1>2) # False
print(1<2) # True
print(1!=2) # True
5 逻辑运算符:and,or,not
优先级:not>and>or
返回的内容为起决定作用的那个值
# and
print(True and True) # True
print(False and True) # False
print(1 and 2) # 2
print(2 and True) # True
print(0 and 3) # 0
print(3.5 and False) # False
# or
print(True or True) # True
print(False or True) # True
print(1 or 2) # 1
print(2 or True) # 2
print(0 or 3) # 3
print(3.5 or False) # 3.5
# not
print(not True) # False
print(not 1) # False
练习:
print(-3**2) # -9
print(3%2//2 > 5**2 and -1**2 or 8<2)
print(2>1<3) # True / False 2>1 and 1<3
6 成员运算符:in
返回布尔值
kw_list = ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
# input 是不是关键字?
print(input in kw_list) # False
s = "hello world"
print('o' in s) # True
总结
1 幂运算:**
2 符号位:正(+),负(-)
3 乘除取模:* / // %
4 加减:+, -
5 比较运算符:6种
6 逻辑运算符:not > and > or