深淺拷貝做業

# 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
相關文章
相關標籤/搜索