练习-字符串
1 # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) 2 name = " aleX" 3 # 1) 移除 name 变量对应的值两边的空格,并输出处理结果
1 name=' alex' 2 a=name.strip() 3 print(a)
4 # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
1 name='11alex' 2 if name.startswith(name): 3 print(name) 4 else: 5 print('no')
6 # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
1 name='11alex' 2 if name.endswith(name): 3 print(name) 4 else: 5 print('no')
8 # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
1 name='alex' 2 print(name.replace('a','p'))
9 # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
1 name='alex' 2 print(name.rsplit('l'))
10 # 6) 将 name 变量对应的值变大写,并输出结果
1 name='alex' 2 print(name.upper())
12 # 7) 将 name 变量对应的值变小写,并输出结果
1 name='aleX' 2 print(name.lower())
14 # 8) 请输出 name 变量对应的值的第 2 个字符?
1 name=' aleX' 2 print(name[2])
15 # 9) 请输出 name 变量对应的值的前 3 个字符?
1 name='aleX' 2 print(name[:3])
16 # 10) 请输出 name 变量对应的值的后 2 个字符?
1 name='aleX' 2 print(name[-2:])
18 # 11) 请输出 name 变量对应的值中 “e” 所在索引位置?
1 name='aleX' 2 print(name.index('e'))
20 # 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
1 name='aleX' 2 a=name[:-1] 3 print(a)
练习-列表
1 1. 有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
1 data=['alex',49,[1900,3,18]] 2 name =data[0] 3 age=data[1] 4 birthday=data[2][0] 5 birthday1=data[2][1] 6 birthday2=data[2][2] 7 obj={ 8 'name':name, 9 'age':age, 10 'birthday':birthday, 11 'birthday1':birthday1, 12 'birthday2':birthday2 13 } 14 print(obj)
3 2. 用列表模拟队列(先进先出)
1 l=[]#这个的意思是先进先出,先是从右边进去,先出的话就是从左边出来 2 l.append('alex') 3 l.append('wupeiqi') 4 l.append('yuanhao') 5 l.append('xiangyanghua') 6 print(l) 7 print(l.pop(0))#pop本来是从右边先输出,如果加上0就代表是从左边先出 8 print(l.pop(0)) 9 print(l.pop(0)) 10 print(l.pop(0))
1 l=[]#这个是第二种方式 2 l.insert(0,'alex')#这个指的是都是从0这边进去,所以最后就是xiaoming最后进去的, 3 l.insert(0,'wupeqi') 4 l.insert(0,'yuanhao') 5 l.insert(0,'xiaoming') 6 print(l.pop()) 7 print(l.pop()) 8 print(l.pop()) 9 print(l.pop())
5 3. 用列表模拟堆栈#先进后出,后进先出
1 l=[] 2 l.insert(0,'zhoulian') 3 l.insert(0,'xiaoming') 4 l.insert(0,'qixiang') 5 print(l.pop(0)) 6 print(l.pop(0)) 7 print(l.pop(0)) 8 l=[] 9 l.append('zhoulian') 10 l.append('xiaoming') 11 l.append('qixiang') 12 print(l.pop()) 13 print(l.pop()) 14 print(l.pop())
7 4. 有如下列表,请按照年龄排序(涉及到匿名函数) 8 l=[ 9 {'name':'alex','age':84}, 10 {'name':'oldboy','age':73}, 11 {'name':'egon','age':18}, 12 ] 13 答案: 14 l.sort(key=lambda item:item['age']) 15 print(l)
元组-练习
1 #简单购物车,要求如下: 2 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
1 # msg_dic={ 2 # 'apple':10, 3 # 'tesla':100000, 4 # 'mac':3000, 5 # 'lenovo':30000, 6 # 'chicken':10, 7 # }#让用户不断的买东西,就要有一个循环,客户不可能上来就买,他要看到信息,所以要把信息都打印出来 8 # goods=[] 9 # while True: 10 # for k in msg_dic: 11 # print(k,msg_dic[k])#到这一步列出用户要买什么了 12 # choice=input('商品名: ').strip()#让用户输入自己买什么了 13 # if len(choice) ==0 or choice not in msg_dic:#这个地方判断他有可能输入为空那长度就为0了or用户输入的不在msg_dic下 14 # print('输入商品名非法') 15 # continue#从这个地方到上面意思是如果输入的商品不存在,就重新输入 16 # num=input('购买个数:').strip() 17 # if not num.isdigit():#如果不是数字 18 # print('请输入个数非法') 19 # continue 20 # goods.append((choice,msg_dic[choice],int(num))) 21 # print('购物车',goods)
字典-练习
1 1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 2 3 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
1 dic={'k1':[],'k2':[]} 2 num=[11,22,33,44,55,66,77,88,99] 3 for i in num: 4 if i >66: 5 dic['k1'].append(i) 6 else: 7 dic['k2'].append(i) 8 print(dic)
1 s='hello alex alex say hello sb sb' 2 统计s中每个单词的个数 3 l=s.split() 4 dic={} 5 for item in l: 6 if item in dic: 7 dic[item]+=1 8 else: 9 dic[item]=1 10 print(dic)
集合-练习
1 一.关系运算 2 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 3 pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} 4 linuxs={'wupeiqi','oldboy','gangdan'} 5 1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs) 6 2. 求出所有报名的学生名字集合
print(pythons | linuxs) 7 3. 求出只报名python课程的学员名字
print(pythons-linuxs) 8 4. 求出没有同时这两门课程的学员名字集合
print(pythons ^linuxs)
去重
二.去重 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
1 l=['a','b',1,'a','a'] 2 print(set(l))
2.在上题的基础上,保存列表原来的顺序
1 l=['a','b',1,'a','a'] 2 ll=[] 3 for i in l: 4 if i not in ll: 5 ll.append(i) 6 print(ll)
3.去除文件中重复的行,肯定要保持文件内容的顺序不变 4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序 l=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'egon','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ]
作业
#作业一: 三级菜单
#要求:
打印省、市、县三级菜单
可返回上一级
可随时退出程序
1 menu = { 2 '北京':{ 3 '海淀':{'五道口':{'soho':{},'网易':{},'google':{}}, 4 '中关村':{'爱奇艺':{},'汽车之家':{},'youku':{},}, 5 '上地':{'百度':{},}, 6 }, 7 '昌平':{'沙河':{'老男孩':{},'北航':{},}, 8 '天通苑':{}, 9 '回龙观':{}, 10 }, 11 '朝阳':{}, 12 '东城':{}, 13 }, 14 '上海':{ 15 '闵行':{"人民广场":{'炸鸡店':{}}}, 16 '闸北':{'火车战':{'携程':{}}}, 17 '浦东':{},}, 18 } 19 tag=True 20 while tag: 21 for province in menu:#列出所有的省 22 print(province)#输出北京和上海 23 province_in = input('请输出查询的省份(q退出):').strip() # 提示输出一个省份 24 if province_in in menu: 25 while tag: 26 for city in menu[province_in]: 27 print(city) 28 city_in =input('请输入城市名(b返回,q退出):').strip() 29 if len(city_in) ==0: 30 print('输入不能为空') 31 continue 32 if city_in in menu[province_in]: 33 while tag: 34 for county in menu[province_in][city_in]: 35 print(county) 36 county_in=input('请输入县级名(b返回,q退出):') 37 if county_in in menu[province_in][city_in]: 38 while tag: 39 for home in menu[province_in][city_in][county_in]: 40 print(home) 41 home_in =input('请输入工作单位(b返回,q退出):') 42 if home_in in menu[province_in][city_in][county_in].keys(): 43 while tag: 44 print('到单位的,别转了,再转就晕了') 45 end_in =input('继续查询请输入(b返回,q退出)') 46 if end_in =='b': 47 break 48 elif end_in =='q': 49 exit() 50 else: 51 print('请重新输入') 52 elif home_in.strip()=='b': 53 break 54 elif home_in.strip()=='q': 55 exit() 56 else: 57 print('请重新输入') 58 elif county_in.strip()=='b': 59 break 60 elif county_in.strip()=='q': 61 exit() 62 else: 63 print('请重新输入') 64 elif city_in.strip()=='b': 65 break 66 elif county_in.strip()=='q': 67 exit() 68 else: 69 print('请重新输入') 70 elif province_in.strip()=='b': 71 break 72 elif province_in.strip()=='q': 73 print('bey') 74 exit() 75 else: 76 print('请重新输入(q退出)') 77 continue
1 #作业二:请闭眼写出购物车程序 2 #需求: 3 用户名和密码存放于文件中,格式为:egon|egon123 4 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 5 允许用户根据商品编号购买商品 6 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 7 可随时退出,退出时,打印已购买商品和余额
1 print('------------欢迎登陆涛涛购物广场-------------') 2 username=input('请输入用户名:') 3 pwd=input('请输入密码:') 4 merchandise_list=[ 5 ('iphone',6000), 6 ('lenovo',5600), 7 ('oppo',4000), 8 ('huawei',6500) 9 ] 10 shop_lists=[] 11 for k,v in enumerate(merchandise_list): 12 print(k,v) 13 tag=True 14 while tag: 15 money =input('请输入你的工资:') 16 if money.isdigit(): 17 money=int(money) 18 while tag: 19 choise =input('请输入商品号,q退出') 20 if choise.isdigit(): 21 choise=int(choise) 22 if choise >=0 and choise<len(merchandise_list): 23 item=merchandise_list[choise] 24 if money >=item[1]: 25 shop_lists.append(item) 26 money-=item[1] 27 print('%s加入购物车,还剩%d元'%(item,money)) 28 else: 29 print('钱太少') 30 else: 31 print('没有这个商品') 32 elif choise=='q': 33 print('已退出购物广场') 34 for i in shop_lists: 35 print(i) 36 print('还剩%d元'%money) 37 break 38 else: 39 print('输入有误') 40 if tag==False: 41 break 42 else: 43 print('输入有误,请重新输入')