周末练习(一)
#2、3、4、9、13、27不用做 # 1、执行 Python 脚本的两种方式 # 使用python解释器(python aa.py)或在unix系统下赋值成777,执行(./aa.py) # 5、 Pyhton 单行注释和多行注释分别用什么? #单行注释使用#号 #多行注释使用三个单引号,,需要注释的内容包含在引号内 # 6、声明变量注意事项有那些? #1、变量名不能为数字开头; # 2、不能以python关键字作为变量; # 3、只能是字母、数字、下划线的任意组合。 # 8、如何查看变量在内存中的地址? #id(变量名) # 10、写代码 # a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! #name = input('pelease input your name:") #password = input('please inout your password:') #if name == 'seven' and password == '123': #print('login successfull!') # b.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 # count = True # while count<=3: # name = input('pelease input your name:') # password = input('please inout your password:') # if name == 'seven' and password == '123': # print('login successfull!') # else: # print('login erro') # count += 1 # c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 # count = True # while count<=3: # name = input('pelease input your name:') # password = input('please inout your password:') # if name == 'seven'or name == 'alex' and password == '123': # print('login successfull!') # else: # print('login erro') # count += 1 # 11、写代码 # a. 使用 while 循环实现输出 2 - 3 + 4 - 5 + 6 ... + 100 的和 # count = 1 # sum1 = 0 # sum2 = 0 # while count <= 100: # if count % 2 == 0: # sum1 += count # elif count % 2 == 1: # sum2 += count # count += 1 # print(sum1 - sum2) #输出结果50 # b. 使用 for 循环和 range 实现输出 1 - 2 + 3 - 4 + 5 - 6 ... + 99 的和 # num = 0 # for i in range(99): # if i % 2 == 0: # num = num - i # else: # num = num + i # print(num) #输出结果-49 # c. 使用 while 循环实现输出 1, 2, 3, 4, 5, 7, 8, 9, 11, 12 # count = 0 # while count<13: # count += 1 # if count == 6 or count == 10:continue # else: # print(count) # d. 使用 while 循环实现输出 1-100 内的所有奇数 # count = 1 # while count<=100: # if count % 2 >= 1: # print(count) # count += 1 # e. 使用 while 循环实现输出 1-100 内的所有偶数 # count = 1 # while count<=100: # if count % 2 == 0: # print(count) # count += 1 # 12、分别书写数字# 5, 10, 32, 7# 的二进制表示 # 101 1010 100000 111 # 14、现有如下两个变量,请简述#n1和n2 是什么关系? # n1 = 123 # n2 = 123 # n1和n2指向同一块内存地址,数值是123 # 15、现有如下两个变量,请简述n1和n2是什么关系? # n1 = 123456 # n2 = 123456 #开辟了2个内存地址存放数据123456,并分别起了个名称为n1和n2. # 16、现有如下两个变量,请简述n1和n2是什么关系? # n1 = 123456 # n2 = n1 # 开辟了2个内存地址存放数据123456,并分别起了个名称为n1和n2. # 17、如有以下变量n1 = 5,请使用int的提供的方法,得到该变量最少可以用多少个二进制位表示? #print(int(5).bit_length()); #( bit_length返回该数字占用的最少位数) #输出结果3 # 18、布尔值分别有什么? # True 和 False # 19、阅读代码,请写出执行结果 # a = "alex" # b = a.capitalize() #将首字母大写 # print(a) # print(b) #执行结果如下 #alex #Alex # 请写出输出结果: # 20、写代码,有如下变量,请按照要求实现每个功能 # name = " aleX" # a. 移除 name 变量对应的值两边的空格,并输入移除有的内容 # name = ' aleX' # print(name.strip()) # b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果 # name = ' aleX' # print(name.startswith("al")) # 执行结果 # False # c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 # name = ' aleX' # print(name.endswith('X')) # 执行结果True # d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 # name = ' aleX' # print(name.replace("l","p")) # #执行结果 # apeX # e. 将 name 变量对应的值根据 “l” 分割,并输出结果。 # name = ' aleX' # print(name.split('l')) # f. 请问,上一题 e 分割之后得到值是什么类型? #分割后得到一个列表 # g. 将 name 变量对应的值变大写,并输出结果 # name = 'aleX' # print(name.upper()) # h. 将 name 变量对应的值变小写,并输出结果 # name = 'aleX' # print(name.lower()) # i. 请输出 name 变量对应的值的第 2 个字符? # name = 'aleX' # print(name[1]) # j. 请输出 name 变量对应的值的前 3 个字符? # name = 'aleX' # print(name[0:3]) # k. 请输出 name 变量对应的值的后 2 个字符? # name = 'aleX' # print(name[-2:]) # l. 请输出 name 变量对应的值中 “e” 所在索引位置? # name ='aleX' # print(name.index('e')) # 21、字符串是否可迭代?如可以请使用 for 循环每一个元素? # name = " aleX" # for i in name: # print(i) # 22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串, li = ['alex', 'eric', 'rain'] # li = ["alex","eric","rain"] # for i in li: # print("_".join(i)) #输出结果 # a_l_e_x # e_r_i_c # r_a_i_n # 22、写代码,有如下列表,按照要求实现每一个功能 # li = ['alex', 'eric', 'rain'] # a. 计算列表长度并输出 # li = ['alex', 'eric', 'rain'] # print(len(li)) # 执行结果3 # b. 列表中追加元素 “seven”,并输出添加后的列表 # li = ['alex', 'eric', 'rain'] # li.append("seven") # print(li) # 执行结果 # ['alex', 'eric', 'rain', 'seven'] # c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表 # li = ['alex', 'eric', 'rain'] # li.insert(0,'Tony') # print(li) # 输出结果:['Tony', 'alex', 'eric', 'rain'] # d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表 # li = ['alex', 'eric','rain'] # li[1] = 'Kelly' # print(li) # 输出结果:['alex', 'Kelly', 'rain'] # e. 请删除列表中的元素 “eric”,并输出修改后的列表 # li = ['alex','eric','rain'] # li.remove('eric') # print(li) #输出结果['alex', 'rain'] # f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表 # li = ['alex', 'eric', 'rain'] # print(li.pop(2)) # print(li) # 输出结果: # rain # ['alex', 'eric'] # g. 请删除列表中的第 3 个元素,并输出删除元素后的列表 # li = ['alex', 'eric', 'rain','egon','amy'] # print(li.pop(3)) # print(li) # 输出结果: # egon # ['alex', 'eric', 'rain', 'amy'] # h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表 # li = ['alex', 'eric', 'rain','egon','amy'] # del li[2:4] # print(li) #输出结果:['alex', 'eric', 'amy'] # i. 请将列表所有的元素反转,并输出反转后的列表 # li = ['alex', 'eric', 'rain','egon','amy'] # li.reverse() # print(li) # # 输出结果:['amy', 'egon', 'rain', 'eric', 'alex'] #j. 请使用 for、 len、 range 输出列表的索引 # li = ["alex","eric","rain"] # for index in range(len(li)): # print(index,li[index]) # 输出结果 # 0 alex # 1 eric # 2 rain # k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始) # li = ["alex","eric","rain"] # for index,value in enumerate(li,100): # print(index,value) #输出结果: # 100 alex # 101 eric # 102 rain # l. 请使用 for 循环输出列表的所有元素 # li = ["alex","eric","rain"] # for i in li: # for item in i: # print(item) # 输出结果: # a # l # e # x # e # r # i # c # r # a # i # n # 23、写代码,有如下列表,请按照功能要求实现每一个功能 # li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] # a. 请输出 “Kelly” # li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] # print(li[2][1][1]) # 输出结果kelly # b. 请使用索引找到 'all' 元素并将其修改为 “ALL” # li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] # print((li[2][2]).upper()) #输出结果ALL # 24、写代码,有如下元组,按照要求实现每一个功能tu=('alex','eric','rain') # a. 计算元组长度并输出 # tu=('alex','eric','rain') # print(len(tu)) # 输出结果:3 # b. 获取元组的第 2 个元素,并输出 # tu=('alex','eric','rain') # print(tu[1]) #输出结果eric # c. 获取元组的第 1- 2个元素,并输出d. 请使用 for 输出元组的元素 # tu=('alex','eric','rain') # print(tu[:2]) # 输出结果:('alex', 'eric') # e. 请使用 for、 len、 range 输出元组的索引 # tu = ("alex","eric","rain") # for index in range(len(tu)): # print(index,tu[index]) # 输出结果 # 0 alex # 1 eric # 2 rain # f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始) # tu = ("alex","eric","rain") # for index,values in enumerate(tu,10): # print(index,values) # 输出结果 # 0 alex # 1 eric # 2 rain # 25、有如下变量,请实现要求的功能 # tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11 ,22 ,33)}, 44]) # a. 讲述元祖的特性 #不可变类型,一旦一个对象被定义了,它的值就不能再被修改,如果包含可变的列表,字典等值,那这些值可以改变 # b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改? #不能被修改 # c. 请问 tu变量中的"k2" 对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven” # k2对应的值是列表类型,可以被修改. # tu = ("alex",[11,22,{"k1":"v1","k2":["age","name"],"k3":(11,22,33)},44]) # tu[1][2]["k2"].append("Seven") # print(tu) # 输出结果('alex', [11, 22, {'k1': 'v1', 'k2': ['age', 'name', 'Seven'], 'k3': (11, 22, 33)}, 44]) # d. 请问 tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven” # k3对应的类型是元组,不能被修改 # 26、字典 # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # a. 请循环输出所有的 key # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # for keys in dic.keys(): # print(keys) # #输出结果 k1 k2 k3 # b. 请循环输出所有的 value # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # for values in dic.values(): # print(values) # # #输出结果 vi vw [11,22,33] #c.请循环输出所有的 key 和 value # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # for k,v in dic.items(): # print(k,v) #输出结果 # k1 # v1 # k2 # v2 # k3[11, 22, 33] # d. 请在字典中添加一个键值对, "k4": "v4",输出添加后的字典 # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # dic.setdefault("k4","v4") # print(dic) # # 执行结果 # {'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'v1', 'k4': 'v4'} # e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典 # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # dic["k1"] = "alex" # print(dic) # 执行结果{'k3': [11, 22, 33], 'k2': 'v2', 'k1': 'alex'} # f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典 # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # dic["k3"].append("44") # print(dic) # 执行结果 # {'k3': [11, 22, 33, '44'], 'k2': 'v2', 'k1': 'v1'} # g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典 # dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # dic["k3"][0] = "18" # print(dic) # 执行结果 # {'k3': ['18', 22, 33], 'k2': 'v2', 'k1': 'v1'} # 28、求 1- 100内的所有数的和 # a = 0 # for i in range(0,100): # a += (i+1) # print(a) # 执行结果5050 # 29、元素分类 # 有如下值集合[11, 22, 33, 44, 55, 66, 77, 88, 99, 90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。 # 即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值} # dic1 = {} # list2 = [11,22,33,44,55,66,77,88,99,90] # for i in list2: # if i > 66: # dic1.setdefault('k1',[]).append(i) # else: # dic1.setdefault('k2',[]).append(i) # print(dic1) # 30、购物车 # 功能要求: # 要求用户输入总资产,例如: 2000 # 显示商品列表,让用户根据序号选择商品,加入购物车 # 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。 # goods = [ # {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, # {"name": "游艇", "price": 20}, # {"name": "美女", "price": 998}, # ] goods= [ {"name":"电脑","price":1999}, {"name":"鼠标","price":10}, {"name":"游艇","price":20}, {"name":"美女","price":998},] shop_card=[] sum=0 money = int(input('please input you have money:')) tag=True while tag: print('Welcome to shopping') print(' 序号 名称 价格') for num in range(len(goods)): print(' ',num,goods[num]['name'],goods[num]['price']) choice=int(input('please choice your num:')) if choice >= len(goods): print('无对应商品,请重新输入') continue else: shop_num=int(input('please input your shop_num:')) shop_card.append((goods[choice]['name'],goods[choice]['price'],shop_num)) print(shop_card) while tag: js_choice = input('1:结算\t2:继续选购 --->') if js_choice == '1': for i in shop_card: sum+=i[1]*i[2] if money-sum >0: print('购买成功,剩余金额',money-sum) tag=False else: print('账户余额不足') tag = False elif js_choice == '2': break else: print('输入有误,请重新输入')