oldboy sixth day. I love Python. dict- 字典.

就昨天写的东西里面的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 方面的东西. 有懂的大神 请来指点, 为爬虫做准备, 我一定要把 妹子图 爬下来 - -

猜你喜欢

转载自www.cnblogs.com/Fushengliangnian/p/9140741.html