python数据类型、字符编码、文件处理-练习

练习-字符串

 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('输入有误,请重新输入')

原文地址:https://www.cnblogs.com/yinfutao/p/8029893.html