# 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)