深浅拷贝相关
- 判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3
# sum = 0 # count = input("请输入一个数:").strip() # for el in count : # sum = sum +int(el)**3 # if int(count) ==sum: # print("%s是水仙花水"%count) # else: # print("%s不是一个水仙花数"%count)
- 给出一个纯数字列表. 请对列表进行排序(升级题).
思路:
- 完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
-
# a = 10 # b = 24 # a, b = b, a # print(a, b) # 解构 # # # c 的思想 # a = 10 # b = 24 # x = a # a = b # b = x # print(a, b)
- 循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
-
# lst = [33, 3, 22, 5, 15, 4] # i = 0 # while i < len(lst) - 1: # 把最大的值移动到右端 # if lst[i] > lst[i + 1]: # 比较 # lst[i], lst[i + 1] = lst[i + 1], lst[i] # i += 1 # print(lst)
- 想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.
lst = [33,2,22,5,15,4] for a in range(len(lst)): i = 0 while i <len(lst) -1 : #把最大值移动到右端 if lst[i] >lst[i+1]: # 比较 lst[i],lst[i+1]=lst[i+1],lst[i] # 交换解刨 i+=1 print(lst)
- 完成彩票36选7的功能. 从36个数中随机的产生7个数. 最终获取到7个不重复的数据作为最终的开奖结果.
随机数:
from random import randint
randint(0, 20) # 0 - 20 的随机数
# from random import randint # 我要用随机数,必须导入这个模块 # s = set() # while len(s) < 7: # 当s集合中的元素个数小于7的时候,就去添加 # s.add(randint(1, 36)) # print(s)
4. 税务部门征收所得税. 规定如下:
1). 收入在2000以下的. 免征.
2). 收入在2000-4000的, 超过2000部分要征收3%的税.
3). 收入在4000-6000的, 超过4000部分要征收5%的税.
4). 收入在6000-10000的, 超过6000部分要征收8%的税.
4). 收入在10000以上的, 超过部分征收20%的税.
注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.
收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
让用户输入它的工资, 计算最终用户拿到手是多少钱.
# 让用户输入它的工资, 计算最终用户拿到手是多少钱. # money = input("请输入你的工资").strip() # if int(money) < 2000: # print("你的到手工资为{}块".format(money)) # elif int(money) <= 4000: # tax_3 = (int(money) - 2000) * (3 / 100) # money = int(money) - tax_3 # print("你的到手工资为{}块".format(money)) # elif int(money) < 6000: # tax_5 = (int(money) - 4000) * (5 / 100) # 超过4K以上的税 # tax_3 = 2000 * (3 / 100) # 超过2K并小于4K之间的税 # money = int(money) - tax_3 - tax_5 # print("你的到手工资为{}块".format(money)) # elif int(money) < 10000: # tax_8 = (int(money) - 6000) * (8 / 100) # tax_5 = 2000 * (5 / 100) # tax_3 = 2000 * (3 / 100) # money = int(money) - tax_3 - tax_5 - tax_8 # print("你的到手工资为{}块".format(money)) # elif int(money) > 10000: # tax_10 = (int(money) - 10000) * (20 / 100) # tax_8 = 4000 * (8 / 100) # tax_5 = 2000 * (5 / 100) # tax_3 = 2000 * (3 / 100) # money = int(money) - tax_10 - tax_8 - tax_5 - tax_3
# print("你的到手工资为{}块".format(money))
# 默写:
# 简述什么是深浅拷贝.
python的深浅拷贝问题在面试中常常被问道,name什么是深浅拷贝
拷贝:拷贝就是一个把一个变量的值传给另一个变量 ,在python中id(可以查看内存地址)
浅拷贝:只会拷贝第一层,第二层的内容不会被拷贝,所以被称为浅拷贝
深拷贝:深度拷贝,把元素内部的元素完全金星秀拷贝复制,不会产生一个改变另一个跟着改变的问题
# 删除列表中姓周的人的信息
# lst = [‘周永康’, ‘周伯通’, ‘王重阳’, ‘周葫芦娃’]
lst = ["周永康","周伯通","王重阳","周葫芦娃"] lst1 = [] for el in lst: if el.startswith("周"): # startswith 判断以xxx开头 lst1.append(el) for i in lst1 : lst.remove(i) print(lst)
lst = ["周永康","周伯通","王重阳","周葫芦娃"] lst1 = [] for el in lst : if "周" in el : # 判断周在不在每一个元素中 lst1.append(el) for i in lst1 : lst.remove(i) print(lst)
lst = ["周永康","周伯通","王重阳","周葫芦娃"] lst1 = [] for el in lst : if el[0] =="周": lst1.append(el) for i in lst1: lst.remove(i) print(lst)