【2021華為云AI實戰營】Python編程知識經典題型解析(上)
Python基礎語法、數據結構、正則表達式、多任務和魔法方法的使用
理論學習視頻:《AI基礎課程--Python編程知識》
一、逆序除重
題目描述
輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重復數字的新的整數。 保證輸入的整數最后一位不是0。
輸入描述: 輸入一個int型整數
輸出描述: 按照從右向左的閱讀順序,返回一個不含重復數字的新的整數
示例1 輸入: 30010733 輸出: 3701
字符串是由Unicode碼點組成的不可變序列
代碼實現
num = input("隨機輸入一個整數:") list =[] for i in num[::-1]: if i not in list: list.append(i) res='' for i in list: res +=i print("逆序除重后結果:",res)
原理
其中利用list把他們切片,list是由三個元素所組成:param1,param2,param3
param1表示頭索引,可以為空,默認0;
param2表示尾索引,可以為空,默認為list.size,
param3表示步長,默認為1,-1表示倒敘原序列輸出
list[param1:param2:param3]
代碼中list[::-1]就表示把原數據倒敘輸出
動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=f0af65c2-8ec9-48e0-9a60-b98f6fc93d17
二、簡單的加法
題目描述
輸入一個數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。
如果有多對數字的和等于輸入的數字,輸出任意一對即可。
例如:輸入數組1 2 4 7 11 15和數字15。
由于4+11=15,因此輸出4和11。
代碼實現
l = input("請輸入字符串,以空格為間隔:") n = input("輸入數字:") def func(): # 在此編寫代碼 larr=l.split(" ") llen=len(larr) for i in range(llen-1): a=larr for j in range(i+1,llen): b=larr[j] if int(a)+int(b)==int(n): print("所輸入的字符串中符合條件的兩個數為:") print(a,b) func()
動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=07029b24-d843-41f5-bec4-0dcc21143986
三、巧玩字符串
題目描述
輸入一個字符串,求最大的沒有重復字符的子字符串長度
比如:輸入huaweicloudaigallery
輸出 9 (huaweiclo或aweicloud或weiclouda)
代碼實現
string = input("請輸入一組字符串:") # 手動輸入字符串 def func(str): maxlength=[] length=len(str) for i in range(length): tmp=str for j in range(i+1, length): if str[j] not in tmp: tmp += str[j] else: break maxlength.append(tmp) N=len(maxlength) for n in range (N): for m in range(n+1,N): if len(maxlength[n]) 先把所有包含的基本情況拆出來,然后再調試一下統計最大字符串數 str0=input("請輸入一組字符串:") def func(str_): max_num = 0 str_list = [] for i in str_: if i not in str_list: str_list.append(i) print(str_list) else: str_list = [] str_list.append(i) new_max_num = len(str_list) if new_max_num > max_num: max_num = new_max_num final_str = "".join(str_list) print("最長字串長度:",max_num) return max_num, final_str resulut=func(str0) 只顯示最大無重復的字符串: string = input("請輸入一組字符串:") def func(): done = False final_str = [] len_string = len(string) for i in range(len_string,-1,-1): for j in range(len_string-i+1): sub_string = string[j:i+j] len_sub_string = len(sub_string) len_set_sub_string =len(set(sub_string)) if len_sub_string == len_set_sub_string: maxlength = len_sub_string final_str.append(sub_string) done = True if done: break print("最長字串長度:",maxlength,final_str) func() 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=992e8582-4407-4029-9fe6-26df5b01cf8c 四、奇妙的三元組 題目描述 給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重復的三元組。 * 注意:答案中不可以包含重復的三元組。 示例: 給定數組 -1 0 1 2 -1 -4 滿足要求的三元組集合為: -1 0 1 -1 -1 2 代碼實現 def func(nums, a=0): if len(nums) < 3: return [] a = 0 result = [] for i in range(len(nums)): for j in range(i+1, len(nums)): for k in range(j+1, len(nums)): if nums+nums[j]+nums[k] == a: # 判斷是否等于目標值 temp = [nums, nums[j], nums[k]] if sorted(temp) not in result: # 去重 result.append(sorted(temp)) return result if __name__ == '__main__': nums = [-1, 0, 1, 2, -1, -4] result = func(nums, a=0) print(result) ok輸出沒問題,改進一下還是喜歡可以用戶自定義輸入的: string = input("請輸入一個數組:") def func(): nums = [int(t) for t in string.split()] list1 = [] a = 0 for i in range(len(nums)): for j in range(i+1, len(nums)): for k in range(j+1, len(nums)): if nums + nums[j] + nums[k] == a: #判斷是否等于目標值 temp = [nums, nums[j], nums[k]] temp.sort() if temp not in list1: #去重 list1.append(temp) print("滿足要求的三元組集合為:") for result in list1: print(result) func() 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=247ebb72-fe21-4847-9e11-16f38afe3764 五、學習成績劃分(判斷1) 題目描述 輸入一個0-100之間的整數成績, 學習成績>=90的同學,用A表示; 學習成績60-89分的同學,用B表示; 學習成績<60的同學,用C表示。 例如:輸入成績98,則會輸出A 代碼實現 score = input("請輸入你的成績:") score = float(score) if 100 >= score >= 90: print("恭喜您的成績是:A") elif 90 > score >= 60: print("您的成績是:B") elif score < 60: print("再接再厲您的成績是:C") else: print("請輸入正確的分數") 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=3cf7d42d-f5c8-451b-8aa6-973809bbe3bc 六、獎金分配(判斷2) 題目描述 企業發放的獎金根據利潤提成。 利潤(I)低于或等于10 萬元時,獎金可提10%; 利潤高于10 萬元,低于20 萬元時,低于10 萬元的部分按10%提成,高于10 萬元的部分,可可提成7.5%; 20 萬到40 萬之間時,高于20 萬元的部分,可提成5%; 40 萬到60 萬之間時高于40 萬元的部分,可提成3%; 60 萬到100 萬之間時,高于60 萬元的部分,可提成1.5%; 高于100 萬元時,超過100 萬元的部分按1%提成, 從鍵盤輸入當月利潤I,求應發放獎金總數? 代碼實現 money = input("請輸入公司當月所獲利潤總額(萬元):") money = float(money) if 0 <= money <= 10: bonus = money*0.1 elif 10 <= money <= 20: bonus = 10*0.1 + (money-10)*0.075 elif 20 < money <= 40: bonus = 10*0.1 + 10*0.075 + (money - 20)*0.05 elif 40 < money <= 60: bonus = 10*0.1 + 10*0.075 + 20*0.05 + (money - 40)*0.03 elif 60 < money <= 100: bonus = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + (money - 60)*0.015 elif 100 < money: bonus = 10*(0.1 + 0.075) + 20*(0.05 + 0.03) + 40*0.015 + (money-100)*0.01 print("當月應發放獎金總數為:%f萬元" %bonus) 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=4e26bd2a-a5e3-4d17-a34e-548d752d7f99 七、回文檢查器 題目描述 如果給定的一個字符串是回文,那么返回true,否則返回false。 palindrome(回文),指在忽略標點符號、大小寫和空格的前提下,正著讀和反著讀一模一樣。 代碼實現 *我這里用了兩種方法 1、函數法: def func(): s = input('請輸入一個數或者字符串:') if s == s[::-1]: #判斷正序是否等于逆序,并返回True or False print('True') else: print('False') func() 2、循環法: str=input("請輸入一個數或者字符串:") str = str*2 #強制偶數位 i = 0 while i 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=2fe5a68a-fda3-4ba9-9eb8-d6679661c3e7 八、羅馬數字轉換器 題目描述 把傳入的數字轉變為羅馬數字。(0~9) 轉換后的羅馬數字字母必須都是大寫。 代碼實現 這是個簡單的10以內(0~9)轉換: num=input("請輸入0-9間任意數字:") b = dict([("1", "Ⅰ"),("2", "Ⅱ"), ("3", "Ⅲ"),("4", "Ⅳ"),("5", "Ⅴ"),("6", "Ⅵ"),("7", "Ⅶ"),("8", "Ⅷ"),("9", "Ⅸ")]) print("轉換后的大寫羅馬數字字母: ", b[num]) 這是多位的轉換: num = int(input('請輸入任意數字:')) c = { 'g': ('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'), 's': ('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'), 'b': ('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'), 'q': ('', 'M', 'MM', 'MMM') } roman = [] # 用整除和取余獲得個十百千對應的數字 roman.append(c['q'][num // 1000]) roman.append(c['b'][(num // 100) % 10]) roman.append(c['s'][(num // 10) % 10]) roman.append(c['g'][num % 10]) print("轉換后的大寫羅馬數字字母: ") print(''.join(roman)) 動手實踐一下吧:https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=350bebb5-3faf-497a-a5ca-c8ac67b51383 AI開發平臺ModelArts Python 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。