logo资料库

蓝桥杯 基础练习Python答案(含VIP试题)(自己AC的代码).pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
蓝桥杯蓝桥杯 基础练习 基础练习Python答案(含 答案(含VIP试题)(自己 试题)(自己AC的代码) 的代码) 部分习题有解析,可以点链接或者去我博客蓝桥杯一栏搜索。欢迎点赞评论指教~ 基础练习BASIC-13 数列排序BASIC-12 十六进制转八进制BASIC-11 十六进制转十进制BASIC-10 十进制转十六进制BASIC-9 特殊回文数BASIC-8 回文数BASIC-7 基础练习 特殊的数字BASIC-6 杨辉三角形BASIC-5 查找整数BASIC-4 数列特征BASIC-3 字母图形BASIC-2 01字串BASIC-1 闰年判断BASIC-30 VIP试题 阶乘计算BASIC-29 VIP试题 高精度加法BASIC-28 VIP试题 Huffuman树BASIC-27 VIP试题 2n皇后问题BASIC-26 VIP试题 报时助手BASIC-25 VIP试题 回形取数BASIC-24 VIP试题 龟 兔赛跑预测BASIC-23 VIP试题 芯片测试BASIC-22 VIP试题 FJ的字符串BASIC-21 VIP试题 Sine之舞BASIC-20 VIP试题 数的读法BASIC-19 VIP试题 完美的代价 BASIC-18 VIP试题 矩形面积交BASIC-17 VIP试题 矩阵乘法BASIC-16 VIP试题 分解质因数BASIC-15 VIP试题 字符串对比BASIC-14 VIP试题 时间转换 BASIC-13 数列排序 数列排序 while True: try: n = int(input()) s = sorted(list(map(int, input().split()))) for i in s: print(i,' ',end = '') except: break BASIC-12 十六进制转八进制 十六进制转八进制 while True: try: n = int(input()) for i in range(n): s = int(input(),16) #十六进制先转为十进制 result = oct(s) #十进制转为八进制 print(result[2:]) except: break
BASIC-11 十六进制转十进制 十六进制转十进制 十六进制转十进制题目解析 while True: try: s = str(input())[::-1] para = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8, '9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15} result = para[s[0]] for i in range(1, s.__len__()): temp = para[s[i]]*16**i result += temp print(result) except: break BASIC-10 十进制转十六进制 十进制转十六进制 while True: try: n = int(input()) print(hex(n)[2:].upper()) break except: break BASIC-9 特殊回文数 特殊回文数 特殊回文数题目解析 while True: try: n = int(input()) for num in range(10000, 1000000): temp = str(num) if temp[0:] == temp[::-1]: #判断是否是回文数 if sum(list(map(int, temp))) == n: print(num) break except: break BASIC-8 回文数回文数 while True: try: n = int(input()) for num in range(10000, 1000000): temp = str(num) if temp[0:] == temp[::-1]: #判断是否是回文数 if sum(list(map(int, temp))) == n: print(num) break except: break BASIC-7 特殊的数字 特殊的数字 while True: try: for num in range(100, 1000): bai = (num // 100) * (num // 100) * (num // 100) shi = (num % 100 // 10) * (num % 100 // 10) * (num % 100 // 10) ge = (num % 100 % 10) * (num % 100 % 10) * (num % 100 % 10) if bai + shi + ge == num: print(num) break except: break BASIC-6 杨辉三角形 杨辉三角形 while True: try: n = int(input()) s = [[0 for i in range(n)] for j in range(n)] for num in range(n): s[num][0] = 1 for i in range(n): for j in range(i+1): s[i][j] = s[i-1][j-1] + s[i-1][j] for i in range(n): for j in range(n): if s[i][j] != 0: print(s[i][j],' ', end = '') print('') except: break BASIC-5 查找整数 查找整数 while True: try: n = int(input()) s = list(map(int, input().split())) n1 = int(input()) if n1 in s: print(int(s.index(n1)) + 1) else: print(-1) except: break BASIC-4 数列特征 数列特征 while True: try: n = int(input()) s = list(map(int, input().split())) print(max(s))
print(min(s)) print(sum(s)) except: break BASIC-3 字母图形 字母图形 字母图形题目解析 while True: try: n = list(map(int, input().split())) s = [['0' for p in range(max(n)) ]for q in range(max(n))] for i in range(n[0]): temp1,temp2 = ord('A'), ord('A') for j in range(i, n[1]): s[i][j] = chr(temp1) temp1 += 1 for k in range(i-1, -1, -1): temp2 += 1 s[i][k] = chr(temp2) for x in range(n[0]): for y in range(n[1]): print(s[x][y],end = '') print('') except: break BASIC-2 01字串字串 while True: try: for i in range(32): print(str(bin(i))[2:].rjust(5,'0')) break except: break BASIC-1 闰年判断 闰年判断 while True: try: n = int(input()) if n % 4 == 0 and n % 100 != 0: print("yes") elif n % 400 == 0: print("yes") else: print("no") except: break BASIC-30 VIP试题试题 阶乘计算 阶乘计算 while True: try: n = int(input()) for i in range(1,n): n = n * i print(n) except: break BASIC-29 VIP试题试题 高精度加法 高精度加法 while True: try: a = input() b = input() A = a.rjust(max(len(a),len(b)), '0') B = b.rjust(max(len(a),len(b)), '0') c = [] temp = 0 for i in range(len(A)-1, -1, -1): c.append((int(A[i]) + int(B[i]) + temp) % 10) if (int(A[i]) + int(B[i])+temp) >= 10: temp = (int(A[i]) + int(B[i]) + temp) // 10 else: temp = 0 if temp == 0: pass else: c.append(temp) for x in c[::-1]: print(x,end = '') except: break BASIC-28 VIP试题试题 Huffuman树树 while True: try: n = int(input()) result = 0 s = list(map(int,input().split())) for i in range(n-1): s.sort(reverse=True) s1 = s.pop() s2 = s.pop() s.append(s1+s2) result += s1+s2 print(result) except: break BASIC-27 VIP试题试题 2n皇后问题 皇后问题 2n皇后问题题目解析
while True: try: #我们先白皇后,再黑皇后 n = int(input()) #n是一开始的黑白皇后个数 s = [] #存放原始的0,1位置 result = [] temp_W = [None for x in range(n)] #临时放一下白皇后 temp_B = [None for x in range(n)] #临时放一下黑皇后 for i in range(n): s.append(input().split()) #输入0,1位置 def valid_W(temp_W,row): #判断当前的位置上放白皇后是否合法 if s[row][temp_W[row]] == '1': #判断这个位置能否放置皇后 for i in range(row): #下面这个判断条件是:判断对角线,判断是否是白皇后自己的列 if abs(temp_W[i] - temp_W[row]) == abs(i-row) or temp_W[i] == temp_W[row]: return False return True def valid_B(temp_B,row,temp_W): #判断当前的位置放黑皇后是否合法 if s[row][temp_B[row]] == '1' and temp_B[row] != temp_W[row]: #判断这个位置能否放置皇后 for i in range(row): #判断是否对角线,是否是自己的列,判断这个位置有没有先放上白皇后 if abs(temp_B[i] - temp_B[row]) == abs(i-row) or temp_B[i] == temp_B[row]: return False return True def dfs_W(temp_W,row): #temp记录当前所有合法的皇后的位置,row是继续往下一行里面放皇后 if row == n: #当前进行到n,表示找到了白皇后的一种排列方式,跳出递归 dfs_B(temp_B,0) #白皇后排好之后跳到排列黑皇后 else: for col in range(n): #col是列,就是要遍历这一行的所有列,看在某个位置上是否合法 temp_W[row] = col if valid_W(temp_W,row): dfs_W(temp_W,row+1) def dfs_B(temp_B, row): #temp记录当前所有合法的皇后的位置,row是继续往下一行里面放皇后 if row == n: #当前进行到n,表示找到了n皇后的一种排列方式,跳出递归 result.append(temp_B[:])#将找到的黑皇后排列方式存储到result里面 return else: for col in range(n): #col是列,就是要遍历这一行的所有列,看在某个位置上是否合法 temp_B[row] = col if valid_B(temp_B,row,temp_W): dfs_B(temp_B,row+1) dfs_W(temp_W,0) print(len(result)) except: break BASIC-26 VIP试题试题 报时助手 报时助手 while True: try: dic = {0:'zero', 1: 'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine', 10:'ten',\ 11:'eleven', 12:'twelve', 13:'thirteen', 14:'fourteen', 15:'fifteen', 16:'sixteen', 17:'seventeen', 18:'eighteen',\ 19:'nineteen', 20:'twenty',30:'thirty',40:'forty',50:'fifty'} s = list(map(int, input().split())) res = '' if s[0] > 20: res += dic[20] + ' ' res += dic[s[0]%10] + ' ' else: res += dic[s[0]]+' ' if 10 <= s[1] <= 20: res += dic[s[1]] else: if s[1] == 0: res += "o'clock" elif s[1]//10 == 0: res += dic[s[1]%10] elif s[1]//10 == 2: res += dic[20] + ' ' + dic[s[1]%10] elif s[1]//10 == 3: res += dic[30] + ' ' + dic[s[1]%10] elif s[1]//10 == 4: res += dic[40] + ' ' + dic[s[1]%10] elif s[1]//10 == 5: res += dic[50] + ' ' + dic[s[1]%10] print(res) except: break BASIC-25 VIP试题试题 回形取数 回形取数 回形取数题目解析 import math while True: try: m, n = map(int,input().split()) res = [] for i in range(0,m): res.append(input().split()) N = math.ceil(min(m,n)/2) result = [] num = 0 for loop in range(N): for x in range(loop,m-loop): result.append(res[x][loop]) for y in range(loop+1,n-loop): result.append(res[m-1-loop][y]) if n-1 > 2*loop: for p in range(m-loop-2,loop-1,-1): result.append(res[p][n-1-loop]) if m-1 > 2*loop: for q in range(n-loop-2,loop,-1): result.append(res[loop][q]) for x in result:
print(x,'',end='') except: break BASIC-24 VIP试题试题 龟兔赛跑预测 龟兔赛跑预测 龟兔赛跑预测题目解析 import math while True: try: v1,v2,t,s,l = map(int, input().split()) x1,x2=0,0 #x1,x2是记录兔子和乌龟走过的路程 time = 0 for i in range(math.ceil(l/v2)): x1 += v1 x2 += v2 time += 1 if x1 >= l and x2 < x1: print('R') print(time) break elif x1 = l: print('T') print(time) break elif x1 == x2 >= l: print('D') print(time) break if (x1-x2) >= t: x2 += v2 * s time += s if x1 >= l and x2 < x1: print('R') print(time) break elif x1 = l: print('T') print(math.ceil(l/v2)) break elif x1 == x2 and x2 >= l: print('D') print(time) break except: break BASIC-23 VIP试题试题 芯片测试 芯片测试 芯片测试题目解析 while True: try: n = int(input()) s = [] for i in range(n): s.append(input().split()) for i in range(0,n): flag = 0 for j in range(n): if s[j][i] == '1': flag += 1 if flag >= n/2: print(i+1,'',end='') except: break BASIC-22 VIP试题试题 FJ的字符串 的字符串 while True: try: def Rec_fj(n): if n == 1: return 'A' else: return Rec_fj(n-1) + chr(ord('A')+n-1) +Rec_fj(n-1) n = int(input()) print(Rec_fj(n)) except: break BASIC-21 VIP试题试题 Sine之舞之舞 while True: try: def Rec_An(s, n): if n == 1: return 'sin(1)' elif (s == n - 1) and ((n - 1) % 2 == 0): return 'sin(' + str(n - 1) + '+' + 'sin' + str(n) + ')' elif (s == n - 1) and ((n - 1) % 2 != 0): return 'sin(' + str(n - 1) + '-' + 'sin' + str(n) + ')' elif s % 2 != 0: return 'sin(' + str(s) + '-' + Rec_An(s + 1, n) + ')' elif s % 2 == 0: return 'sin(' + str(s) + '+' + Rec_An(s + 1, n) + ')' def Rec_Sn(s, n): if s == n: return Rec_An(1,1) + '+' + str(n) else: return '(' + Rec_Sn(s + 1, n) + ')' + Rec_An(1,n+1-s) + '+' + str(s) n = int(input())
print(Rec_Sn(1,n)) except: break BASIC-20 VIP试题试题 数的读法 数的读法 数的读法题目解析 while True: try: s = {0: 'ling', 1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu', 6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu'} res = [] long_data = input() def read_four_num(n): #用这个函数读四位数 temp = list(map(int, n)) if temp[0] != 0: #千位如果是零不读 res.append(s[temp[0]]) res.append('qian') else: pass if temp[1] != 0: #百位不为零直接读出来 res.append(s[temp[1]]) res.append('bai') elif (temp[0] == 0 and temp[1] == 0) or (temp[1] == 0 and temp[2] == 0 and temp[3] == 0): #千位,百位都是零的话不读 pass else: res.append(s[temp[1]]) #千位不是零,百位是零读出来 if temp[2] != 0 and temp[2] != 1: #十位不是零和一 res.append(s[temp[2]]) res.append('shi') elif temp[2] == 1 and temp[0] == 0 and temp[1] == 0: res.append('shi') elif (temp[1] == 0 and temp[2] == 0) or (temp[2] == 0 and temp[3] == 0): #如果百位是零,十位也是零,连零读一个 #如果百位个位都是零,不读 pass else: res.append(s[temp[2]]) if temp[3] != 0: res.append(s[temp[3]]) else: pass return res if 0 < len(long_data) <= 4: ans = read_four_num(long_data.rjust(4,'0')) elif 4 < len(long_data) <= 8: new = long_data.rjust(8,'0') read_four_num(new[:4]) res.append('wan') if new[4:] != '0000' and new[4:][0] == '0': res.append('ling') ans = read_four_num(new[4:]) elif 8 < len(long_data) <= 10: new = long_data.rjust(12,'0') read_four_num(new[:4]) res.append('yi') if new[4:8] != '0000': read_four_num(new[4:8]) res.append('wan') elif new[4:12] == '00000000': pass else: res.append('ling') ans = read_four_num(new[8:12]) for x in ans: print(x,'',end= '') except: break BASIC-19 VIP试题试题 完美的代价 完美的代价 完美的代价题目解析 while True: try: def huiwen(n, s): # 判断能不能组成回文数 temp = set() if n % 2 == 0: for i in range(26): if s.count(chr(ord('a') + i)) % 2 != 0: # 如果某个字符不是偶数个 print('Impossible') return False else: return True else: for j in range(26): if s.count(chr(ord('a') + j)) % 2 != 0: temp.add(chr(ord('a') + j)) # 把个数是奇数个的字符放进temp if len(temp) > 1:
print('Impossible') return False else: return True def step(n, s, s1, res): for i in range(n // 2): if s[i:].count(s[i]) != 1: temp = s1[:n - i].index(s[i]) # 是要移动的步数 s1.pop(temp) res += temp s = s1[::-1] else: res += n // 2 - i s[i] = None s1 = s[::-1] return res n = int(input()) s = list(input()) s1 = s[::-1] res = 0 if huiwen(n, s): print(step(n, s, s1, res)) except: break BASIC-18 VIP试题试题 矩形面积交 矩形面积交 矩形面积交题目解析 while True: try: s1 = list(map(float, input().split())) s2 = list(map(float, input().split())) if s1[0] > s1[2]: s1[0],s1[2] = s1[2],s1[0] if s1[1] > s1[3]: s1[1], s1[3] = s1[3], s1[1] if s2[0] > s2[2]: s2[0],s2[2] = s2[2],s2[0] if s2[1] > s2[3]: s2[1],s2[3] = s2[3],s2[1] temp_x1 = max(s1[0],s2[0]) temp_x2 = min(s1[2],s2[2]) temp_y1 = max(s1[1],s2[1]) temp_y2 = min(s1[3],s2[3]) if temp_x2-temp_x1<0 or temp_y2-temp_y1<0: res = 0 else: res = (temp_y2-temp_y1)*(temp_x2-temp_x1) print("{:.2f}".format(res)) except: break BASIC-17 VIP试题试题 矩阵乘法 矩阵乘法 矩阵乘法题目解析 while True: try: def matrix_mul(matrix1,matrix, n): c = [[0 for m1 in range(n)]for m in range(n)] for i in range(n): for j in range(n): for k in range(n): c[i][j] += matrix1[i][k] * matrix[k][j] return c n = list(map(int, input().split())) s = [] result = s for j in range(n[0]): s.append(list(map(int, input().split()))) if n[1] == 0: for i in range(0, n[0]): for j in range(0, n[0]): if i == j: result[i][j] = 1 else: result[i][j] = 0 else: for k in range(n[1]-1): result = matrix_mul(result,s,n[0]) for i in range(0, result.__len__()) : for j in range(0, result[i].__len__()) : print(result[i][j],'', end='') print('') except: break BASIC-16 VIP试题试题 分解质因数 分解质因数 分解质因数题目解析 while True: try: def zhishufenjie(res, n, result): #res是存储分解质因数的式子,n是当前被分解的数 for i in range(2, n + 1): if n % i == 0: #如果n能整除i res += str(i) n = n // i if n == 1: return res elif n in result.keys(): #走捷径,假如我们判断36,判断一次到18了,18之前做过了,直接拿过来 res += '*'
res += result[n] return res else: res += '*' return zhishufenjie(res, n, result) min_num, max_num = map(int, input().split()) result = {} #result是存储值与其分解质因数的对应关系 for num in range(min_num,max_num + 1): res = '' result[num] = zhishufenjie(res,num,result) for k,v in result.items(): s = str(k)+'='+str(v) print(s) except: break BASIC-15 VIP试题试题 字符串对比 字符串对比 while True: try: s1 = input() s2 = input() if len(s1) != len(s2): print(1) elif s1 == s2: print(2) else: for i in range(s1.__len__()): if s1[i] == s2[i] or ord(s1[i]) + 32 == ord(s2[i]) or ord(s1[i]) - 32 == ord(s2[i]): flag = 0 else: flag = 1 print(4) break if flag == 0: print(3) except: break BASIC-14 VIP试题试题 时间转换 时间转换 时间转换题目解析 while True: try: t = int(input()) h = t // 3600 m = t%3600 // 60 s = t % 3600 % 60 print(str(h)+':'+str(m)+':'+str(s)) except: break 对你有帮助的话点个赞~~ 作者:干啥啥不会~
分享到:
收藏