Python-08-基本数据类型_练习二

  1 #!/usr/bin/env python
  2 # -*- conding:utf8 -*-
  3 
  4 # 1、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','rain']
  5 li = ['alex','eric','rain']
  6 v = "_".join(li)
  7 print(v)
  8 
  9 li = ['alex','eric',123]
 10 count = 0
 11 for i in li:
 12     li[count] = str(i)
 13     count += 1
 14 v = "_".join(li)
 15 print(v)
 16 
 17 # 2、查找列表中元素,移除每个元素的空格,并查找以a或者A开头 并且以c结尾的所有元素
 18 li = ["alec"," aric","Alex","Tony","rain"]
 19 count = 0
 20 for item in li:
 21     v = item.strip()
 22     li[count] = v
 23     count += 1
 24 print(li)
 25 for i in li:
 26     if i.startswith('a') or i.startswith('A') and i.endswith('c'):
 27         print(i)
 28 
 29 tu = ("alec"," aric","Alex","Tony","rain")
 30 dic = {"k1":"alec","k2":" aric","k3":"Alex","k4":"Tony"}
 31 
 32 
 33 # 3、写代码,有如下列表,按照要求实现每一个功能
 34 li = ['alex','eric','rain']
 35 a.计算列表长度并输出
 36 b.列表中追加元素 "seven",并输出添加后的列表
 37 
 38 # 4、写代码,有如下列表,请按照功能要求实现每一个功能
 39 li = ["hello",'seven',["moom",["h","kelly"],'all'],123,446]
 40 a.请根据索引输出 "Kelly"
 41 b.请使用索引找到 'all' 元素并将其修改为 "ALL". 如:li[0][1][9]...
 42 
 43 # 5、写代码,有如下元组,按照要求实现每一个功能
 44 # tu = ('alex','eric','rain')
 45 # a.计算元组长度并输出
 46 # b.获取元组的第2个元素,并输出
 47 # c.获取元组的第1-2个元素,并输出
 48 # d.请使用for输出元组的元素
 49 # e.请使用for、len、range输出元组的索引
 50 # f.请使用enumrate输出元组元素和序号(序号从10开始)
 51 tu = ('alex','eric','rain')
 52 a
 53 print(len(tu))
 54 for i in tu:
 55     print(i)
 56 b
 57 print(tu[1])
 58 c
 59 print(tu[0:2])
 60 d
 61 for i in tu:
 62     print(i)
 63 e
 64 for i in range(len(tu)):
 65     print(i)
 66 f
 67 for i , j in enumerate(tu, 10):
 68     print(i,j)
 69 ############新的知识点!!!!!!
 70 # 创建序列
 71 """
 72 enumerate(sequence, [start=0])
 73 其中:sequence    一个序列、迭代器或其他支持迭代对象(例如本题中的元组tu)
 74 其中:start       下标起始位置 例如本题f 中的(序号从10开始)
 75 for i , j in enumerate(tu, 10):
 76     print(i,j)
 77 
 78 """
 79 ############新的知识点!!!!!!
 80 
 81 
 82 # 6、有如下变量,请实现要求的功能
 83 # tu = ("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
 84 # a.讲述元组的特性
 85 # b.请问tu变量中的第一个元素 "alex" 是否可被修改?
 86 # c.请问tu变量中的"k2"对应得值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
 87 # d.请问tu变量中的"k3"对应得值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
 88 tu = ("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
 89 c
 90 tu[1][2]["k2"].append("Seven")
 91 print(tu)
 92 
 93 # 9、元素分类
 94 #     有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值
 95 #    保存至字典的第二个key的值中。
 96 #       即:{'k1':大于66的所有值,‘k2’:小于66的所有值}
 97 li = [11,22,33,44,55,66,77,88,99,90]
 98 dic = {"k1":[],"k2":[]}
 99 for i in li:
100     if i > 66:
101         dic["k1"].append(i)
102     if i < 66:
103         dic["k2"].append(i)
104 print(dic)
105 
106 # 10、输出商品列表,用户输入序号,显示用户选中的商品
107 #     商品 li = ["手机","电脑","鼠标垫","游艇"]
108 #    a.允许用户添加商品
109 #    b.用户输入序号显示内容
110 li = ["手机", "电脑", "鼠标垫", "游艇"]
111 v = input("请选择是否添加商品(1 or 0):")
112 if v == 1:
113     new_v = input("请输入添加的产品:")
114     li.append(new_v)
115 else:
116     m = int(input("请选择你需要查看的商品:"))
117     print(li[m])
118 
119 # 11、用户交互显示类似省市县N级联动的选择
120 #  a.允许用户增加内容
121 #  b.允许用户选择查看某一个级别内容
122 
123 # 12、列举布尔值是False的所有值
124 0 / None / [] / () / {} / ""
125 
126 # 13、有两个列表
127 # l1 = [11,22,33]
128 # l2 = [22,33,44]
129 # a.获取内容相同的元素列表
130 # b.获取l1中有,l2中没有的元素列表
131 # c.获取l2中有,l1中没有的元素列表
132 # d.获取l1和l2中内容都不同的元素
133 a
134 for i in l1:
135     if i in l2:
136         print(i)
137 b
138 for i in l1:
139     if i not in l2:
140         print(i)
141 c
142 for i in l2:
143     if i not in l1:
144         print(i)
145 d
146 for i in l2:
147     if i not in l1:
148         print(i)
149 for i in l1:
150     if i not in l2:
151         print(i)
152 
153 # 14、利用For循环和range输出
154 # a.For循环从大到小输出1-100
155 # b.For循环从小到大输出100-1
156 # c.while循环从大到小输出1-100
157 # d.while循环从小到大输出100-1
158 
159 
160 # 15、购物车
161 #     功能要求:
162 #      要求用户输入总资产,例如:2000
163 #      显示商品列表,让用户根据序号选择商品,加入购物车
164 #      购买,如果商品总额度大于总资产,提示账号余额不足,否则购买成功。
165 # goods = [{"name":"电脑","price":"1999"},
166 #         {"name":"鼠标","price":"10"},
167 #         {"name":"游艇","price":"20"},
168 #         {"name":"美女","price":"998"}]
169 
170 # 16、分页显示内容
171 # a.通过for循环创建301条数据,数据类型不限,入:
172 #   alex-1  alex1@live.com   pwd1
173 #   alex-2  alex2@live.com   pwd2
174 #   alex-3  alex3@live.com   pwd3
175 #   alex-4  alex4@live.com   pwd4
176 #   alex-5  alex5@live.com   pwd5
177 # b.提示用户 请输入要查看的页码,当用户输入指定页码,则显示指定数据
178 # 注意:
179 #   - 每页显示10条数据
180 #   - 用户输入页码是非十进制数字,则提示输入内容格式错误
181 #           自己做的 忘记了 切片方法!1!
182 dic = {}
183 v = ""
184 for item in range(0, 301):
185     if v.count("\n") == 10:
186         v = ""
187         v += "alex-" + str(item) + "\t" + "alex" + str(item) + "@live.com" + "\t" + "pwd" + str(item) + "\n"
188     else:
189         v += "alex-" + str(item) + "\t" + "alex" + str(item) + "@live.com" + "\t" + "pwd" + str(item) + "\n"
190         dic.update({(item // 10 + 1): v})
191 # print(dic)
192 m = input("请输入要查看的页码:")
193 new_m = dic[int(m)]
194 print(new_m)
195 
196 #           答案
197 user_list = []
198 for i in range(1,302):
199     temp = {"name":"newmet"+str(i),"email":"newmet@top"+str(i),"pwd":"pwd"+str(i)}
200     user_list.append(temp)
201 while True:
202     # 用切片实现,每次输入页面,只显示10页
203     v = int(input("请输入要查看的页码:"))
204     start = (v-1)*10
205     end = v * 10
206     result = user_list[start:end]
207     for item in result:
208         print(item,type(item))
209 
210 
211 
212 
213 # 17、有1、2、3、4、5、6、7、8、8个数字,能组合多少个互不相同切无重复数字的两位数?
214 li = []
215 for i in range(1,9):
216     for j in range(1,9):
217         if j != i:
218             v = str(i) + str(j)
219             if v not in li:
220                 li.append(v)
221 print(li,len(li))
222 
223 # 18、利用for循环和range输出 9 * 9 乘法表
224 for i in range(1,10):
225     v = ""
226     for j in range(i,10):
227         v += str(i) + " × " +str(j) + " = " + str(i*j) + "\t"
228     print(v)
229 
230 for i in range(1,10):
231     v = ""
232     for j in range(1,i+1):
233         v += str(i) + " × " +str(j) + " = " + str(i*j) + "\t"
234     print(v)
235 
236 for i in range(1,10):
237     for j in range(1,i+1):              # 不加 end="" ,每次输出print,默认有(\n)是自动换行,加上则不换行
238         print(str(i) + " × " +str(j) + " = " + str(i*j) + "\t",end="")
239     print("\n",end="")
240 ############新的知识点!!!!!!
241 """
242 print("newmet",end="")              # end=""  默认是 end="\n"
243 print('new','met','top')            # 结果:new met top
244 print('new','met','top',sep='*')    # 结果:new*met*top
245                                     # sep=""  默认是 sep=" "
246 """
247 ############新的知识点!!!!!!
248 
249 # 19、有以下列表,
250 # nums = [2,7,11,15,1,8,7]
251 # 请找到列表中任意两个元素相加能够等于9的元素合集,如:[(0,1),(4,5)]
252 nums = [2, 7, 11, 15, 1, 8, 7]
253 li = []
254 count1 = 0
255 for i in nums:
256     count2 = 0
257     for j in nums:
258         if i + j == 9 and count1 != count2 and count2 > count1:
259             tu = (count1,count2)
260             li.append(tu)
261         count2 += 1
262     count1 += 1
263 print(li)
264 
265 # 只要求索引,不考虑重复与否
266 li = []
267 for i in range(len(nums)):
268     for j in range(len(nums)):
269         if nums[i] + nums[j] == 9:
270             li.append((i,j,))
271 print(li)
272 
273 
274 # 20、用Python开发程序自动计算方案:
275 #    公鸡5文钱一只,母鸡3文钱一只,小计3只一文钱,用100文钱买100只鸡,其中公鸡、母鸡、小鸡必须要有,
276 #  问公鸡、母鸡、小鸡要买多少只刚好凑够100文钱?
277 for i in range(1,20):
278     for j in range(1, 33):
279         for m in range(1, 100):
280             if i * 5 + j * 3 + m / 3 == 100 and i + j + m == 100:
281                 print(i, j, m)
282 # 结果:4 18 78
283 # 结果:8 11 81
284 # 结果:12 4 84

 

posted on 2018-11-12 14:37  NewMet  阅读(229)  评论(0编辑  收藏  举报

导航