'''六大数据类型
string
Number(int float complex bool)
list
tuple
set
dict
str:
定义空""
'''
strvar="今天天气好晴朗"
strvar="明月几时有\n把酒问青天\n不知天上宫阙\n\r今夕是何年"
print(strvar)
strvar="明月\r几时有"
print(strvar)
strvar="明月\t几时有"
print(strvar)
strvar="明月几时有,'把酒问青天'"
strvar="\"明月几时有,把酒问青天\""
print(strvar)
intvar=123645
floatvar=1.245
floatvar=2e8
boolvar=True
boolvar=False
boolvar=False
complexvar=4+5j
complexvar=complex(4,5)
print(complexvar)
#定义一个空列表[]
# listvar=[]
# listvar=["1","2","3"]
#二级列表
listvar=["1",["3","4"],"5"]
#列表的特征:可获取,可修改,有序
print(listvar[1][0])
listvar[1][0]="a"
print(listvar)
#强转列表
#如果是字符串,将字符串的每一个字符当做列表的新元素录入,并套上[]标识符转换
# 如果是字典,只保留键,并套上[]标识符转换
# 其余容器型数据,在原有数据基础上,套上[]标识符转换即可.
#元组 Tuple
# 定义一个空元组
# tuplevar=()
# 元组的标志符号是,
tuplevar=(1)
print(type(tuplevar))
#元组的特征:可获取,不可修改,有序
tuplevar=("1","2",123)
tuplevar=("1","2",123)
print(tuplevar)
listvar=[1,2,3]
print(listvar)
tuplevar=("1","2",[1,2,3])
print(tuplevar)
tuplevar[2][2]="a"
print(tuplevar)
#二级元组
tuplevar=("a",123,("2",))
print(tuplevar)
tuplevar[2][0]
print(tuplevar[2][0])
#强转元组
#如果是字符串,将字符串的每一个字符当做是新元素录入元组,并套上()标识符转换
# 字典只保留键,并套上{}表示符转换
# 其余容器型数据,在保留原数据的基础上,套上()标识符转换
#集合
#特征:自动去重,无序
#哈希算法:将任意长度的不可变数据计算成为固定长度的唯一值,这个值可大可小,可正可负,但长度固定.这个过程叫做哈希算法,这个值叫做哈希值
#哈希算法的特点:哈希过的数据存储时,是一个随机存放的散列,存储数据快
#集合的元素必须可哈希,字典的键也是必须可哈希
#可哈希的数据(不可变的数据):Number,tuple,string
#不可哈希的数据(可变的数据):list,set,dict
#定义一个空集合setvar=set()
setvar={"天才",1,2,3}
print(setvar)
#强转集合:
#和前面一样,但出现的值都是无序
#等长的二级容器:首先是两个容器,其次容器内部元素的个数相同
listvar=[[1,2],[4,5],[7,8]]
#要实现字典的强制转换,数据必须是等长的二级容器,且元素个股为2
setvar={("天才","1"),("存货","2")}
res=dict(setvar)
print(res)
listvar=[{"天才","1"},{"存货","2"}]
res=dict(listvar)
print(res)
#外容器是列表,里面为List,tuple,字符串
#外容器是元组,里面为列表,元组,字符串
#外容器是集合,里面为元组,字符串
#二级集合,里面只能为元组
#数字类型数据的强转
#int 直接转换,不四舍五入,只可转float,bool,所有元素都为数字的字符串
#float,直接转换,只可转int,bool,所有元素都为数字的字符串
#bool,所有类型都可转换,值为True
#以下十种情况为False:0 0.0 False 0j [] () {} set() '' None
#complex,直接转换,可转换所有数字类型,和所有元素都为数字的字符串
#格式化输出
# 常用的格式化输出:%d整形,%f浮点型,%s字符串类型
#语法:" "%(实际值) 位数一一对应
#%f自动取小数点后六位
#%0.2f代表取两位
#%3d代表3个字符位置,向右靠拢
#%-3d代表3个字符位置,向左靠拢
#二进制0b
#八进制0o
#十六进制0x
#2转10 ∑a*2**(b-1) b是从右到左数的位数,a是该位数上的值
#8转10 ∑a*8**(b-1) b是从右到左数的位数,a是该位数上的值
#16转10 ∑a*16**(b-1) b是从右到左数的位数,a是该位数上的值
'''8转2 :0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
16转2 8 1000 9 1001 a 1010 b 1011 c 1100 d 1101 e 1110 f 1111
原码
反码
补码
正数 三者相同
负数:原码=补码的反码+1
补码=原码的反码+1'''
#注释:对代码的解释,方便大家阅读代码
#单行注释,多行注释
#注释要注意单双引号的嵌套
#注释的拍错性:包裹一部分代码,执行另一部分,进行测试排错
#变量:可以改变的量
#变量的命名:
'''字母数字下划线,首字符不能位数字
严格区分大小写,且不能使用关键字
变量命名有意义,且不能使用中文哦
'''
#自动类型转换:
#数字类型的精度分别是 bool int float complex
#在运算过程中,存在低精度向高精度的转换
#变量的缓存机制
#3.6版本-5~正无穷 整形 值相同 地址相同
#float 非负数 值相同, 地址相同
#bool 值相同 地址相同
# complex:除了纯虚数的情况下,地址都不相同
#str,值相同,地址相同
#空元组地址相同()
#其余容器类数据,地址都不相同
#python的运算符
#算数运算符:+ - * / // % **
#/值都是小数
#//如果都是整数,得到的是int,任意一个是小数,得到的是float >>>>>>print(3.6/1.2) 输出为3.0
#**的优先级最高
#逻辑运算符: and or not
#优先级中not>and>or
#逻辑短路:False and 布尔型
#True or 布尔型
#逻辑运算符在使用中一定要使用空格
#print()函数的返回值是None
#赋值运算符:= += /= *= **= %= /= //=
#在所有运算符中,=的等级最低
#比较运算符:< > <= >= == !=
#产生的不是True就是False
#成员运算符:in,not in
#str在判断是,需要是一个连续的片段
#dict在判断是只能判断键,不能判断值
#身份运算符:is,is not
#和==的却别是,is是判断地址是否相同
#==判断是值是否相等
#数据类型的判断isinstance
isinstance("1233",(str,tuple,int))
print(isinstance("1233",(str,tuple,int)))