day02-数据类型、运算符 一、单位换算 1000 0101 1位 1bit(比特) 1b 1字节(bytes)B = 8b 1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1B 十进制的数的范围 0000 0000 1111 1111 无符号 0-255 有符号 -128-127 计算机如何存储负数? 最高位当做符号位(有符号,无符号) 0000 0011 3 1000 0011 -3 原码、反码、补码,计算机存储的都是补码 正数的原码、反码、补码都是一样的,三位一体 对于负数: -3 1000 0011 原码 1111 1100 反码 1111 1101 补码 再求补码就是原码 1000 0010 1000 0011 二、数据类型 数字型(Number) 布尔型(Boolean) 空(None) 字符串(String) 列表(List) 元组(Tuple) 集合(Set) 字典(Dictionary) 数字型 就是平常你存放到变量中的100,1.34等等,类似于100的类型称之为整型(int)integer,类似于1.34的类型称之为浮点型(float) 【注】切忌在代码中判断浮点数是否相等,因为计算机存储浮点数有一个精度值,不是那么准确 通过type函数来判断变量的类型 print(type(a)) 布尔型 真 True 假 False 空(None) a = None 字符串 在python中,字符串要使用单引号或者双引号括起来,单引号和双引号没有区别 单引号里面不能再加单引号,但是可以加双引号 双引号里面不能再加双引号,但是可以加单引号 如果字符串比较长,一行显示不下,怎么写 第一种: e = '今天早上,我在楼下碰见一个美女,'\ '我给她打招呼,他不搭理我,然后我说,咱两认识呀' 第二种: f = '今天早上,我在楼下碰见一个美女,\ 我给她打招呼,他不搭理我,然后我说,咱两认识呀' 第三种: g = '''多行字符串''' h = """多行字符串""" 字符串长度 无论是英文还是中文,字符串长度都是有几个字就是多长,不用关心底层到底怎么存的 提取某个字符 从左边开始,下标从0开始 从右边开始,下标从-1开始 string[0] 第一个字符 string[-1] 最后一个字符 字符串起名字不能是 str 因为str是关键字 转义字符 将原来的意义给去除掉 j = 'i love you\' baby' k = "我喜欢的明星叫\"做李小龙" 单引号里面添加单引号需要使用转义字符 双引号里面添加双引号需要使用转义字符 系统有一些特殊意义的字符 \n 换行符 \t 制表符 l = '花田里犯了错,说好,第\\n二天早上忘掉' 通过转义字符让 \n 失去意义 print('你好\t王宝强的媳妇\t\t\t马蓉蓉') print('你好啊\t王宝强的经纪人进监狱了\t宋吉吉') 制表符的意义,如果想失去意义,加\取消原来的意义 a = r"初心未改,虔诚不变,\n不懈攀登,谁与争锋" 直接 \n 符就失去意义,就是一个普通字符 字符串里面的 + * c = a + ',' + b + '.html' 【注】a和b的类型必须都是字符串 print('霍' * 10) 原来的字符串直接拼接10次 字符串切片 字符串截取 a[开始下标:结束下标] 代表的意思是从开始下标开始提取,到结束下标结束,包括开始下标,但是不包括结束下标 a[0:3] 提取012 a[:3] 提取012 a[2:] 提取2到末尾 a[2:-2] 提取2到倒数第二个,不包括倒数第二个 a[-4:] 提取最后4个字符 a[:] 提取所有 a[::2] 最后一个是步进值,隔一个取一个 a[::-1] 字符的逆序 背下来 字符串的不可变 字符串里面的内容不可变 但是字符串变量可以改变 字符串的格式化 print('我叫%s, 我喜欢%s, 我今年%d岁了' % (name, like, age)) %s 给字符串占位置的 %d 给int类型占位置的 %10d 总共10位,前面补空格 %010d 总共10位,前面补零 %f 给float类型占位置的 默认保留6位小数 %.2f 保留2位小数 %10.2f 保留2位小数,一共10位,前面补空格 %010.2f 保留2位小数,一共10位,前面补零 %c 打印一个字符 ascii码 ascii表格 8位 0-127 计算机存储的都是二进制,看程序怎么读取它,如果按照十进制读取,那么就是97,如果按照字符读取,就会参考ascii表,读出来是小写字母a print('%d' % 'a') python中没有单个字符,这么写报错 ord 将字符转化为ascii值 chr 将ascii值转化为字符 a-z 97-122 A-Z 65-90 0-9 48-57 %o 将十进制按照八进制打印 %x 将十进制按照十六进制打印 第二种格式化方式 print('我叫{}, 我喜欢{}, 我今年{}岁了, 我的身高为{}cm'.format(name, like, age, 175.345)) print('我叫{3}, 我喜欢{2}, 我今年{1}岁了, 我的身高为{0}cm'.format(name, like, age, 175.345)) name替换0 like替换1 以此类推 print('我叫{nana}, 我喜欢{like}, 我今年{lala}岁了, 我的身高为{dudu}cm'.format(lala=age, dudu=175.345, nana=name, like=like)) print换行问题 print('hello', end='') 列表(list) 通过[]来进行定义 里面可写字符串、整型、列表等 列表取值 下标从0开始 lt[0] 第一个元素 lt[-1] 最后一个元素 lt[-1][0] 最后一个元素列表的第一个元素 列表元素可修改 存在越界问题 列表相加 组成一个新的列表,包含两个列表所有元素 【注】必须都是列表才可以 * 生成一个新的列表,列表重复n次 列表赋值 [a, b, c] = [100, 200, 300] 前后列表的个数必须相等 列表切片 # print(lt[:3]) # print(lt[::-1]) # print(lt[::2]) # print(lt[1:-2]) lt[::] = [] 清空列表 lt[0:2] = [] 删除列表前两个元素 元组(tuple) 定义和列表几乎上一样,就是使用()括起来即可 【注】元组是不可变元素,但是可以修改元组中的列表中的元素 【注】如果元组中只有一个元素,那么需要添加一个逗号,否则就不是元组了 元组元素的访问和列表一样 元组的切片 和字符串、列表一样 print(t3[-1:-2:-1]) 【注】从后面往前面切的时候,要记得将步进值设置为你想要的步进值,比如-1。默认是往后面切的 元组切完之后还是元组 字符串切完之后还是字符串 列表切完之后还是列表 元组也有 + * 作用和字符串、列表都一样 集合(set) 无序性、唯一性 s1 = {'李白', '杜甫', '白居易', '李白', '杜甫', '白居易'} 定义空集合 s2 = set() 不能使用{} ,默认这个是空字典 # print(s1 & s2) 交集 # print(s1 | s2) 并集 # print(s1 - s2) 差集 这两个差集不一样,要注意 # print(s2 - s1) 差集 字典(dictionary) 说明:是由键值对构成的 键和值中间使用冒号隔开 各个键值对中间使用逗号隔开 键值对必须成对出现 键是唯一的,值是随便的 根据键获取值,格式如下 a = d1['name'] print(a) 如果键不存在,报错 d1.get('name') 键存在,返回值,键不存在,返回None 添加修改值 d1['name'] = 'maodan' 如果键存在,代表修改键值对,如果键不存在,代表添加键值对 字典是可变的 删除 del d1['haha'] 根据键删除键值对 del d1 删除整个字典 通过len求长度,里面有多少个键值对