一、基础语法练习题
#1li = ['jiu','lin','liang']print ("{0}{1}{2}{3}{4}".format(li[0],'_',li[1],'_',li[2]))#2li = ["alec", " aric", "Alex", "Tony", "rain"]for l in li : if l.strip().startswith("a") == True or l.strip().startswith("A") and l.strip().endswith("c"): print(l.strip())tu = ("alec", " aric", "Alex", "Tony", "rain")for l in tu : if l.strip().startswith("a") == True or l.strip().startswith("A") and l.strip().endswith("c"): print(l.strip())dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}for l in dic.values() : if l.strip().startswith("a") == True or l.strip().startswith("A") and l.strip().endswith("c"): print(l.strip())
#3
#3li = ['alex','eric','rain']print(len(li))li.append("seven")print(li)li.insert(0,"Tony")print(li)li[1] = "Kelly"print(li)li.pop(li.index("eric"))print(li)li_2 = li[1]li.pop(1)print(li_2,li)print(li)li.pop(3)print(li[3:])li.pop(2,4)print(li)print(li[::-1])for k in range(len(li)): print(k)for k,y in enumerate(li): print(k+100,y)
#4li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]print(li[2][1][1])li[2][2] = 'ALL'print(li)
#5
#5tu = ('alex', 'eric', 'rain')print(len(tu))print(tu[2])print(tu[1],tu[2])for i in tu: print(i)for i in range(len(tu)): print(i)for k,y in enumerate(tu): print(k+10,y)
#6tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])#1,只读列表,2,不能修改#不可以#k2是 字典,对应的值是列表可以被修改tu[1][2]["k2"].append("Seven") print(tu)#k3对应的值是元祖不能修改
#7dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}for k in dic.keys(): print(k)for v in dic.values(): print(v)for k,y in dic.items(): print(k,y)dic["k4"] = "v4"print(dic)dic['k1'] = 'alex'print(dic)dic['k3'].append(44)print(dic)dic["k3"].insert[0,18]print(dic)
#8s = 'alex'print(s.split())print(tuple(s))li = ['alex','seven']print(tuple(li))tu = ('alex','seven')print(list(tu))li = ['alex','seven']dic = {}for k,y in enumerate(li): dic.setdefault((10-k),y ) print(dic)
#9s = [11,22,33,44,55,66,77,88,99,90]len(s)k1 = []k2 = []dic = {'k1':None,'k2':None}for k in range(len(s)): print(s[k]) if s[k] > 66 : k1.append(s[k]) elif s[k] <66 : k2.append(s[k])dic['k1'] = k1dic['k2'] = k2print(dic)#10li = ["手机", "电脑", '鼠标垫', '游艇']shoplist = []for k,y in enumerate(li): print(k,y)user = int(input("输入序号---"))print(li[user])user_1 = (input("添加的商品----"))(li.append(user_1))print(li)#11city = {"北京":{"朝阳":["大望路","国贸"], "昌平":["沙河","昌平"]}, "河北":{"张家口":["沙城","宣化"], "石家庄":["某某路","某某街"]} }go = Truewhile go: cc = [] dq = [] print("\33[31;1m一级列表\33[1m".center(40,"=")) for i,v in enumerate(city,1): print(i,v) cc.append(v) print("\33[35;1m插入数据 i 退出按Q\33[1m") u_c1 = str(input(">>>")) if u_c1.isdigit():#进二级之前判断 u_c1 = int(u_c1) if u_c1 >0 and u_c1 <=len(cc): while go: print("\33[32;1m二级列表\33[1m".center(40, "=")) for i1,v1 in enumerate(city[cc[u_c1-1]],1): print(i1,v1) dq.append(v1) print("\33[35;1m退出按Q 返回 B\33[1m") u_c2 = input(">>>") if u_c2.isdigit():#进三级之前判断 u_c2 = int(u_c2) if u_c2 >0 and u_c2<=len(dq): while go: print("\33[32;1m三级列表\33[1m".center(40, "=")) for s in city[cc[u_c1-1]][dq[u_c2-1]]: print(s) print("\33[35;1m退出按Q 返回 B\33[1m") u_c3 = input(">>>") if u_c3 == "q" or u_c3 == "Q": go = False break if u_c3 == "b" or u_c3 =="B": del dq[:] break else: print("\33[31;1m输入不正确\33[1m") else: print("\33[31;1m输入超出范围!\33[1m") elif u_c2 == "q" or u_c2 == "Q": go = False break elif u_c2 == "b" or u_c2 == "B": del cc[:] del dq[:] break else: print("\33[31;1m输入格式不对!\33[1m") elif u_c1.isalpha(): if u_c1 == "q" or u_c1 == "Q": break elif u_c1 == "i" or u_c1 == "I": print("\33[32;1m添加信息\33[1m".center(40,"=")) ct_name = input("省:") if ct_name == "Q" or ct_name == "q": break else: if city.get(ct_name,0) == 0: city[ct_name] = {} dq_name = input("市:") if dq_name == "Q" or dq_name == "q": break else: if city[ct_name].get(dq_name,0) == 0: city[ct_name][dq_name]=[] while True: print("\33[31;1m循环添加,退出请按Q!\33[1m") s = input("县:") if s == "q" or s == "Q": break else: city[ct_name][dq_name].append(s) else: print("\33[31;1m输入超出范围!\33[1m") else: print("\33[31;1m输入格式不对!\33[1m")
#12None "" () [] {} 0 #13l1 = [11,22,33]l2 = [22,33,44]#都有的元素for i in l1: if i in l2: print(i)#l2没有的for i in l1: if i not in l2: print(i)#l1没有的for i in l2: if i not in l1: print(i)#互相都没有的元素for i in l1: if i not in l2 : print(i)for k in l2: if k not in l1: print(k)
#14
#14for i in range(100,0,-1): print(i)for i in range(1,101): print(i)count = 100while count >1 : count -= 1 print(count)count = 0while count <100 : count +=1 print(count)
#15for i in range(1,10): for j in range(1,i+1): print(str(i) + "*" + str(j) + "=" + str(i * j), end=' ') print()
二、购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编码购买商品
- 用户选择商品后检测余额是否够,够就直接扣款,不够就提醒
- 用户可以一直购买商品,也可以随时退出,退出时,打印已购买的商品和余额
shoplist = []commodity = [['iphonex',8888],['Book',99],['Macpro',7666],['小米6',3200]]long = len(commodity)wages = input("请输入你的工资--->")if wages.isdigit() ==True: wages = int(wages) print('你的工资是',wages,'元') while True: print('--------商品列表-------') for y, p in enumerate(commodity): print("{0} {1} \t{2}".format(y, p[0], p[1], '元')) need = input("请输入你需要购买的商品编号---->") if need == 'q' or need == 'Q': print('退出不买了') print("-----你的购物车-----") for y, p in enumerate(shoplist): print(y, p[0], p[1]) # wages = wages - commodity[need][1] print("你剩余", wages, "元") break elif need.isdigit() == True: need = int(need) if wages >= commodity[need][1]: need = int(need) elif wages < commodity[need][1]: print("骚年去赚钱吧,你还剩", wages, "元了,还想买", commodity[need][0]) continue if need >= 0 and need <= long: print('你购买了', commodity[need]) shoplist.append(commodity[need]) print("-----你的购物车-----") for y, p in enumerate(shoplist): print(y, p[0], p[1]) wages = wages - commodity[need][1] print("你剩余", wages, "元") else: print("你输入的什么玩意,请输入数字") continueelse: print("你输入的什么玩意,让你输入数字")
三、多级菜单
需求:
- 现有省市县三级结构,要求程序启动后,允许用户可依次选择进入各级子菜单,
- 可在任意一级菜单返回上一级
- 可以在任意一级菜单退出程序
menu = { '河北':{ '承德':{ '双桥区':'贾营村' } }, '北京':{ '通州区':{ '东潞苑小区','我家' } }}while True: print(menu.keys()) choice = input("请输入你要查看的省份---") if menu.get(choice) != None: sub = menu[choice] #print(sub.keys()) while True: print(sub.keys()) choice_sub = input("请输入你要查看的市,或者返回上一级请输入R") if choice_sub == 'r' or choice_sub == 'R': break elif choice_sub == 'q' or choice == 'Q': print("程序退出") exit() elif sub.get(choice_sub) != None: print(sub[choice_sub]) sub_sub = input("是否返回上一层,R=返回,e=退出") if sub_sub == 'r' or sub_sub == 'R': print('返回上一层') else: print('退出') exit() elif choice == 'q' or choice == 'Q': print("程序退出") exit()
#三级菜单高效写法
level = menuL = []while True: for k in level: print(k) user = input(">").strip() if not level:continue if user in level: L.append(level) level = level[user] elif user == 'b': if len(L) != 0: level = L.pop() else: print('到头了')