深浅拷贝作业

时间:2022-09-04 19:49:14
# 1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3
# 方法一:将num作为一个字符串 这里要注意最后比较sum和num的时候,要对num进行类型转换
sum = 0
num = input('请输入一个数字:')
for i in num:
    # print(i)
    sum += int(i) ** 3
# print(sum)
    # sum += pow(int(i))
if sum == int(num):  # 注意num要转化成int类型的
    print(f'{num}是一个水仙花数')
else:
    print(f'{num}不是水仙花数')

# 将num作为一个数字  这里要注意int类型没有len方法,而且因为后面判断sum的时候还要使用原来的num,所以最好创建一个临时变量temp
sum = 0
num = int(input('请输入一个数字:'))
temp = num  # 因为后面还要使用原来的num,所以创建一个临时变量temp 注意temp要在for循环的外面
for i in range(len(str(num))):  # 控制循环的次数 # int 数据类型是不可迭代的,也没有len()方法
    sum += (temp % 10) ** 3  # 计算每一位的三次方的和
    temp //= 10
if sum == num:
    print(f'{num}是一个水仙花数')
else:
    print(f'{num}不是水仙花数')


# 2.给出一个纯数字列表. 请对列表进行排序(升级题, 难度系数很高. 最后再做这个).
# 思路:
# 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
# 2.循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.

lst = [12,2,13,3,14,4,15,5,16,6,10,7,9,8]
# 方法1
lst.sort()  # 是直接对原列表的操作
print(lst)

# 方法2
for j in range(len(lst)):  # 有多少个数就循环多少次
    for i in range(len(lst)-1):  # 一次循环只移动一个数字到相应的位置
        if lst[i] > lst[i+1]:
            lst[i], lst[i+1] = lst[i+1], lst[i]

print(lst)

# 用while写(跟方法2一样)
# lst = [88,5,8,6,1,23]
# 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 = i + 1
# print(lst)

# 冒泡排序 一次循环只移动一个数字到相应的位置 Java经典写法
# for i in range(len(lst)):  # i的取值范围是从0到len(lst)-1
#     for j in range(len(lst)-i-1):
#         if lst[j] > lst[j+1]:
#             lst[j], lst[j+1] = lst[j+1], lst[j]
#         j += 1
#     i += 1
# print(lst)


# 3.想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.

# 3. 税务部门征收所得税. 规定如下: 
# 1). 收入在2000以下的. 免征.
# 2). 收入在2000-4000的, 超过2000部分要征收3%的税. 
# 3). 收入在4000-6000的, 超过4000部分要征收5%的税.
# 4). 收入在6000-10000的, 超过6000部分要征收8%的税.  
# 5). 收入在10000以上的, 超过部分征收20%的税. 
#
# 注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.收入= 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
#
# 让用户输入它的工资, 计算最终用户拿到手是多少钱.

tax_4000 = (4000-2000)*0.03
tax_6000 = (6000-4000)*0.05
tax_10000 = (10000-6000)*0.08
salary = int(input('请输入你的工资:'))
if salary > 10000:
    tax = (salary - 10000) * 0.20 + tax_10000 + tax_6000 + tax_4000
elif salary > 6000:
    tax = (salary - 6000) * 0.8 + tax_6000 + tax_4000
elif salary > 4000:
    tax = (salary - 4000) * 0.5 + tax_4000
elif salary > 2000:
    tax = (salary - 2000) * 0.3
else:
    tax = 0
print(f'最终你拿到手是{salary-tax}元钱')




# 今天主要的作业就是把前面的作业好好练一练. 认真做好复习.
#
# 默写:
# 简述什么是深浅拷贝.
        1. = 没有创建新对象, 只是把内存地址进行了复制
        2. 浅拷贝  lst.copy() 只拷贝第一层
        3. 深拷贝
            import copy
            copy.deepcopy(lst) 会把对象内部的所有内容进行拷贝

# 删除列表中姓周的人的信息
lst = ['周芷若', '周伯通', '王重阳', '周葫芦娃']
del_lst = []
#遍历老列表,将要删除的元素放到新列表中
for el in lst:
    if '' in el:
        del_lst.append(el)
# 遍历新列表,删除老列表中相同的元素
for i in del_lst:
    lst.remove(i)
print(lst)
深浅拷贝作业深浅拷贝作业
# 判断一个数是否是水仙花数, 水仙花数是一个三位数,
# 三位数的每一位的三次方的和还等于这个数.
# 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3

n = input("请输入你要判断的数:")
sum = int(n[0])**3 + int(n[1])**3 + int(n[2])**3
if int(n) == sum:
    print("是水仙花数")
else:
    print("不是水仙花")


# 税务部门征收所得税. 规定如下: 
# 1). 收入在2000以下的. 免征.
# 2). 收入在2000-4000的, 超过2000部分要征收3%的税. 
# 3). 收入在4000-6000的, 超过4000部分要征收5%的税.
# 4). 收入在6000-10000的, 超过6000部分要征收8%的税.   8000
# 5). 收入在10000以上的, 超过部分征收20%的税. 
#
# 注, 如果一个人的收入是8000,
# 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.
# 收入= 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
#
# 让用户输入它的工资, 计算最终用户拿到手是多少钱.

salary = int(input("请输入你的工资:"))
if salary <= 2000:
    print("你的税是0")
    print("工资是%s" % salary)
elif salary <= 4000:
    print("你的税是%s" % ((salary - 2000) * 0.03))
    print("工资是%s" % (salary - ((salary - 2000) * 0.03)))
elif salary <= 6000:
    print("你的税是%s" % ((2000*0.03) + (salary-4000)*0.05))
    print("工资是%s" % (salary - ((2000*0.03) + (salary-4000)*0.05)))
elif salary <= 10000:
    print("你的税是%s" % ((2000*0.03) + (2000*0.05) + (salary-6000)*0.08))
    print("工资是%s" % (salary - ((2000*0.03) + (2000*0.05) + (salary-6000)*0.08)))
else: # 超过10000
    print("你的税是%s" % ((2000 * 0.03) + (2000 * 0.05) + (4000 * 0.08) + (salary - 10000) * 0.2))
    print("工资是%s" % (salary - ((2000 * 0.03) + (2000 * 0.05) + (4000 * 0.08) + (salary - 10000) * 0.2)))


# 2.给出一个纯数字列表. 请对列表进行排序(升级题, 难度系数很高. 最后再做这个).
# 思路:
# 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
# 2.循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大.
#   则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
# 3.想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端.
#   以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.


# 冒泡排序, 最low的冒泡. 可以进行优化,        ACM, 领扣
lst = [1 , 2,  3,  43,   2,   2,  21,   1,   12,    3]  # sort()
for j in range(len(lst)): # ??? 有多少个数. 就循环多少次
    for i in range(len(lst)-1):
        if lst[i] > lst[i+1]:
            lst[i], lst[i+1] = lst[i+1], lst[i]  # 核心思想 交换

print(lst)

# a = 10
# b = 24

# a, b = b, a
# print(a)
# print(b)

# 其他编程语言
# c = a
# a = b
# b = c
# print(a, b)
View Code