字典 列表和集合习题

1、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain']

1 li=['alex','eric','rain']
2 v="_".join(li)
3 print(v)

执行结果:

1 alex_eric_rain

 

2、查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素。
li=["alec","aric","Alex","Tony","rain"]
tu=("alec","aric","Alex","Tony","rain")
dic={'k1':"alex",'k2':'aric',"k3":"Alex","k4":"Tony"}

复制代码
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-      
 3 # Author: nulige
 4 
 5 li = ["alec", "aric", "Alex", "Tony", "rain"]
 6 tu = ("alec", "aric", "Alex", "Tony", "rain")
 7 dic = {'k1': "alex", 'k2': 'aric', "k3": "Alex", "k4": "Tony"}
 8 
 9 list1 = list(tu)
10 list2 = list(dic.values())
11 newlist = li + list1 + list2
12 for i in newlist:
13     ret = i.strip()   #i.strip():删除字符串当前行首尾的的空格
14     if (ret.startswith('a') or ret.startswith('A')) and ret.endswith('c'):   #startswith查看是否已什么开始,endswith查看是否已什么结尾
15 print(ret)
复制代码

执行结果:

1 alec
2 aric
3 alec
4 aric
5 aric

 

3、写代码,有如下列表,按照要求实现每一个功能

li=['alex','eric','rain']

a.计算列表长度并输出

1 li = ['alex', 'eric', 'rain']
2 v = len(li)
3 print(v)

执行结果:

1 3

 

b.列表中追加元素“seven”,并输出添加后的列表

1 li = ['alex', 'eric', 'rain']
2 li.append(str("seven"))
3 print(li)

执行结果:

1 ['alex', 'eric', 'rain', 'seven']

 

c.请在列表的第1个位置插入元素“Tony”,并输出添加后的列表

1 li = ['alex', 'eric', 'rain']
2 li.insert(1,"Tony")
3 print(li)

执行结果:

1 ['alex', 'Tony', 'eric', 'rain']

 

d.请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表

1 li = ['alex', 'eric', 'rain']
2 li[1] = "Kelly"
3 print(li)

执行结果:

1 ['alex', 'Kelly', 'rain']

 

e.请删除列表中的元素“eric”,并输出修改后的列表

1 li = ['alex', 'eric', 'rain']
2 li.remove("eric")
3 print(li)

执行结果:

1 ['alex', 'rain']

 元素的值和删除元素后的列表 执

1 li = ['alex', 'eric', 'rain']
2 del li[1]
3 print(li)
4 n1 = li.pop(1)
5 print(n1)

执行结果:

1 ['alex', 'rain']
2 rain

 

g.请删除列表中的第3个元素,并输出删除元素后的列表

1 li = ['alex', 'eric', 'rain']
2 li.pop(2)
3 print(li)

执行结果:

1 ['alex', 'eric']

 

h.请删除列表中的第2至4个元素,并输出删除元素后的列表

1 li = ['alex', 'eric', 'rain', 'sic']
2 del li[1:4]
3 print(li)

执行结果:

1 ['alex']

 

i.请将列表所有的元素反转,并输出反转后的列表

1 li = ['alex', 'eric', 'rain']
2 li.reverse()
3 print(li)

执行结果:

1 ['rain', 'eric', 'alex']

 

j.请使用for、len、range输出列表的索引

1 li = ['alex', 'eric', 'rain']
2 for i in range(len(li)):
3     print(i)

执行结果:

1 0
2 1
3 2

 

k.请使用enumrate输出列表元素和序号(序号从100开始)

1 li = ['alex', 'eric', 'rain']
2 for k,v in enumerate(li,100):
3     print(k,v)

执行结果:

1 100 alex
2 101 eric
3 102 rain

 

l.请使用for循环输出列表的所有元素

1 li = ['alex', 'eric', 'rain']
2 for ltem in li:
3     print(ltem)

执行结果:

1 alex
2 eric
3 rain

 

4、写代码,有如下列表,请按照功能要求实现每一个功能

li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]

a.请根据索引输出“Kelly”

1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
2 print(li[2][1][1])

执行结果:

1 kelly

 

b.请使用索引找到'all'元素并将其修改为“ALL”,如:li[0][1][9]...

1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
2 index = li[2].index("all")
3 li[2][index] = "ALL"
4 print(li)

执行结果:

