当前位置:   article > 正文

蓝桥杯训练10道真题————Python_蓝桥杯python真题

蓝桥杯python真题

一、纪念日

解题思路

  • 直接用Python的datetime模块就可以很简单的解决这个问题。

Code

# 纪念日
import datetime

x = datetime.datetime(1921, 7, 23, 12, 0, 0)
y = datetime.datetime(2020, 7, 1, 12, 0, 0)
print(36138 * 24 * 60)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Answer

二、单词排列

将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。
  请问,总共能排列如多少个不同的单词。

解题思路

  • 直接暴力解就完事了。

Code

# 字母排列
import itertools


s = list("LANQIAO")
print(len(set(itertools.permutations(s))))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Answer

三、括号排序

由1对括号,可以组成一种合法括号序列:()。
  由2对括号,可以组成两种合法括号序列:()()、(())。
  由4对括号组成的合法括号序列一共有多少种?

解题思路

  • 直接暴力解就完事了。

Code


# 括号排序
import itertools


def check(ls):
    if ls[0] == ')':
        return False
    stack = []
    for i in ls:
        if i == '(':
            stack.append(i)
        elif i == ')':
            if len(stack) == 0 or stack.pop() != '(':
                return False
    return True

ans = set()
ls = list(itertools.permutations(['(', ')', '(', ')', '(', ')', '(', ')']))
for i in ls:
    if check(i):
        ans.add(i)
print(len(ans))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

Answer

四、单词加密

给定一个单词,请使用凯撒密码将这个单词加密。
  凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为d,b变为e,…,w变为z,x变为a,y变为b,z变为c。
  例如,lanqiao会变成odqtldr。
输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出一行,表示加密后的密文。
样例输入
anqiao
样例输出
odqtldr

解题思路

  • 先把字母的ASC值获取出来,然后加上3再重新输出。

Code

# 字母加密
letter = input()
arr = []
new_arr = []
for i in letter:
    arr.append(i)
for j in arr:
    value = ord(j) + 3
    new_arr.append(chr(value))
ans = ''.join(new_arr)
print(ans)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Answer

五、分数

1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …
每项是前一项的一半,如果一共有20项,
求这个和是多少,结果用分数表示出来。
类似:
3/2
当然,这只是加了前2项而已。分子分母要求互质。

注意:
需要提交的是已经约分过的分数,中间任何位置不能含有空格。
请不要填写任何多余的文字或符号。

解题思路

  • 暴力解就完事了。

Code

# 分数
from fractions import Fraction

res = []
for i in range(20):
    a = 1 / (2**i)
    res.append(a)
print(Fraction(sum(res)))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Answer

六、图片旋转

图片旋转是对图片最简单的处理方式之一,在本题中,需要对图片顺时针旋转 90 度。用一个 n×m 的二维数组来表示一个图片,例如给出一个 3×4 的图片的例子:

1 3 5 7

9 8 7 6

3 5 9 7

这个图片顺时针旋转 90 度后的图片如下:

3 9 1

5 8 3

9 7 5

7 6 7

给定初始图片,请计算旋转后的图片。
【输入格式】

输入的第一行包含两个整数 n 和 m,分别表示行数和列数。接下来 n 行,每行 m 个整数,表示给定的图片。图片中的每个元素(像 素)为一个值为 0 至 255 之间的整数(包含 0 和 255)。

【输出格式】

输出 m 行 n 列,表示旋转后的图片。

解题思路

  • 用数组来解决这道题。
  • 分析题目,这道题的本质就是让数组图形进行90°的翻转,通过两个for循环就可以解决。

Code

# 图片旋转
n, m = map(int, input().split())
ls = []
for i in range(n):  # 构建数组
    num = list(map(int, input().split()))
    ls.append(num)
new_ls = [[0] * n for i in range(m)]
for a in range(n):
    for b in range(m):
        new_ls[b][a] = ls[2-a][b]

for i in range(len(new_ls)):
    for j in new_ls[i]:
        print(j,end=' ')
    print('')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Answer

七、熊怪吃核桃

解题思路

  • 直接暴力解就完事了。

Code

# 熊怪吃核桃
num = 1543
ans = 0
while num != 1:
    if num % 2 != 0:
        ans += 1
        num = (num-1) // 2
    else:
        num /= 2
print(ans+1)  # 因为最后剩下了一个核桃,需要把它扔掉,所以结果需要加1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Answer

八、三角形面积

解题思路

  • 暴力解就完事了。

Code


# 三角形面积
print(8*8-4*6//2-8*2//2-8*4//2)
  • 1
  • 2
  • 3

Answer

九、加法变乘法

解题思路

  • 通过读题可以发现只有两个乘号。
  • 所以我们直接暴力解就可以了。

Code

# 加法变乘法
ls = []
for i in range(50):
    for j in range(50):
        if 1225- 2*i - 2*j - 2 + i*(i+1) + j*(j+1) ==2015 and i < j:
            ls.append([i,i+1,j,j+1])
print(ls[1][0])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Answer

十、饮料换购

解题思路

  • 直接暴力解就可以了。

Code

# 饮料换购
n = int(input())
sum = n
while sum >= 3:
    n += sum // 3
    sum = sum // 3 + sum % 3
print(n)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Answer

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/64260
推荐阅读
相关标签
  

闽ICP备14008679号