我的Python学习之路——week2

你们可能不知道用了一周多一点时间才学完一周的课程是什么概念,我们一般只会用两个字形容这种人:辣鸡(我:...)

我经常说一句话,当年你大学生可以用两周时间学完整个学期的课程,我Azie用八天时间学完一周课程,不是问题!!!

 

好了,言归正传,这周的内容是人见人爱,花见花开的以后我们经常会用到的:列表和字典!

Let‘s Go!

首先我们来讲一讲列表,那么什么是列表呢?形如:list = [a, b, c, d]的就是列表了。通俗点来说,就是中括号[ ]被称为列表,[ ]中的值只需要用逗号分隔开,就构成了一个完整的列表。

对于列表,有许多许多常规的操作,最简单的就是我们所说的取值(也就是查),取值方法包括如下两种:一种是通过下标取某一个单独的值,一种是给定一个下标的范围取值——学名:切片。

接下来代码来简单说明吧~

 

著名刑法老司机罗翔老师说过,罪犯张三,罪恶滔天,不能让他成为法外狂徒,所以,我们必须找出张三!

第一个程序:在人群中找出张三!(列表的创建以及两种取值方法。)

 1 # -*- coding:utf-8 -*-
 2 # @author:Azie Hu
 3 
 4 
 5 '''
 6 任务:
 7 在人群中找出张三!
 8 列表的创建以及两种取值方法。
 9 '''
10 
11 #创建列表
12 list = ['张三', '李四', '王五', '赵六']
13 
14 #取值:张三
15 #第一种取值方法,通过下标来取值,下标从0开始
16 value1 = list[0]
17 
18 #取值赵六
19 #第一种取值方法的变种,取得最后一个值,不用数第几个,直接使用-1
20 value2 = list[-1]
21 
22 #取值:李四,王五
23 #第二种取值方法:通过范围控制取值——切片!
24 #范围[1:3]属于顾头不顾尾类型,因此真实取值为1和2
25 value3 = list[1:3]
26 
27 #跳跃取值:张三、王五
28 #三个参数分别为:start、stop、step
29 value4 = list[0:4:2]
30 
31 
32 print(value1)
33 print(value2)
34 print(value3)
35 print(value4)
View Code

结果:

到目前为止,我们已经学会了简单的列表数据的查找方式。那么传统的增删改查四大操作的其他三个怎么办呢?不要 着急,听我娓娓道来!

按照顺序,我们首先来看增。

在列表这种数据格式中,Python为我们提供了两种增加数据的方式:append 和 insert 。

append的作用是在列表的最后添加一个我们想要的元素,而insert则是在我们想要的位置添加一个我们想要的元素。所以,在用append增加元素时,我们只需要给出元素即可,而使用insert时,需要给出位置和元素!

下面演示两个增添数据的方法。

第二个程序:在列表中添加police(张三:???多大仇???)

# -*- coding:utf-8 -*-
# @author:Azie Hu


'''
任务:
在列表中添加police
'''

#创建列表
list = ['张三', '李四', '王五', '赵六']

#增加数据:append
list.append('police')
print(list)

#增加数据:insert(添加到张三后面)
list.insert(1, 'police')
print(list)
View Code

结果:

接下来,我们先让无辜群众从包围圈出去吧!开始疏散群众(删除群众的数据)。Python为删除数据提供了三个方法:1、remove  2、del  3、pop

remove通过指定元素来删除,而del和pop则是通过指定元素的位置来删除。(说明:如果pop不给位置的话,会默认删掉最后一个元素,自己动手试试吧)

第三个程序:疏散群众!

# -*- coding:utf-8 -*-
# @author:Azie Hu


'''
任务:
在列表中添加police
疏散群众!删除数据。
'''

#创建列表
list = ['张三', '李四', '王五', '赵六']

#增加数据:append
list.append('police')
print(list)

#增加数据:insert(添加到张三后面)
list.insert(1, 'police')
print(list)

#删除李四
list.remove('李四')
#删除王五
list.pop(-3)
#删除赵六
del list[-2]
print(list)
View Code

结果:

我们可以发现,罪犯张三已经被我们的police追上了,所以他的结局就是入狱改造啦!

(十年后...)

张三出狱了,他已经决定改名换姓重新做人,为了保证他不再犯事,我们依然派遣了两名police监控他!

要更改列表的元素,直接指定位置然后赋值即可。

第四个程序:张三改名!(改)

改动部分:

结果:

好了,张三的闹剧就告一段落啦。接下来对于列表没有提到的知识点进行一个小总结吧。

1、list.index('value') ------------> 找出'value'的索引位置,给出下标

2、list.count('value')------------> 找出列表中有多少个'value',给出个数

3、list.reverse()------------------>翻转列表

4、list.sort()----------------------->列表排序(根据ascii码?)

5、list.extend(list2)------------->将list2拼接到list上

 