1 ['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]

 

5、写代码,有如下元组,按照要求实现每一个功能

tu=('alex','eric','rain')

a.计算元组长度并输出

1 tu = ('alex', 'eric', 'rain')
2 n1 = len(tu)
3 print(n1)

执行结果:

1 3

 

b.获取元组的第2个元素,并输出

1 tu = ('alex', 'eric', 'rain')
2 v = tu[1]
3 print(v)

执行结果:

1 eric

 

c.获取元组的第1-­‐2个元素,并输出

方法一:

1 tu = ('alex', 'eric', 'rain')
2 v = tu[:2]
3 print(v)

执行结果:

1 ('alex', 'eric')

 

方法二:

1 tu = ('alex', 'eric', 'rain')
2 n1 = tu[1]
3 n2 = tu[2]
4 print(n1 + " " + n2)

执行结果:

1 eric rain

 

d.请使用for输出元组的元素

1 tu = ('alex', 'eric', 'rain')
2 for i in tu:
3     print(i)

执行结果:

1 alex
2 eric
3 rain

 

e、请删除列表中的元素"eric",并输出修改后的列表

1 li = ['alex', 'eric', 'rain']
2 li.remove("eric")
3 print(li)

执行结果:

1 ['alex', 'rain']

 

f.请使用for、len、range输出元组的索引

1 tu = ('alex', 'eric', 'rain')
2 for i in range(len(tu)):
3     print(i)

执行结果:

1 alex
2 eric
3 rain

 

g.请使用enumrate输出元祖元素和序号(序号从10开始)

1 tu = ('alex', 'eric', 'rain')
2 for k,v in enumerate(tu,10):
3     print(k,v)

执行结果:

1 10 alex
2 11 eric
3 12 rain

 

6、有如下变量,请实现要求的功能
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])

a.讲述元祖的特性
答:元组具有列表的全部特性,不同的是,元组的元素不能修改

 

b.请问tu变量中的第一个元素“alex”是否可被修改?
答:不能


c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”

答:列表 ,可以 

1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
2 tu[1][2]["k2"].append("Seven")
3 print(tu)

执行结果:

1 ('alex', [11, 22, {'k3': (11, 22, 33), 'k1': 'v1', 'k2': ['age', 'name', 'Seven']}, 44])

 

d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”

答: 元组,不能

1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
2 tu[1][2]["k3"].append("Seven")
3 print(tu)

执行结果:

1 Traceback (most recent call last):
2   File "D:/python/job4.py", line 154, in <module>
3     tu[1][2]["k3"].append("Seven")
4 AttributeError: 'tuple' object has no attribute 'append'   #元组不能被修改

 

7、字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

a.请循环输出所有的key

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for ltem in dic:
3     print(ltem)

执行结果:

1 k1
2 k2
3 k3

 

b.请循环输出所有的value

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for item in dic.values():
3     print(item)

执行结果:

1 v2
2 v1
3 [11, 22, 33]

 

c.请循环输出所有的key和value

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for k,v in dic.items():
3     print(k,v)

执行结果:

1 k3 [11, 22, 33]
2 k2 v2
3 k1 v1

 

d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k4"] = "v4"
3 print(dic)

执行结果:

