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