列表的内容差不多就结束了,Python中有一个和列表很相似的类型--元组,符号为小括号()。我们可以把元组理解为一个只读列表,因为它一旦被创建就不可修改。

元组只有两个操作,一个是count,另一个是index。用法和列表中这两个操作的用法相同!

 

接下来说一下另一个重点:字典,符号为大括号{}。

字典是一个必须满足键值同时存在的类型,也就是必须有key和value,对应关系为key:value,中间用分号(:)隔开。字典的特性是:字典是无序的且key值是唯一的。简单概括就是字典是一种无序不重复的类型!天生不重复(key不重复)!

那么什么是一个字典呢?形如dict = {'name':'zhangsan', 'age' = '19'}的就是字典啦。

和列表一样,字典也有常用的增删改查四大操作。

增/查:dict[key] = 'value'--------------------->如果有key的话,就返回value。如果没有key的话,就增加这一对键值。

删:del dict[key] ---------------------------->删除该key对应的value

dict.pop(key)---------------------------------->删除该key对应的value

dict.popitem()--------------------------------->随机删除

改:直接对dict[key]赋值

 

好了,常用知识点就到此结束啦。接下来是这周的两个作业:购物车程序和三级菜单。

1、购物车

# -*- coding:utf-8 -*- #
# Author : Azie


'''
购物车程序要求:
1、启动程序后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额,如果余额足够,直接扣款,如果余额不足,提示余额不足
4、用户可随时退出,退出时,打印已购买商品和余额
'''


print('*'*30)
print('     Welcome to our mall')
print('*'*30)

goods = [('Iphone', 9999), ('Samsung',7999), ('Huawei', 6999), ('Xiaomi', 4999), ('Redmi', 2999)]
buy = []
salary = input('请输入您的工资:')

if salary.isdigit():
    salary = int(salary)
    while True:
        print('本商城商品如下:')
        for index, good in enumerate(goods):
            print(index, good)
        answer = input('是否继续逛商城?(yes/no):')
        if answer == 'yes':
            choice = input('请输入您想购买商品的序号:')
            if choice.isdigit():
                choice = int(choice)
            print('您想要购买的商品为\033[31;1m{}\033[0m,需要花费人民币\033[31;1m{}\033[0m元'.format(goods[choice][0], goods[choice][1]))
            confirm = input('是否确认购买?(yes/no):')
            if confirm == 'yes':
                if salary >= goods[choice][1]:
                    salary -= goods[choice][1]
                    buy.append(goods[choice])
                    print('*' * 30)
                    print('购买的如下商品', buy)
                    print('剩下的工资如下:', salary)
                    print('*' * 30)
                else:
                    print('-' * 30)
                    print('钱不够了,买不起...努力赚钱吧!')
                    print('-' * 30)
                    break
            else:
                print('+' * 30)
                print('已取消购买,重新选择商品吧!')
                print('+' * 30)
                continue
        else:
            print('*' * 30)
            print('感谢您的光临,再见!')
            print('购买的如下商品', buy)
            print('剩下的工资如下:', salary)
            print('*' * 30)
            break
else:
    print('您输入了错误的字符!')
View Code

2、三级菜单

'''
创建一个三级菜单,用于存储地名:省-市-县
用户输入‘b’返回上一级菜单
'''


menu = {
    '辽宁':{'沈阳':{'康平':'国家绿色食品基地建设县','法库':'瓷土的储量为全国最大'},'大连':{'中山':'2020中国县域潮品消费百强榜排名55','沙河口':'全国家庭教育示范区'}},
    '四川':{'成都':{'双流':'全国文明城市','武侯':'高科技文化区'},'绵阳':{'三台':'2019中国西部百强县市','芦溪':'还全国美丽宜居小镇'}},
    '海南':{'三亚':{'天涯区':'景区繁多','海棠区':'第一批革命文物保护利用片区'},'儋州':{'南丰':'国家水利风景区','大成':'以橡胶为支柱产业'}}
}

quit_flag = True
while  quit_flag:
    print('现有省份如下:')
    for province in menu:
        print(province)
    choice1 = input('请选择省份:')
    if choice1 in menu:
        while  quit_flag:
            print('现有市级如下:')
            for city in menu[choice1]:
                print(city)
            choice2 = input('请选择市级:')
            if choice2 in menu[choice1]:
                while  quit_flag:
                    print('现有县级如下:')
                    for county in menu[choice1][choice2]:
                        print(county)
                    choice3 = input('请选择县级:')
                    if choice3 in menu[choice1][choice2]:
                        print(menu[choice1][choice2][choice3])
                        quit_flag = False

                    elif choice3 == 'b':
                        break 
                        
            elif choice2 == 'b':
                break
           
    elif choice1 == 'b':
        break
View Code
 
 
 
 
posted @ 2020-06-15 16:29  丶原来是枝知啊i  阅读(108)  评论(0)    收藏  举报