1 {'k4': 'v4', 'k3': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'}

 

e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k1"] = "alex"
3 print(dic)

执行结果:

1 {'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'alex'}

 

f.请在k3对应的值中追加一个元素44,输出修改后的字典

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k3"].append(44)
3 print(dic)

执行结果:

1 {'k2': 'v2', 'k1': 'v1', 'k3': [11, 22, 33, 44]}

 

g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k3"].insert(0,18)
3 print(dic)

执行结果:

1 {'k2': 'v2', 'k3': [18, 11, 22, 33], 'k1': 'v1'}

 


8、转换

a.将字符串s="alex"转换成列表

1 s = "alex"
2 n1 = list(s)
3 print(n1)

执行结果:

1 ['a', 'l', 'e', 'x']

 

b.将字符串s="alex"转换成元祖

1 s = "alex"
2 n1 = tuple(s)
3 print(n1)

执行结果:

1 ['a', 'l', 'e', 'x']

 

b.将列表li=["alex","seven"]转换成元组

1 li = ["alex","seven"]
2 n1 = tuple(li)
3 print(n1)

执行结果:

1 ('alex', 'seven')

 

c.将元祖tu=('Alex',"seven")转换成列表

1 tu = ('Alex',"seven")
2 n1 = list(tu)
3 print(n1)

执行结果:

1 ('alex', 'seven')

 

d.将列表li=["alex","seven"]转换成字典且字典的key按照10开始向后递增

1 li = ["alex","seven"]
2 n1 = {}
3 for k,v in enumerate(li,10):
4     n1[k] = v
5     print(n1)

执行结果:

1 {10: 'alex'}
2 {10: 'alex', 11: 'seven'}

 

9、元素分类

有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
即:{'k1':大于66的所有值,'k2':小于66的所有值}

法一:

复制代码
1 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
2 li.sort()    #排序
3 z = li.index(66)
4 l = len(li)
5 dic = {"k1": li[z + 1:l], "k2": li[0:z]}
6 print(dic)
复制代码

执行结果:

1 {'k1': [77, 88, 90, 99], 'k2': [11, 22, 33, 44, 55]}

 

法二:

复制代码
 1 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
 2 li.sort()
 3 lo = []
 4 lp = []
 5 for i in li:
 6     if i < 66:
 7         lo.append(i)
 8     elif i > 66:
 9         lp.append(i)
10 dic = {"k1": lo, "k2": lp}
11 print(dic)
复制代码

执行结果:

1 {'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 90, 99]}

 

10、输出商品列表,用户输入序号,显示用户选中的商品
商品li=["手机","电脑",'鼠标垫','游艇']

a.允许用户添加商品

b.用户输入序号显示内容

复制代码
 1 print("商品列表信息,用户输入序号,显示用户选中的商品")
 2 li = ["手机", "电脑", '鼠标垫', '游艇']
 3 for i, v in enumerate(li, 1):
 4     print(i, v)
 5 x = input("是否添加商品?")
 6 if x == "y" or x == "Y" or x == "yes":
 7     t = input("请添加商品:")
 8     li.append(t)
 9     for i, v in enumerate(li, 1):
10         print(i, v)
11 s = input("是否查找商品?")
12 if s == "y" or s == "Y" or s == "yes":
13     y = int(input("请输入查找的序号"))
14     print(li[y -1])    # -1 是取下标,默认是从0开始的,-1就是从1开始
复制代码

执行结果:

复制代码
 1 商品列表信息,用户输入序号,显示用户选中的商品
 2 1 手机
 3 2 电脑
 4 3 鼠标垫
 5 4 游艇
 6 是否添加商品?y
 7 请添加商品:锅
 8 1 手机
 9 2 电脑
10 3 鼠标垫
11 4 游艇
12 513 是否查找商品?y
14 请输入查找的序号1
15 手机
复制代码

 

11、用户交互显示类似省市县N级联动的选择

a.允许用户增加内容

b.允许用户选择查看某一个级别内容

复制代码
 1 #!/usr/bin/env python
 2 # -*- coding=utf-8 -*-
 3 # Created on:  2016年11月29日
 4 # @author: 郑建文
 5 # Email: 574601624@qq.com
 6 # Version: 1.0
 7 
 8 
 9 city = {"北京":{"朝阳":["大望路","国贸"],
10                "昌平":["沙河","昌平"]},
11         "河北":{"张家口":["沙城","宣化"],
12                 "石家庄":["某某路","某某街"]}
13         }
14 go = True
15 while go:
16     cc = []
17     dq = []
18     print("\33[31;1m一级列表\33[1m".center(40,"="))
19     for i,v in enumerate(city,1):
20         print(i,v)
21         cc.append(v)
22     print("\33[35;1m插入数据 i 退出按Q\33[1m")
23     u_c1 = str(input(">>>"))
24     if u_c1.isdigit():#进二级之前判断
25         u_c1 = int(u_c1)
26         if u_c1 >0 and u_c1 <=len(cc):
27             while go:
28                 print("\33[32;1m二级列表\33[1m".center(40, "="))
29                 for i1,v1 in enumerate(city[cc[u_c1-1]],1):
30                     print(i1,v1)
31                     dq.append(v1)
32                 print("\33[35;1m退出按Q 返回 B\33[1m")
33                 u_c2 = input(">>>")
34                 if u_c2.isdigit():#进三级之前判断
35                     u_c2 = int(u_c2)
36                     if u_c2 >0 and u_c2<=len(dq):
37                         while go:
38                             print("\33[32;1m三级列表\33[1m".center(40, "="))
39                             for s in city[cc[u_c1-1]][dq[u_c2-1]]:
40                                 print(s)
41                             print("\33[35;1m退出按Q 返回 B\33[1m")
42                             u_c3 = input(">>>")
43                             if u_c3 == "q" or u_c3 == "Q":
44                                 go = False
45                                 break
46                             if u_c3 == "b" or u_c3 =="B":
47                                 del dq[:]
48                                 break
49                             else:
50                                 print("\33[31;1m输入不正确\33[1m")
51                     else:
52                         print("\33[31;1m输入超出范围!\33[1m")
53                 elif u_c2 == "q" or u_c2 == "Q":
54                     go = False
55                     break
56                 elif u_c2 == "b" or u_c2 == "B":
57                     del cc[:]
58                     del dq[:]
59                     break
60                 else:
61                     print("\33[31;1m输入格式不对!\33[1m")
62     elif u_c1.isalpha():
63         if u_c1 == "q" or u_c1 == "Q":
64             break
65         elif u_c1 == "i" or u_c1 == "I":
66             print("\33[32;1m添加信息\33[1m".center(40,"="))
67             ct_name = input("省:")
68             if ct_name == "Q" or ct_name == "q":
69                 break
70             else:
71                 if city.get(ct_name,0) == 0:
72                     city[ct_name] = {}
73             dq_name = input("市:")
74             if dq_name == "Q" or dq_name == "q":
75                 break
76             else:
77                 if city[ct_name].get(dq_name,0) == 0:
78                     city[ct_name][dq_name]=[]
79             while True:
80                 print("\33[31;1m循环添加,退出请按Q!\33[1m")
81                 s = input("县:")
82                 if s == "q" or s == "Q":
83                     break
84                 else:
85                     city[ct_name][dq_name].append(s)
86         else:
87             print("\33[31;1m输入超出范围!\33[1m")
88     else:
89         print("\33[31;1m输入格式不对!\33[1m")
复制代码

 

12、列举布尔值是False的所有值

1 None ""  () []  {} 0 

 

13︎、有两个列表
l1=[11,22,33]
l2=[22,33,44]

a.获取内容相同的元素列表

1 n1 = [11,22,33]
2 n2 = [22,33,44]
3 for i in n1:
4     if i in n2:
5         print(i)

执行结果:

1 22
2 33

 

b.获取l1中有,l2中没有的元素列表

1 l1 = [11, 22, 33]
2 l2 = [22, 33, 44]
3 for i in l1:
4     if i not in l2:
5         print(i)

执行结果:

1 44
2 11

 

c.获取l2中有,l1中没有的元素列表

1 l1 = [11, 22, 33]
2 l2 = [22, 33, 44]
3 for i in l2:
4     if i not in l1:
5         print(i)

执行结果:

1 44

 

d.获取l1和l2中内容都不同的元素

复制代码
1 l1 = [11, 22, 33]
2 l2 = [22, 33, 44]
3 for i in l2:
4     if i not in l1:
5         print(i)
6 for v in l1:
7     if v not in l2:
8         print(v)
复制代码

执行结果:

1 44
2 11

 

14、利用For循环和range输出
a.For循环从大到小输出1-­100

1 for i in range(100,0,-1):
2    print(i)

b.For循环从小到到输出100-­1

1 for i in range(1,101):
2    print(i)

c.While循环从大到小输出1-­100

1 while True:
2     a = 100
3     for i in range(100):
4         print(a-i)
5     break

 

d.While循环从小到到输出100-­1

1 while True:
2     for i in range(100):
3         print(i+1)
4     break

 

15、购物车
功能要求:

要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

goods=[
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]

 代码如下:

方法一:

复制代码
 1 shop_cart = []
 2 goods = [
 3 {"name":"电脑","price":1999},
 4 {"name":"鼠标","price":10},
 5 {"name":"游艇","price":20},
 6 {"name":"美女","price":988},
 7 ]
 8 while True:
 9     salary = input("请输入用户余额[quit]:")
10     if salary.isdigit():
11         salary = int(salary)
12         break
13     elif salary == "quit":
14         exit("不想购买")
15     else:
16         print("please the enter number")
17 while True:
18     print("shop list".center(50, '*'))
19     for index,i in enumerate(goods):
20         print(index,i)
21     choose_number = input("请输入购买商品编号[quit]:")
22     if choose_number.isdigit():
23         choose_number = int(choose_number)
24         product_list = []
25         if 0 <= choose_number <= len(goods):
26             product_list.append(goods[choose_number])
27             if salary >= product_list[0]["price"]:
28               shop_cart.append(goods[choose_number])
29               salary -= product_list[0]['price']
30               print("当前购买的商品",product_list,"当前用户余额\033[1;31m{salary}\033[0m".format(salary=salary))
31             else:
32                 print("余额不足")
33         else:
34             print("无效的商品编号")
35     elif choose_number.lower() == 'quit':
36 
37         print("购买的商品".center(50,"*"))
38         for y in shop_cart:
39             print(y)
40         exit()
41     else:
42         print("无效的输入")
复制代码

执行结果:

复制代码
 1 请输入用户余额[quit]:2000
 2 ********************shop list*********************
 3 0 {'name': '电脑', 'price': 1999}
 4 1 {'name': '鼠标', 'price': 10}
 5 2 {'name': '游艇', 'price': 20}
 6 3 {'name': '美女', 'price': 988}
 7 请输入购买商品编号[quit]:1
 8 当前购买的商品 [{'name': '鼠标', 'price': 10}] 当前用户余额1990
 9 ********************shop list*********************
10 0 {'name': '电脑', 'price': 1999}
11 1 {'name': '鼠标', 'price': 10}
12 2 {'name': '游艇', 'price': 20}
13 3 {'name': '美女', 'price': 988}
14 请输入购买商品编号[quit]:2
15 当前购买的商品 [{'name': '游艇', 'price': 20}] 当前用户余额1970
16 ********************shop list*********************
17 0 {'name': '电脑', 'price': 1999}
18 1 {'name': '鼠标', 'price': 10}
19 2 {'name': '游艇', 'price': 20}
20 3 {'name': '美女', 'price': 988}
21 请输入购买商品编号[quit]:3
22 当前购买的商品 [{'name': '美女', 'price': 988}] 当前用户余额982
23 ********************shop list*********************
24 0 {'name': '电脑', 'price': 1999}
25 1 {'name': '鼠标', 'price': 10}
26 2 {'name': '游艇', 'price': 20}
27 3 {'name': '美女', 'price': 988}
28 请输入购买商品编号[quit]:0
29 余额不足
30 ********************shop list*********************
31 0 {'name': '电脑', 'price': 1999}
32 1 {'name': '鼠标', 'price': 10}
33 2 {'name': '游艇', 'price': 20}
34 3 {'name': '美女', 'price': 988}
35 请输入购买商品编号[quit]:quit
36 **********************购买的商品***********************
37 {'name': '鼠标', 'price': 10}
38 {'name': '游艇', 'price': 20}
39 {'name': '美女', 'price': 988}
40 
41 Process finished with exit code 0
复制代码

 

方法二:(郑建文版本)

复制代码
  1 #!/usr/bin/env python
  2 # -*- coding=utf-8 -*-
  3 # Created on:  2016年11月29日
  4 # @author: 郑建文
  5 # Email: 574601624@qq.com
  6 # Version: 1.0
  7 '''
  8 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,
  9 加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
 10 
 11 本程序功能:可以添加购买商品,一起结算,可以查看已结算和没结算的,商品重复的是有数量的
 12 '''
 13 goods = [
 14     {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20},
 15     {"name": "美女", "price": 998},
 16 ]
 17 while True:
 18     print("\33[31;1m+++++++输入q退出++++++++\33[1m")
 19     money = str(input("\33[32;1m请输入初始余额:\33[1m"))
 20     if money.isdigit():
 21         money = int(money)
 22         go = True
 23         break
 24     else:
 25         if money.lower() == "q":
 26             go = False  # 用于控制下面程序运行
 27             print("再见!")
 28             break
 29         else:
 30             print("输入格式错误")
 31 
 32 buy_car = []  # 购物车
 33 while go:
 34     #print(buy_car)
 35     print("\33[35;1m购物商城\33[1m".center(50, "="))
 36     print("序号|名称|单价")
 37     for i, v in enumerate(goods, 1):
 38         print(i, v["name"], v["price"])
 39     print("q.退出 o.结算 k.购物车")
 40     buy = str(input(">>>"))
 41     if buy.isdigit():#购物
 42         buy = int(buy)
 43         if buy > 0 and buy < len(goods):#是否存在
 44             for s in buy_car:
 45                 if s["name"] == goods[buy-1]["name"] and s['js'] == 0 :#如果存在
 46                     tem = goods[buy-1]
 47                     tem["js"] = 0 #结算标示
 48                     tem["sl"] += 1 #数量
 49                     print("\33[32;1m添加商品 %s 成功!\33[1m" % (goods[buy - 1]["name"]))
 50                     buy = 0
 51                     break
 52             if buy:#不存在
 53                 tem = goods[buy - 1]
 54                 tem["js"] = 0  # 结算标示
 55                 tem["sl"] = 1  # 数量
 56                 buy_car.append(tem)
 57                 print("\33[32;1m添加商品 %s 成功!\33[1m" % (goods[buy - 1]["name"]))
 58 
 59         else:
 60                 print("\33[31;1m没有此商品\33[1m")
 61     else:
 62         if buy.lower() == "q":  # 退出
 63             break
 64         elif buy.lower() == "o":  # 结算
 65                 all_price = 0
 66                 for i in buy_car:#计算金额
 67                     if i["js"] == 0:
 68                         ret = i['price'] * i['sl']
 69                         all_price += ret
 70                 if all_price <= money and all_price >0:#结算
 71                     for i in buy_car:
 72                         i['js'] = 1
 73                     money -= all_price
 74                     print("结算成功,共消费:%d元,余额为:%d元"%(all_price,money))
 75                 elif all_price == 0:#无购物
 76                     print("\33[31;1m请先购物!\33[1m")
 77                 else:#金额不足
 78                     print("\33[31余额不足,请删除一些商品\33[1m")
 79         elif buy.lower() == "k":
 80             u_js = input("1.结算完毕  2.未结算 \n>>>")
 81             if u_js == "1":#已经结算的
 82                 print("\33[32;1m已结算购物车\33[1m".center(50,"="))
 83                 print("序号|名称|数量|单价")
 84                 for i,v in enumerate(buy_car,1):
 85                     if v["js"] == 1:
 86                         print(i,v['name'],v['sl'],v['price'])
 87             elif u_js == "2":#没有结算的,可以删除
 88                 if len(buy_car) > 0:
 89                     while go:
 90                         for i, v in enumerate(buy_car,1):
 91                             if v["js"] == 0:
 92                                 print(i, v["name"], v["price"],v['sl'])
 93                         u_d = input("\33[31;1m选序号删除,退出q 返回 b\33[1m \n>>>")
 94                         if u_d.isdigit():
 95                             u_d = int(u_d)
 96                             if u_d > 0 and u_d <= len(buy_car):
 97                                 u_sl = input("请输入数量:")
 98                                 if u_sl.isdigit():
 99                                     u_sl = int(u_sl)
100                                     if u_sl < buy_car[u_d]['sl']:
101                                         buy_car[u_d]['sl'] -= u_sl
102                                         print("\33[32;1m删除商品成功!\33[1m")
103                                     elif u_sl == buy_car[u_d]['sl']:
104                                         del buy_car[u_d-1]
105                                         print("\33[32;1m删除商品成功!\33[1m")
106                                     else:
107                                         print("超出范围或者输入不正确")
108 
109                         else:
110                             if u_d.lower() == "q":
111                                 go = False
112                                 print("再见")
113                             if u_d.lower() == "b":
114                                 break
115                 else:
116                     print("\33[31;1m无商品或还没有结算,请先购买!\33[1m")
117         else:
118             print("\33[31;1m输入格式不对!\33[1m")
复制代码

 

16、分页显示内容

a.通过for循环创建301条数据,数据类型不限,如:
alex-­‐1alex1@live.compwd1
alex-­‐2alex2@live.compwd2
alex-­‐3alex3@live.compwd3
...

法一:

1 for i in range(301):
2     a = "alex- - %salex%s@live.com pwd%s"%(i+1,i+1,i+1)
3     print(a)

 

法二:

复制代码
1 u = []
2 for i in range(301):
3     a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
4     x = [a]
5     u = u + x
6     print(u[0:10])
复制代码

 

b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据

注意:
-­‐每页显示10条数据
-­‐用户输入页码是非十进制数字,则提示输入内容格式错误

复制代码
 1 while True:
 2     u = []
 3     for i in range(301):
 4         a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
 5         x = [a]
 6         u = u + x
 7     # print(u[0:10])
 8     s = input("请输入您想查看的页码:")
 9     v3 = s.isnumeric()    #检测字符串是否只由数字组成,如果字符串中只包含数字字符,则返回 True,否则返回 False
10     if v3 == False :
11         print("输入内容格式错误")
12 
13     elif int(s) < 1 or int(s) > 31:
14         print("输入页码错误")
15 
16     else:
17         s = int(s)
18         a = (s-1)*10
19         b = s*10
20         j = (u[a:b])
21         for g in j:
22             print(g)
23     A =input("是否继续查看(y or Y)")
24     if A =="y" or A =="Y":
25         continue
26     else:
27         break
复制代码

执行结果:

复制代码
 1 请输入您想查看的页码:1
 2 alex1 alex1@live.com pwd1
 3 alex2 alex2@live.com pwd2
 4 alex3 alex3@live.com pwd3
 5 alex4 alex4@live.com pwd4
 6 alex5 alex5@live.com pwd5
 7 alex6 alex6@live.com pwd6
 8 alex7 alex7@live.com pwd7
 9 alex8 alex8@live.com pwd8
10 alex9 alex9@live.com pwd9
11 alex10 alex10@live.com pwd10
12 是否继续查看(y or Y)y
13 请输入您想查看的页码:2
14 alex11 alex11@live.com pwd11
15 alex12 alex12@live.com pwd12
16 alex13 alex13@live.com pwd13
17 alex14 alex14@live.com pwd14
18 alex15 alex15@live.com pwd15
19 alex16 alex16@live.com pwd16
20 alex17 alex17@live.com pwd17
21 alex18 alex18@live.com pwd18
22 alex19 alex19@live.com pwd19
23 alex20 alex20@live.com pwd20
24 是否继续查看(y or Y)
复制代码

 

17、有1、2、3、4、5、6、7、8、8个数字,能组成多少个互不相同且无重复数字的两位数?

法一:

复制代码
1 count = 0
2 for i in range(1, 9):
3     for x in range(1, 9):
4         if i != x:
5             print(i, x,)
6             count += 1
7 print(count)
复制代码

执行结果:

 1 1 2
 2 1 3
 3 1 4
 4 1 5
 5 1 6
 6 1 7
 7 1 8
 8 2 1
 9 2 3
10 2 4
11 2 5
12 2 6
13 2 7
14 2 8
15 3 1
16 3 2
17 3 4
18 3 5
19 3 6
20 3 7
21 3 8
22 4 1
23 4 2
24 4 3
25 4 5
26 4 6
27 4 7
28 4 8
29 5 1
30 5 2
31 5 3
32 5 4
33 5 6
34 5 7
35 5 8
36 6 1
37 6 2
38 6 3
39 6 4
40 6 5
41 6 7
42 6 8
43 7 1
44 7 2
45 7 3
46 7 4
47 7 5
48 7 6
49 7 8
50 8 1
51 8 2
52 8 3
53 8 4
54 8 5
55 8 6
56 8 7
57 56
View Code

 

方法二:

复制代码
1 li = []
2 for i in range(1, 9):
3     for x in range(1, 9):
4         a = ("{0}{1}".format(i, x,))    #把两个数组合在一起
5         if a not in li:                #判断a是不是在li[]里面
6             if i != x:                  #相等就往上,再循环
7                 li.append(a)
8                 print(li)
9 print(len(li))
复制代码

 

方法三:

复制代码
 1 count = 0
 2 li = []
 3 for i in range(1, 9):
 4     for x in range(1, 9):
 5         a = ("{0}{1}".format(i, x))
 6         if a not in li:
 7             if i != x:
 8                 li = li + [a]
 9                 count = count + 1
10                 print(count)
11                 print(li)
复制代码

 

17、有1、2、3、4、5、6、7、8、8个数字,能组成多少个互不相同且无重复数字的3位数?

复制代码
1 count = 0
2 for i in range(1, 9):
3     for x in range(1, 9):
4         for y in range(1, 9):
5             if i != x and x != y and i != y:
6                 print(i, x, y)
7                 count += 1
8 print(count)
复制代码

执行结果:

  1 1 2 3
  2 1 2 4
  3 1 2 5
  4 1 2 6
  5 1 2 7
  6 1 2 8
  7 1 3 2
  8 1 3 4
  9 1 3 5
 10 1 3 6
 11 1 3 7
 12 1 3 8
 13 1 4 2
 14 1 4 3
 15 1 4 5
 16 1 4 6
 17 1 4 7
 18 1 4 8
 19 1 5 2
 20 1 5 3
 21 1 5 4
 22 1 5 6
 23 1 5 7
 24 1 5 8
 25 1 6 2
 26 1 6 3
 27 1 6 4
 28 1 6 5
 29 1 6 7
 30 1 6 8
 31 1 7 2
 32 1 7 3
 33 1 7 4
 34 1 7 5
 35 1 7 6
 36 1 7 8
 37 1 8 2
 38 1 8 3
 39 1 8 4
 40 1 8 5
 41 1 8 6
 42 1 8 7
 43 2 1 3
 44 2 1 4
 45 2 1 5
 46 2 1 6
 47 2 1 7
 48 2 1 8
 49 2 3 1
 50 2 3 4
 51 2 3 5
 52 2 3 6
 53 2 3 7
 54 2 3 8
 55 2 4 1
 56 2 4 3
 57 2 4 5
 58 2 4 6
 59 2 4 7
 60 2 4 8
 61 2 5 1
 62 2 5 3
 63 2 5 4
 64 2 5 6
 65 2 5 7
 66 2 5 8
 67 2 6 1
 68 2 6 3
 69 2 6 4
 70 2 6 5
 71 2 6 7
 72 2 6 8
 73 2 7 1
 74 2 7 3
 75 2 7 4
 76 2 7 5
 77 2 7 6
 78 2 7 8
 79 2 8 1
 80 2 8 3
 81 2 8 4
 82 2 8 5
 83 2 8 6
 84 2 8 7
 85 3 1 2
 86 3 1 4
 87 3 1 5
 88 3 1 6
 89 3 1 7
 90 3 1 8
 91 3 2 1
 92 3 2 4
 93 3 2 5
 94 3 2 6
 95 3 2 7
 96 3 2 8
 97 3 4 1
 98 3 4 2
 99 3 4 5
100 3 4 6
101 3 4 7
102 3 4 8
103 3 5 1
104 3 5 2
105 3 5 4
106 3 5 6
107 3 5 7
108 3 5 8
109 3 6 1
110 3 6 2
111 3 6 4
112 3 6 5
113 3 6 7
114 3 6 8
115 3 7 1
116 3 7 2
117 3 7 4
118 3 7 5
119 3 7 6
120 3 7 8
121 3 8 1
122 3 8 2
123 3 8 4
124 3 8 5
125 3 8 6
126 3 8 7
127 4 1 2
128 4 1 3
129 4 1 5
130 4 1 6
131 4 1 7
132 4 1 8
133 4 2 1
134 4 2 3
135 4 2 5
136 4 2 6
137 4 2 7
138 4 2 8
139 4 3 1
140 4 3 2
141 4 3 5
142 4 3 6
143 4 3 7
144 4 3 8
145 4 5 1
146 4 5 2
147 4 5 3
148 4 5 6
149 4 5 7
150 4 5 8
151 4 6 1
152 4 6 2
153 4 6 3
154 4 6 5
155 4 6 7
156 4 6 8
157 4 7 1
158 4 7 2
159 4 7 3
160 4 7 5
161 4 7 6
162 4 7 8
163 4 8 1
164 4 8 2
165 4 8 3
166 4 8 5
167 4 8 6
168 4 8 7
169 5 1 2
170 5 1 3
171 5 1 4
172 5 1 6
173 5 1 7
174 5 1 8
175 5 2 1
176 5 2 3
177 5 2 4
178 5 2 6
179 5 2 7
180 5 2 8
181 5 3 1
182 5 3 2
183 5 3 4
184 5 3 6
185 5 3 7
186 5 3 8
187 5 4 1
188 5 4 2
189 5 4 3
190 5 4 6
191 5 4 7
192 5 4 8
193 5 6 1
194 5 6 2
195 5 6 3
196 5 6 4
197 5 6 7
198 5 6 8
199 5 7 1
200 5 7 2
201 5 7 3
202 5 7 4
203 5 7 6
204 5 7 8
205 5 8 1
206 5 8 2
207 5 8 3
208 5 8 4
209 5 8 6
210 5 8 7
211 6 1 2
212 6 1 3
213 6 1 4
214 6 1 5
215 6 1 7
216 6 1 8
217 6 2 1
218 6 2 3
219 6 2 4
220 6 2 5
221 6 2 7
222 6 2 8
223 6 3 1
224 6 3 2
225 6 3 4
226 6 3 5
227 6 3 7
228 6 3 8
229 6 4 1
230 6 4 2
231 6 4 3
232 6 4 5
233 6 4 7
234 6 4 8
235 6 5 1
236 6 5 2
237 6 5 3
238 6 5 4
239 6 5 7
240 6 5 8
241 6 7 1
242 6 7 2
243 6 7 3
244 6 7 4
245 6 7 5
246 6 7 8
247 6 8 1
248 6 8 2
249 6 8 3
250 6 8 4
251 6 8 5
252 6 8 7
253 7 1 2
254 7 1 3
255 7 1 4
256 7 1 5
257 7 1 6
258 7 1 8
259 7 2 1
260 7 2 3
261 7 2 4
262 7 2 5
263 7 2 6
264 7 2 8
265 7 3 1
266 7 3 2
267 7 3 4
268 7 3 5
269 7 3 6
270 7 3 8
271 7 4 1
272 7 4 2
273 7 4 3
274 7 4 5
275 7 4 6
276 7 4 8
277 7 5 1
278 7 5 2
279 7 5 3
280 7 5 4
281 7 5 6
282 7 5 8
283 7 6 1
284 7 6 2
285 7 6 3
286 7 6 4
287 7 6 5
288 7 6 8
289 7 8 1
290 7 8 2
291 7 8 3
292 7 8 4
293 7 8 5
294 7 8 6
295 8 1 2
296 8 1 3
297 8 1 4
298 8 1 5
299 8 1 6
300 8 1 7
301 8 2 1
302 8 2 3
303 8 2 4
304 8 2 5
305 8 2 6
306 8 2 7
307 8 3 1
308 8 3 2
309 8 3 4
310 8 3 5
311 8 3 6
312 8 3 7
313 8 4 1
314 8 4 2
315 8 4 3
316 8 4 5
317 8 4 6
318 8 4 7
319 8 5 1
320 8 5 2
321 8 5 3
322 8 5 4
323 8 5 6
324 8 5 7
325 8 6 1
326 8 6 2
327 8 6 3
328 8 6 4
329 8 6 5
330 8 6 7
331 8 7 1
332 8 7 2
333 8 7 3
334 8 7 4
335 8 7 5
336 8 7 6
337 336
View Code

 

18、利用for循环和range输出9*9乘法表

方法一:

1 for x in range(1,10):
2      for y in range(1,x+1):
3          print("{0} * {1} = {2}".format(x,y,x*y),end = " ")     #end = " " 作用就是:不换行
4      print('\n',end = " ")

 

方法二:

1 for i in range(1,10):
2     for j in range(1,i+1):
3         print("%d*%d=%2d" % (i,j,i*j),end=" ")  #%d是数值整型对应的格式通配符
4     print(" ")

执行结果:

复制代码
1 1*1= 1  
2 2*1= 2 2*2= 4  
3 3*1= 3 3*2= 6 3*3= 9  
4 4*1= 4 4*2= 8 4*3=12 4*4=16  
5 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25  
6 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36  
7 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49  
8 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64  
9 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

 

复制代码

 

19、有一下列表,
nums=[2,7,11,15,1,8,7]
请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0,1),(4,5)]

复制代码
 1 nums = [2, 7, 11, 15, 1, 8, 7]
 2 li = []
 3 n1 = []
 4 for i in nums:
 5     for x in nums:
 6         y = i + x
 7         if y == 9:
 8             v = [i, x]
 9             x =(i,x)
10             if v not in li:
11                 v.reverse()
12                 if v not in li:
13                     n1.append(x)
14                     li.append(v)
15 print(n1)
复制代码

结果:

1 [(2, 7), (1, 8)]

 

20、用Python开发程序自动计算方案:

公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?

方法一:

1 for x in range(1, 100):
2     for y in range(1, 100):
3         for z in range(1, 100):
4             if x + y + z == 100 and 5 * x + 3 * y + z / 3 == 100:  # 小鸡  1/3
5                 print(x, y, z)

执行结果:

1 4 18 78
2 8 11 81
3 12 4 84

 

方法二:

复制代码
 1 for g in range(1, 100):
 2     g1 = g * 5
 3     # print(g1)
 4     for m in range(1, 100):
 5         m1 = m * 3
 6         # print(m1)
 7         for x in range(1, 100):
 8             x1 = x * 1/3
 9             # print(x1)
10             if g1 + m1 + x1 == 100:
11                 if g + m + x ==100:
12                       print(" 100 文钱买 100 只鸡,其中公鸡{0}只,母鸡{1}只,小鸡{2}只".format(g,m,x))
复制代码

执行结果:

1  100 文钱买 100 只鸡,其中公鸡4只,母鸡18只,小鸡78只
2  100 文钱买 100 只鸡,其中公鸡8只,母鸡11只,小鸡81只
3  100 文钱买 100 只鸡,其中公鸡12只,母鸡4只,小鸡84只
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值