AI實戰營Python編程作業
輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重復數字的新的整數。 保證輸入的整數最后一位不是0
st = input("請輸入字符串:") st1=st[::-1] res='' for i in st1: if i not in res: res += i print(res)
輸入一個數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字,如果有多對數字的和等于輸入的數字,輸出任意一對即可。
l = input("請輸入字符串:") list1 = l.split(',') list1.sort() lt = [] for i in list1: lt.append(int(i)) n = input("請輸入要查找的值:") i1 = int(n) def findU(list, num): i = 0 j = len(list) - 1 while i < j: if list[i] + list[j] < num: i += 1 elif list[i] + list[j] > num: j -= 1 else: print("%d,%d" % (list[i], list[j])) return print("No values match") findU(lt, i1)
輸入一個字符串,求最大的沒有重復字符的子字符串長度
l = input("請輸入字符串:") # l = 'huaweicloudaigallery' dict1={} maxC=0 for i in range(len(l)): zf = '' for j in range(i,len(l)): cc=str(l[j]) if cc not in zf: zf += cc else: if j-i>maxC: maxC=j-i dict1[maxC]=zf break print(dict1)
給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重復的三元組。
nums = [-1, 0, 1, 2, -1, 1, 4] nums.sort() lenth = len(nums) res = [] for i in range(lenth - 3): # a for j in range(i+1, lenth - 2): # b for k in range(j+1, lenth - 1): # c if nums[i] + nums[j] + nums[k] == 0: tmp=[nums[i],nums[j],nums[k]] if tmp not in res: res.append(tmp) print(res)
nums = [-1, 0, 1, 2, -1, 1, 4] nums.sort() result = [] # 在每一層多加判斷 for i in range(len(nums) - 3): if i == 0 or nums[i] != nums[i - 1]: k = len(nums) - 1 for j in range(i + 1, len(nums) - 2): if j == i + 1 or nums[j] != nums[j - 1]: while j < k and nums[i] + nums[j] + nums[k] > 0: k = k - 1 # 如果指針重合,隨著 k 后續的增加 # 就不會有滿足 a+b+c=0 并且 b
輸入一個0-100之間的整數成績:
學習成績>=90的同學,用A表示;
學習成績60-89分的同學,用B表示;
學習成績<60的同學,用C表示。
l = input("請輸入成績:") score = int(l) if score>=90: print('A') elif score<60: print('C') else: print('B')
企業發放的獎金根據利潤提成:
利潤(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,求應發放獎金總數?
l = input("請輸入利潤:") fl = float(l) def priceCal(money): tag = 0 res = 0 calRange = [0, 10, 20, 40, 60, 100] calRite = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01] for i in range(len(calRange) - 1): #找到邊界 if money > calRange[i] and money <= calRange[i + 1]: res = (money - calRange[i]) * calRite[i] tag = i break elif money > calRange[-1]: res = (money - calRange[-1]) * calRite[-1] tag = len(calRange) - 1 #循環計算 if tag >0: for j in range(tag): res += (calRange[j+1]-calRange[j])*calRite[j] print(res) priceCal(fl)
如果給定的一個字符串是回文,那么返回true,否則返回false。指在忽略標點符號、大小寫和空格的前提下,正著讀和反著讀一模一樣
import re r = "[^0-9A-Za-z\u4e00-\u9fa5]" # 匹配字符 text = "`a2.W`.A2';w2A/[w2a" res = re.sub(r, '', text).lower() revers = res[::-1] if res == revers: print("此字符串是回文") else: print("非回文")
把傳入的數字轉變為羅馬數字。(0~9)
轉換后的羅馬數字字母必須都是大寫。
s = '2091378' romaNum = ['N', 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ'] res = '' for i in range(len(s)): index = int(s[i]) res += romaNum[index] print(res)
世界上最簡單、最著名的加密方法是凱撒密碼,也叫移位密碼。在移位密碼中,明文中的字母通過按照一個固定數目進行偏移后被替換成新的字母。ROT13 是一個被廣泛使用的編碼技術,明文中的所有字母都被移動 13 位。因此,'A' ? 'N', 'B' ? 'O' 等等。請編寫一個函數,用于解碼一個被 ROT13 編碼的字符串,然后返回解碼后的結果。所有解碼后的字母都必須為字母大寫。請不要解碼非字母的字符(例如,空格、標點符號),但你需要在結果中保留它們
sr = 'dwq2i[;da2' def rotB(sr): res = '' for i in range(len(sr)): ch = str(sr[i]).upper() if 'A' <= ch <= 'Z': if ord(ch)+13 <= ord('Z'): res += chr(ord(ch)+13) else: tmp = ord(ch)+13-ord('Z')+ord('A')-1 res += chr(tmp) else: res += ch print(res) rotB(sr)
小明有一個魔法棒,魔法棒有很多功能,其中最簡單的是對字母的改變:可以將大寫字母變成小寫字母(A->a,B->b,C->c…Z->z),將小寫字母變成大寫字母(a->A…z->Z),魔法對數字不生效。
sr = '2sOUWj02j' def trans(sr): res='' for i in range(len(sr)): ch = str(sr[i]) if 'A'<=ch<='Z': ch=ch.lower() elif 'a'<=ch<='z': ch=ch.upper() res += ch print(res) trans(sr)
定一個矩形方正區域,里面有若干個地雷,用鼠標點擊,點擊后如果出現一塊區域,那么說明這個點周圍8個方向沒有地雷,如果出現數字,數字是幾,那么就表示這個區域周圍8個方向有幾顆地雷。現在告訴你這個圖里地雷的分布,你來給出每個點上面的數字應該是多少?
raws = int(input("請輸入雷區行數:")) cols = int(input("請輸入雷區列數:")) import numpy as np myarr = np.random.randint(0, 2, (raws, cols)) print(myarr) res = [] # 掃雷結果 for i in range(raws): # 遍歷行 sr = '' # 存儲每行掃雷結果 for j in range(cols): # 遍歷列 if myarr[i][j] == 1: sr += 'X' else: #構建九宮格 ct=0 scan={-1,0,1} for x in scan: if 0<=x+i 如果傳入的字符串是一個有效的中國電話號碼格式,則返回true。 例如: 134-4562-5655 13469587456 1314 122 9899 import re sr = input("請輸入疑似的手機號:") r = "[^0-9]" res = re.sub(r, '', sr) print(res) if res.startswith('1') and len(res)==11: print("這是中國手機號") else: print("這不是中國手機號") 提取所有人的生日 需要匹配的 -- 需要提取的 劉偉 1996.8.24 - - 8 24 李偉 1993年1月2日 - - 1 2 聶芳 1997-7-24 - - 7 24 編寫一個正則表達式,使得以上所有的生日都能被正確提取 # // 前瞻: # exp1(?=exp2) 查找exp2前面的exp1 # // 后顧: # (?<=exp2)exp1 查找exp2后面的exp1 # // 負前瞻: # exp1(?!exp2) 查找后面不是exp2的exp1 # // 負后顧: # (? 有個游戲參加者很多需要篩選,主辦方的選擇孩子的標準如下: n個孩子從左到右站成一排,每個孩子都有一個分數(該分數為正整數),要求所選出的孩子們必須是連續的一段,而且所選出的孩子的分數的平均值必須大于等于預先給定的一個常數b。但是這樣選擇的方法可能并不唯一,請問有幾種選法呢? 輸入:第一行:輸入候選孩子的個數n(1<=n<=20000)和給定的常數b(1<=b<=500) 接下來n行:輸入n個孩子的分數Xi(i=1,2,…)且1<=Xi<=500。 輸出:輸出選擇的種數。 輸入樣例:5 9 32 4 9 21 10 輸出樣例:13 d = 9 Xi = [32, 4, 9, 21, 10] n = len(Xi) ct = 0 for i in range(1, n + 1): for j in range(n - i + 1): sm = sum(Xi[j:j + i]) if sm / i >= d: ct += 1 print(ct) 你的弟弟剛做完了“100以內數的加減法”這部分的作業,請你幫他檢查一下。每道題目(包括弟弟的答案)的格式為a+b=c或者a-b=c,其中a和b是作業中給出的,均為不超過100的非負整數;c是弟弟算出的答案,可能是不超過200的非負整數,也可能是單個字符”?”,表示他不會算。 輸入:輸入文件的第一行只有一個數字T(1 <= T <= 1000),表示下面有T個算術運算,接下來有T行,每行包含一道題目,格式有以下4種情況: a+b=c a-b=c a+b=? a-b=? 其中0 <= b <= a <= 100,0 <= c <= 200,且不包含任何空白字符。輸入的所有整數均不含前導0。 輸出:輸出僅一行一個數字,表示”a+b=c”和”a-b=c”中計算正確的個數。 樣例:輸入樣例 4 1+2=3 3-1=5 6+7=? 99-0=99 輸出樣例 2 hw = ['3+5=8', '-1-2=3', '20-5=15', '3-5=-2', '169-31=?', '-6+16=10'] t = len(hw) ct=0 for i in hw: equal = i.split('=') left=equal[0] #等號左邊 right=equal[1] #等號右邊 if right.find('?') == -1: #過濾出算出來的題 a=0 b=0 if left.find('+') != -1: #等號左邊有+號 nums = left.split('+') a=int(nums[0]) b=int(nums[1]) else: # 如果等號左邊無加號,則有可能a為負數 jh = left.find('-',1,) a=int(left[0:jh]) b=int(left[jh:]) c = int(right) if a+b==c: print('%d %d %d' % (a, b, c)) ct+=1 print(ct) AI Python 云學院
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。