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 5 锅 13 是否查找商品?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 退出按Q33[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 返回 B33[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 返回 B33[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,"当前用户余额 33[1;31m{salary} 33[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.未结算 >>>") 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 返回 b33[1m >>>") 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
方法二:
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
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(' ',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只