zoukankan      html  css  js  c++  java
  • 深浅拷贝作业

    # 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
  • 相关阅读:
    《剑指offer》第十二题(矩阵中的路径)
    《剑指offer》第十五题(二进制中1的个数)
    《剑指offer》第十题(斐波那契数列)
    《剑指offer》第十一题(旋转数组的最小数字)
    原始的生成对抗网络GAN
    《剑指offer》第九题(用两个栈实现队列)
    (转)c++一些知识点
    贪心算法
    动态规划——最长公共子串
    动态规划——主元素算法
  • 原文地址:https://www.cnblogs.com/lyfstorm/p/11152450.html
Copyright © 2011-2022 走看看