就昨天写的东西里面的12题, 其实很简单, 只是自己有一个for 循环 没有用好,导致自己的思绪绕了好几个大弯, 把一道简简单单的题, 写的 又臭又长.待会会附上 正确思路的代码,
接下来还是先丢一波 课堂笔记;
一, 回顾上节课内容:
1,列表 list [元素,元素,元素]
2,列表的功能: 索引, 切片,增删改查
3, 列表的嵌套
4, tuple 元组 (元素, ) 如果只有一个元素,需要在第一个元素后面添加一个逗号,否则, 这个类型 是元素本身的类型
5, range():
二, 作业(重点):
12题先插一波代码,在说后面的东西:
1 ''' 2 12,开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符: 3 敏感词列表 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] 4 则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换***),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。 5 ''' 6 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] 7 lis = [] 8 while 1: 9 user = input('请输入您的评论(输入回车结束程序): ') 10 if not user: 11 break 12 for i in li: 13 if i in user: 14 user = user.replace(i,'*' * len(i)) 15 print(user) 16 lis.append(user) 17 print(lis)
昨天大概写过了复杂的思路, 所以简单的思路就不写了, 这个代码,跟上篇的代码,最大的区别就是, 这个代码充分的用了 第12 行的那个 for 循环, 而上一篇则没有用到, 反而去写了个啥 索引- - 想想就难受- -
还有点小问题, 昨天有几道题, 题目没有审清楚,代码 跟效果有一定的出入, 以后在做作业的时候 一定要用心些.... 主要还是想第一个把代码发群里- - 原谅我小小的骄傲- - 哈哈哈 又开始装逼了,
三, 今天主要内容
1, 字典 dict: 特点就是快, 缺点就是占资源(空间换时间) 用{}表示, 每次保存两个数据, key: value, 键值对 . key: 必须是可哈希的(不可变的) value: 任意的数据类型,
用法: dict 字典是无序的,不按照我们保存的顺序保存.
key. 其实就是索引的作用.
dict 不能切片
2, dict 增删改查:
1,增: dict[key] = value如果key存在,执行修改, 如果不存在,执行的是新增
dict.setdefault(参数1, 参数2): 参数1= key, 参数2 = value . 如果参数1 已经存在,则不执行任何操作
2, 删:
dict.pop(): 必须写一个参数, 参数是key . 可以返回删除的值
del dic[] 缺点没有返回值
dict.clear() 清空
dict.popitem() 随机删除一个键值对,并且返回一个元组类型的值, 而且元组 可以直接解构成两个值
解构: 列: a , b = (1, 6) 元组, 列表, 字符串 都可以解构, 注意要 左右元素数量要匹配
得到: a =1 ,b= 6
3, 改:
dict1.update(dict2) 把dict2更新到dict1 ,dict1中如果存在了dict2中的key,会修改(覆盖),如果不存在,则会新增
4, 查询:
dict.get(参数1, 参数2) 参数1 =key 参数2 = 默认为None 如果key不存在则返回参数2的内容
5, 其他操作:
dict.keys() 返回所有的key 并组成以个新list
dict.values() 返回所有 value 并且组成一个新list.
dict.item() 返回 把键值对 组成元组,再把每个元组 组成一个新list 通过解构还可以直接获取到 key 和 value
6, 字典的嵌套
四, 今天的作业.
前几道题 还是练上述的各种操作方法, 枯燥, 无聊, 还麻烦, 4, 5, 6 题还是比较有意思,需要想想才写的出来的. 不过也还是不难. 第五题,是特别简单,下面我就把4题跟6题 粘一下,给大家看看哈哈.
1 # 4、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} 2 3 s = 'k:1|k1:2|k2:3|k3:4' 4 dic={} 5 lis1 = s.split('|')# 把字符串切成一对一对的字符串 6 for i in lis1: 7 lis2 = i.split(':')# 把字符串切成一个一个的字符 8 a , b = lis2 9 b = int(b) 10 dic[a]=b 11 print(dic)
简单吧 哈哈哈, 其实就是麻烦了点, 切这个,再切那个,在解构, 第七行跟第八行的代码 可以写成一行, 不够已经写完了, 懒得改哈哈.
下面是第6题.
1 ''' 2 6、输出商品列表,用户输入序号,显示用户选中的商品 3 4 商品列表: 5 goods = [{"name": "电脑", "price": 1999}, 6 {"name": "鼠标", "price": 10}, 7 {"name": "游艇", "price": 20}, 8 {"name": "美女", "price": 998}, ] 9 10 要求: 11 1:页面显示 序号 + 商品名称 + 商品价格,如: 12 1 电脑 1999 13 2 鼠标 10 14 … 15 2:用户输入选择的商品序号,然后打印商品名称及商品价格 16 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。 17 4:用户输入Q或者q,退出程序。 18 ''' 19 goods = [{"name": "电脑", "price": 1999}, 20 {"name": "鼠标", "price": 10}, 21 {"name": "游艇", "price": 20}, 22 {"name": "美女", "price": 998}, ] 23 while 1: 24 n = 1 25 lis=[] 26 print('下面是我们的商品菜单') 27 for i in goods: 28 a, b = i.values() 29 good = str(n)+' '+a+' '+str(b) 30 lis.append(good) 31 print(good) 32 n = int(n) + 1 33 34 user = input('请输入您选择的商品序号,一次仅支持输入一个商品序号(输入Q或者q,退出程序):') 35 if user =='Q' or user =='q': 36 print('程序结束') 37 break 38 elif int(user) > len(lis) or int(user) == 0: 39 print('输入有误,请重新选择商品并输入正确商品序号') 40 else: 41 print(lis[int(user)-1].strip(user))
这道题 看着长,实际上 真正需要自己写的代码,没有多少, 主要是 题目,跟题目里的那个dict 比较占行. 其实目前只能一个商品一个商品输入,而且就算用户第二次输入了第二个商品,也不会得到打印,所以目前为止,这个代码还没完全达到一个完美的用法. 等我 在研究研究.
不知道过了多久, 我想到了解决的方法,可以很完美的, 把客户每一次的选择都记录下来哈哈哈. 我是先在while循环外,再建了一个空列表, 然后在else 里面,把 新列表.append( lis[int(user)-1].strip(user)) )然后这样就很完美的把用户选择的商品记录了下来,然后在 把列表 在后面print出来. 哈哈 这样 每一次等用户输入完正确 的东西后 都会显示一下 哈哈哈.
唯一的不完美就是不能做一个求总价钱的计算, 不过题目里面没有这个要求, 我也懒得死这个脑细胞 ( 你怎么可以 这么懒 (手动生气 ) )
这就是作业了,最后一道大题,难度也就这样, 本来下面的环节呢, 应该 聊聊闲话, 但是我决定取消了, 因为 往往都是在尬聊, 所以我决定放弃了, 我没有闲扯淡的 天赋 (手动笑哭) 好了 今天就到这里, 坐等明天的到来, 不过我最近在看 有关 HIML 方面的东西. 有懂的大神 请来指点, 为爬虫做准备, 我一定要把 妹子图 爬下来 - -