zoukankan      html  css  js  c++  java
  • python学习:列表、元组、字典、集合

    一、列表LIST

    列表的下标是从0开始的,最后一个元素的下标可以用 -1,取元素的时候”顾头不顾尾“。定义如下列表:

    names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]

    1、切片:

     1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
     2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
     3 ['Tenglan', 'Eric', 'Rain']
     4 >>> names[1:-1] #取下标1至-1的值,不包括-1
     5 ['Tenglan', 'Eric', 'Rain', 'Tom']
     6 >>> names[0:3] 
     7 ['Alex', 'Tenglan', 'Eric']
     8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
     9 ['Alex', 'Tenglan', 'Eric']
    10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
    11 ['Rain', 'Tom', 'Amy'] 
    12 >>> names[3:-1] #这样-1就不会被包含了
    13 ['Rain', 'Tom']
    14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
    15 ['Alex', 'Eric', 'Tom'] 
    16 >>> names[::2] #和上句效果一样
    17 ['Alex', 'Eric', 'Tom']

    2、追加append:

    1 >>> names
    2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    3 >>> names.append("我是新来的")
    4 >>> names
    5 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

    3、插入insert:

    1 >>> names
    2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    3 >>> names.insert(2,"强行从Eric前面插入")
    4 >>> names
    5 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    6 
    7 >>> names.insert(5,"从eric后面插入试试新姿势")
    8 >>> names
    9 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

    4、修改:

    1 >>> names
    2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    3 >>> names[2] = "该换人了"
    4 >>> names
    5 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

    5、删除:

    三种方式:

    a、del 列表[下标索引]

    b、列表.remove("元素名称")

    c、列表.pop[下标索引],pop和del的区别在于pop会返回删除的元素,但是del无返回值 

     1 >>> names
     2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     3 >>> del names[2] 
     4 >>> names
     5 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     6 >>> del names[4]
     7 >>> names
     8 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
     9 >>> 
    10 >>> names.remove("Eric") #删除指定元素
    11 >>> names
    12 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
    13 >>> names.pop() #删除列表最后一个值 
    14 '我是新来的'
    15 >>> names
    16 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    17 >>> names.pop(1) #删除指定位置的元素
    18 Tenglan
    19 >>> names
    20 ['Alex', 'Rain', 'Tom', 'Amy']

    6、扩展extend:

    1 >>> names
    2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    3 >>> b = [1,2,3]
    4 >>> names.extend(b)
    5 >>> names
    6 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

    7、拷贝:

     1 >>> import copy
     2 >>> names = ["Alex","Tenglan",["Eric",1000],"Rain","Tom","Amy"]
     3 >>> name1=names.copy()
     4 >>> name1
     5 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
     6 >>> name2 = copy.copy(names)
     7 >>> name2
     8 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
     9 >>> name3=names[:]
    10 >>> name3
    11 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    12 >>> name4=list(names)
    13 >>> name4
    14 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    15 
    16 上面采取了4种方式对names列表进行了copy操作。
    17 现在,我们来继续往下看:
    18 >>> names
    19 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    20 >>> name_copy=list(names)
    21 >>> name_copy
    22 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    23 >>> names[1]='张三'
    24 >>> names
    25 ['Alex', '张三', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    26 >>> name_copy
    27 ['Alex', 'Tenglan', ['Eric', 1000], 'Rain', 'Tom', 'Amy']
    28 注意:这里我们把names列表copy了一个新的列表name_copy,然后我们更改了names表的第2个元素,从结果可以看出新列表name_copy的第2个元素并没有发生改变。
    29 
    30 接着往下看:
    31 >>> names[2][1]=7777
    32 >>> names
    33 ['Alex', '张三', ['Eric', 7777], 'Rain', 'Tom', 'Amy']
    34 >>> name_copy
    35 ['Alex', 'Tenglan', ['Eric', 7777], 'Rain', 'Tom', 'Amy']
    36 注意:names列表的第3个元素也是一个列表,这里我们执行names[2][1]=7777后发现,names和name_copy两个列表的相应元素同时发生了改变。
    37 
    38 这就是深度copy和浅度copy,上面的4中copy方式都是浅度copy,浅度copy只能copy第一层的元素,对于列表中含有的列表的元素,只是copy了这个子列表的一个内存地址而已。
    39 
    40 如果要实现我们在改变names列表中列表的元素时,copy过来的列表的对应元素不发生变化,必须显示的进行深度copy,往下看:
    41 >>>name_copy2=copy.deepcopy(names) --深度copy
    42 >>>names[2][1]=1521 43 >>> names 44 ['Alex', '张三', ['Eric', 1521], 'Rain', 'Tom', 'Amy'] 45 >>> name_copy2 46 ['Alex', '张三', ['Eric', 7777], 'Rain', 'Tom', 'Amy']

    8、统计count:

    统计某个元素在列表中出现的次数。

    1 >>> names=(1,2,3,2,4,5,3,2,7,2,3)
    2 >>> names.count(3)
    3 3
    4 >>> names.count(2)
    5 4

    9、排序sort、反转reverse:

     1 >>> names = ["Alex","Tenglan",["Eric",1000],"Rain","Tom","Amy"]
     2 >>> names.sort()  #排序
     3 Traceback (most recent call last):
     4   File "<stdin>", line 1, in <module>
     5 TypeError: '<' not supported between instances of 'list' and 'str'
     6 >>> names.pop(2)
     7 ['Eric', 1000]
     8 >>> names
     9 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    10 >>> names.sort() #排序
    11 >>> names
    12 ['Alex', 'Amy', 'Rain', 'Tenglan', 'Tom']
    13 
    14 >>> names.reverse() #反转
    15 >>> names
    16 ['Tom', 'Tenglan', 'Rain', 'Amy', 'Alex']

    列表的排序和反转对中文没有效果:

     1 >>> names=['zhangsan','张三','章邯']
     2 >>> names.sort()
     3 >>> names
     4 ['zhangsan', '张三', '章邯']
     5 >>> names=['张三','zhangsan','章邯']
     6 >>> names.sort()
     7 >>> names
     8 ['zhangsan', '张三', '章邯']
     9 >>> names.append('阿三')
    10 >>> names
    11 ['zhangsan', '张三', '章邯', '阿三']
    12 >>> names.sort()
    13 >>> names
    14 ['zhangsan', '张三', '章邯', '阿三']
    15 >>> names.append('asan')
    16 >>> names.sort()
    17 >>> names
    18 ['asan', 'zhangsan', '张三', '章邯', '阿三']

    10、获取下标index:

    注意:只返回找到指定元素的第一个下标

    1 >>> names
    2 ['asan', 'zhangsan', '张三', '章邯', '张三', '阿三']
    3 >>> names.index('zhangsan')
    4 1
    5 >>> names.index('张三')
    6 2

    二、元组TUPLE

    元组和列表其实差不多,只是元组一旦创建就不允许再修改,所以元组又叫做只读列表。

    元组的定义:

    names = ("Alex","Tenglan","Eric","Rain","Tom","Amy")

    元组只有两个方法:count、index、len

     1 tu1 = ("Alex","Tenglan","Eric","Rain","Tom","Amy","Eric","Eric")
     2 print(len(tu1))            # 8 计算元组中元素的个数
     3 print(tu1.count('Eric'))   # 3 计算元组中有多少个指定的元素
     4 print(tu1.index('Eric'))   # 2 查找第一次出现指定元素的位置,如果找不到则报异常
     5 print(tu1.index('Eric', 3))   # 6 查找第一次出现指定元素的位置,如果找不到则报异常
     6 
     7 print(tu1.index('Tenglan', 3))   # Error 查找第一次出现指定元素的位置,如果找不到则报异常
     8 Traceback (most recent call last):
     9   File "D:/python/study/day01.py", line 14, in <module>
    10     print(tu1.index('Tenglan', 3))   # Error 查找第一次出现指定元素的位置,如果找不到则报异常
    11 ValueError: tuple.index(x): x not in tuple

    元组也可以切片:

    1 tu1 = ("Alex","Tenglan","Eric","Rain","Tom","Amy")
    2 print(tu1[0])    # Alex
    3 print(tu1[-1])   # Amy
    4 print(tu1[1:3])  # ('Tenglan', 'Eric')
    5 print(tu1[:-1])  # ('Alex', 'Tenglan', 'Eric', 'Rain', 'Tom')
    6 print(tu1[::])   # ('Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy')
    7 print(tu1[::2])  # ('Alex', 'Eric', 'Tom')
    8 print(tu1[::-1]) # ('Amy', 'Tom', 'Rain', 'Eric', 'Tenglan', 'Alex')

    三、字典DICT

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    d = {key1 : value1, key2 : value2 }

    字典的特性:

    1、键必须是唯一的,但值则不必。

    2、Key必须是不可变数据类型(int,str,bool,tuple),但Value可以是任意数据类型(int,str,bool,tuple,list,dict,set)等

    创建字典的几种方式:

     1 # 方式1:
     2 dic = dict((('one', 1),('two', 2),('three', 3)))
     3 print(dic)  # {'one': 1, 'two': 2, 'three': 3}
     4 dic = dict([('one', 1),('two', 2),('three', 3)])
     5 print(dic)  # {'one': 1, 'two': 2, 'three': 3}
     6 
     7 # 方式2:
     8 dic = dict(one=1,two=2,three=3)
     9 print(dic)  # {'one': 1, 'two': 2, 'three': 3}
    10 
    11 # 方式3:
    12 dic = dict({'one': 1, 'two': 2, 'three': 3})
    13 print(dic)  # {'one': 1, 'two': 2, 'three': 3}
    14 
    15 # 方式4:
    16 dic = dict(zip(['one', 'two', 'three'],[1, 2, 3]))
    17 print(dic)
    18 
    19 # 方式5: 字典推导式
    20 dic = {k: v for k,v in [('one', 1),('two', 2),('three', 3)]}
    21 print(dic)
    22 
    23 # 方式6:利用fromkey
    24 dic = dict.fromkeys('abcd','dict')
    25 print(dic)  # {'a': 'dict', 'b': 'dict', 'c': 'dict', 'd': 'dict'}
    26 
    27 #很蛋疼,方式太多了记不住,直接用下面的方式不好吗?
    28 dic = {'one': 1, 'two': 2, 'three': 3}
    29 print(dic)  #{'one': 1, 'two': 2, 'three': 3}

    字典常用的方法:

     1 # 通过键值对直接增加
     2 # 如果key存在,则会修改这个key对应的value,如果key不存在就增加
     3 dic = {'name': '张三', 'age': 18}
     4 dic['weight'] = 79  # weight键不存在,增直接增加此键值对
     5 print(dic)
     6 
     7 dic['name'] = '李四' # name这个键已经存在,则修改值为 李四
     8 print(dic)
     9 
    10 # 通过setdefault增加
    11 # 如果key存在,则不做任何改变,如果key不存在就增加
    12 # setdefault是有返回值的
    13 dic.setdefault('height',180) # height 键不存在,则会增加此键值对
    14 print(dic)
    15 
    16 dic.setdefault('name','王五') # name键已经存在,则不会发生任何改变
    17 print(dic)
    18 
    19 ret = dic.setdefault('name') # setdefault有两个参数,如果只有key,则返回value
    20 print(ret)

     1 dic = {'name': '李四', 'age': 18, 'weight': 79, 'height': 180}
     2 
     3 # pop,通过key来删除字典的键值对,有返回值,返回key对应的value
     4 # 可以设置默认的返回值
     5 ret = dic.pop('age')
     6 print(ret) # 18
     7 
     8 ret = dic.pop('wahaha',None)
     9 print(ret,dic) # None {'name': '李四', 'weight': 79, 'height': 180}
    10 
    11 ret = dic.pop('wahaha','QQXing')
    12 print(ret,dic) # QQXing {'name': '李四', 'weight': 79, 'height': 180}
    13 
    14 # popitem, 删除最后一个键值对
    15 ret = dic.popitem()  # 返回值ret是一个元组
    16 print(ret,dic)  # ('height', 180) {'name': '李四', 'weight': 79}
    17 
    18 # del, 通过key删除,如果没有指定key,则会删除整个字典
    19 dic = {'name': '李四', 'age': 18, 'weight': 79, 'height': 180}
    20 del dic['weight']
    21 print(dic)
    22 
    23 del dic['wahaha'] # wahaha这个key不存在,会报错
    24 Traceback (most recent call last):
    25   File "D:/python/study/day01.py", line 23, in <module>
    26     del dic['wahaha']
    27 KeyError: 'wahaha'
    28 
    29 del dic  # del 删除整个字典,打印会报错
    30 print(dic) # NameError: name 'dic' is not defined
    31 
    32 # clear, 清空字典
    33 dic.clear()
    34 print(dic)  # {}

     1 # 通过设置键值对直接改,存在就改,不存在会增加
     2 dic = {'name': '李四', 'age': 18}
     3 dic['name'] = '王五'
     4 print(dic)  # {'name': '王五', 'age': 18}
     5 
     6 # update
     7 dic = {'name': '李四', 'age': 18}
     8 dic.update(weight = 79, height = 180)
     9 print(dic) # {'name': '王五', 'age': 18, 'weight': 79, 'height': 180}
    10 
    11 dic = {'name': '李四', 'age': 18}
    12 dic.update([(1,'a'),(2,'B'),(3,'c')])
    13 print(dic) # {'name': '李四', 'age': 18, 1: 'a', 2: 'B', 3: 'c'}
    14 
    15 dic1 = {'name': '李四', 'age': 18}
    16 dic2 = {'name': '王五', 'weight': 79, 'height': 180}
    17 dic1.update(dic2) # 把dic2合并到dic1,dic1中有的就替换,没有的就新增
    18 print(dic1) # {'name': '王五', 'age': 18, 'weight': 79, 'height': 180}
    19 print(dic2) # {'name': '王五', 'weight': 79, 'height': 180}

     1 dic = {'name': '王五', 'age': 18}
     2 
     3 # 通过键查,直接用dic[key]。
     4 # 注意:如果key不存在则会报错
     5 ret = dic['name']
     6 print(ret)  # 王五
     7 
     8 # get,用dic.get(key)
     9 # 如果key不存在则默认返回None,也可以指定一个默认的返回值,如“查无此键”
    10 # 如果key存就返回对应value
    11 ret = dic.get('name')
    12 print(ret) # 王五
    13 
    14 ret = dic.get('wahaha')
    15 print(ret) # None
    16 
    17 ret = dic.get('wahaha', '查无此键')
    18 print(ret) # 查无此键
    19 
    20 # dic.keys(),返回所有的key组成的一个列表,可转换成列表
    21 ret = dic.keys()
    22 print(ret) # dict_keys(['name', 'age'])
    23 ret = list(ret)
    24 print(ret)  # ['name', 'age']
    25 
    26 # dic.values(),返回所有的value组成的一个列表
    27 ret = dic.values()
    28 print(ret) # dict_values(['王五', 18])
    29 ret = list(ret)
    30 print(ret)  # ['王五', 18]
    31 
    32 # dic.items(),返回整个字典,返回值是一个列表,每个元素是字典的每个键值对形成的一个元组
    33 ret = dic.items()
    34 print(ret) # dict_items([('name', '王五'), ('age', 18)])
    35 ret = list(ret)
    36 print(ret)  # [('name', '王五'), ('age', 18)]
    37 
    38 # 判断某个key是否存在
    39 if 'name' in dic:
    40     print('key:name is exist')
    41 
    42 # 循环打印字典
    43 # 下面两种方式结果一样,但是第一种方式比第二种性能高很多。第二种在循环之前会把整个字典的键值对转成list都装入内存,数据量大时千万慎用。
    44 for i in dic:
    45     print(i,dic[i])
    46 
    47 # 效率极其低下
    48 for k,v in dic.items():
    49     print(k,v)
    50 
    51 # fromkeys,不知道哪里可以用到
    52 dic = dict.fromkeys('abcd','小蜗')
    53 print(dic) # {'a': '小蜗', 'b': '小蜗', 'c': '小蜗', 'd': '小蜗'}
    54 
    55 dic = dict.fromkeys([1, 2, 3],'小蜗')
    56 print(dic) # {1: '小蜗', 2: '小蜗', 3: '小蜗'}

    四、集合set

    集合(set)是一个无序的不重复元素序列。

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    创建格式:

    set1 = {value01,value02,...}
    或者
    set(value)

    1、创建集合

     1 set1 = set()  # 定义一个空集合,用set()
     2 print(set1,type(set1)) # set() <class 'set'>
     3 set1.add('孙悟空')
     4 set1.add('如来佛')
     5 print(set1) # {'孙悟空', '如来佛'}
     6 
     7 set2 = set('abc')
     8 print(set2) # {'b', 'a', 'c'}
     9 
    10 set3 = set(1,2,3)   # 报错
    11 Traceback (most recent call last):
    12   File "D:/python/study/day01.py", line 11, in <module>
    13     set3 = set(1,2,3)
    14 TypeError: set expected at most 1 arguments, got 3

    2、增(add 、update)

     1 set4 = set({2,4,6})
     2 
     3 # 添加一个元素
     4 set4.add(999)
     5 print(set4) # {2, 4, 6, 999}
     6 
     7 # 添加多个元素,迭代着增加。参数可以是列表、元组、集合)
     8 set4.update([44,55,66])  # 参数是列表
     9 print(set4) # {2, 66, 4, 6, 999, 44, 55}
    10 
    11 set4.update(('a','b'),('c','d'))  # 参数是元组
    12 print(set4) # {'b', 'c', 2, 66, 4, 'd', 6, 999, 44, 'a', 55}
    13 
    14 set4.update({'one','two'},{'three','four'})  # 参数是集合
    15 print(set4) # {'b', 'c', 2, 66, 4, 'd', 6, 999, 'four', 44, 'three', 'one', 'a', 55, 'two'}

    3、删(pop、remove、discard、clear、del)

     1 set4 = {2, 66, 44, 6, 999, 55}
     2 
     3 # pop,随机删除一个元素
     4 ret = set4.pop()
     5 print(set4) # {66, 6, 999, 44, 55}
     6 print(ret) # 2
     7 
     8 # remove,删除指定的元素,无返回值(返回None)。元素存在就删除,不存在会报错
     9 ret = set4.remove(44)
    10 print(set4) # {66, 4, 6, 999, 55}
    11 print(ret) # None
    12 
    13 ret = set4.remove(444) 
    14 Traceback (most recent call last):
    15   File "D:/python/study/day01.py", line 59, in <module>
    16     ret = set4.remove(444) # 删除指定的元素,无返回值(返回None)
    17 KeyError: 444
    18 
    19 # discard,删除指定的元素,无返回值(返回None)。元素存在就删除,不存在无异常抛出
    20 ret = set4.discard(66)
    21 print(set4) # {66, 4, 6, 999, 55}
    22 print(ret) # None
    23 
    24 ret = set4.discard(666)
    25 print(set4) # {66, 4, 6, 999, 55}
    26 print(ret) # None
    27 
    28 # clear,清空集合
    29 set4.clear()
    30 print(set4)
    31 
    32 # del,删除集合
    33 del set4
    34 print(set4)  # del后,set4已经不存在了,print会抛出异常
    35 Traceback (most recent call last):
    36   File "D:/python/study/day01.py", line 80, in <module>
    37     print(set4)
    38 NameError: name 'set4' is not defined

    4、集合的运算

     1 list1 = [1,3,5,3,7,9,1,11]
     2 list2 = [2,4,5,4,66,7,8,6,2,10]
     3 
     4 #自动去重,无序
     5 set1 = set(list1)
     6 set2 = set(list2)
     7 print(set1)  # {1, 3, 5, 7, 9, 11}
     8 print(set2)  # {2, 4, 5, 6, 7, 8, 10}
     9 
    10 # 交集
    11 print(set1.intersection(set2)) # {5, 7}
    12 print(set1 & set2) # {5, 7}
    13 
    14 # 并集
    15 print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
    16 print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
    17 
    18 # 差集,
    19 print(set1.difference(set2)) # {11, 1, 3, 9}
    20 print(set1 - set2) # {11, 1, 3, 9}
    21 
    22 # 子集,父集
    23 set3 = set([1,3,5])
    24 
    25 print(set3.issubset(set1)) # True
    26 print(set3 <= set1) # True
    27 
    28 print(set1.issuperset(set3)) # True
    29 print(set1 >= set3) # True
    30 
    31 # 对称差集:去掉两者的共同元素后组成的集合
    32 print(set1.symmetric_difference(set2)) # 1, 2, 66, 4, 6, 8, 3, 10, 9, 11}
    33 print(set1 ^ set2) # 1, 2, 66, 4, 6, 8, 3, 10, 9, 11}
    34 
    35 # 检查是否有相同的元素,如果两个集合没有任何相同的元素,则返回False
    36 set4 = set({2,4,6})
    37 print(set3.isdisjoint(set4)) # True
    38 set4 = set({1,4,6})
    39 print(set3.isdisjoint(set4)) # False

    5、frozenset

    不能被修改

    t = frozenset('shop')
    print(t) # frozenset({'s', 'h', 'p', 'o'})

     6、成员关系 (in, not in)

    1 >>> 'k' in s
    2 False
    3 >>> 'k' in t
    4 True
    5 >>> 'c' not in t
    6 True

    7、集合等价/不等价

    1 >>> s == t
    2 False
    3 >>> s != t
    4 True
    5 >>> u = frozenset(s)
    6 >>> s == u
    7 True
    8 >>> set('posh') == set('shop')
    9 True

    五、购物车作业

    需求(列表):

    1、启动程序后,让用户输入工资,然后打印商品列表

    2、用户选择商品编号购买商品

    3、用户选择商品后,检测余额是否够,如果余额够就直接扣款,如果不够就提醒

    4、可随时退出,退出时打印已购买的上和余额

     1 product_list = [('Iphone',5800),
     2                 ('Mac Pro',9800),
     3                 ('Bike',800),
     4                 ('Watch',10600),
     5                 ('Coffee',31),
     6                 ('Alex Python',120)]
     7 shopping_cart = []
     8 
     9 salary = input("Input your salary: ")
    10 if salary.isdigit():
    11     salary = int(salary)
    12     while 1:
    13         for item in product_list:
    14             print(product_list.index(item) + 1, item)
    15 
    16         user_choice = input("请选择需要购买的商品:").lower()
    17         if user_choice.isdigit():
    18             user_choice = int(user_choice)
    19             if user_choice > 0 and user_choice <= len(product_list):
    20                 p_item = product_list[user_choice - 1]
    21                 if p_item[1] <= salary:
    22                     shopping_cart.append(p_item)
    23                     salary = salary - p_item[1]
    24                     print("Added %s into shopping cart,your current balance is 33[31;1m%s33[0m"%(p_item[0], salary))
    25                 else:
    26                     print("33[32;1m你的余额只剩下【%s】元,无法再购买任何商品!33[0m"%salary)
    27             else:
    28                 print("你选择的商品不存在商品列表中!")
    29         elif user_choice == 'q':
    30             print("-------shopping cart--------")
    31             for index, item in enumerate(shopping_cart):
    32                 print(item)
    33             print("Your current balance is :", salary)
    34             break
    35         else:
    36             print('Invalid Option...')
    View Code
  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/Ryan-Fei/p/12085080.html
Copyright © 2011-2022 走看看