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

蓝桥杯 基础练习Python答案(含VIP试题)(自己AC的代码)_第1张图片
部分习题有解析,可以点链接或者去我博客蓝桥杯一栏搜索。欢迎点赞评论指教~

基础练习

  • 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 < x2 and x2 >= 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 < x2 and x2 >= 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

对你有帮助的话点个赞~~

你可能感兴趣的:(蓝桥杯)