蓝桥杯STEMA 考试 Python 中高级试卷(12 月)
 一、选择题
 第一题
 以下哪项是取余运算符?( C )
 A、*    B、//    C、%    D、+
第二题
 已知:s = "python",执行 print(s[::2])语句后,输出的结果是( B )。
 A 、 python    B 、pto C 、 nohtyp    D 、 yhn
第三题
 在 Python 中,下面哪个选项可以获取字符串中某字符出现的次数?( B )
 A、length()     B、count()     C、size()     D、len()
第四题
 Python 中的列表和元组的主要区别是(  A )。
 A、列表中元素的值可修改,元组中元素的值不可修改
 B、列表是有序的,元组是无序的   
 C、列表是一维的,元组可以是多维的
 D、列表可以包含不同类型的元素,元组只能包含相同类型的元素
第五题
 关于 Python 语言的浮点数类型,以下选项中描述错误的是( A )。
 A、小数部分不可以为 0
 B、带有小数的类型通常用浮点数类型表示
 C、float(x) 中 x 可以是十进制实数形式的字符串
 D、整数写成指数形式是浮点数类型
二、编程题
第一题
 编程实现:
 小青有 N 个小球,小蓝有 M 个小球,请计算他们一共有多少个小球。
 例如:N = 2,M = 3,表示小青有 2 个小球,小蓝有 3 个小球,一共有 5 个小球(5 = 2 + 3)。
 输入描述:
 第一行输入一个整数 N(1≤N≤1000),表示小青的小球数量第二行输入一个整数 M(1≤M≤1000),表示小蓝的小球数量
 输出描述:
 输出一个整数,表示一共有多少个小球
 样例输入:
 2
 3
 样例输出:
 5
# 示例代码
a=int(input())
b=int(input())
print(a+b) 
第二题
 编程实现:
 给定一个长度为 11 的字符串 S,表示电话号码,然后将电话号码中第三位数字后的连续四位数字用“*”替换,并输出替换后的字符串。
 例如:S = "13900001234",用“*”替换第三位数字后的连续四位数字为“139****1234”。
 输入描述:
 输入一个长度为 11 的字符串 S(字符串仅包含 0~9 之间的数字且首个字符只能为 1),表示电话号码
 输出描述:
 输出一个字符串,表示替换后的字符串
 样例输入:
 13900001234
 样例输出:
 139****1234
# 示例代码
s=input()
print(s[0:3]+'*'*4+s[7:]) 
第三题
 编程实现:
 给定 N 个长度不同的字符串,请将每个字符串的最后一个字符删除,并按长度从短到长的顺序换行输出。
 例如:N = 3,3 个字符串分别为 dfgas、abc、cbdf,删除最后一个字符后为 dfga、ab、cbd;
 按长度从短到长的顺序换行输出为:
 ab cbd dfga
 输入描述:
 第一行输入一个整数 N(2≤N≤10),表示字符串的个数
 第二行输入 N 个长度不同的字符串(2≤字符串长度≤20),字符串之间以一个空格隔开
 输出描述:
 输出 N 行字符串,表示所有字符串删除最后一个字符后,按长度从短到长的顺序换行输出的结果
 样例输入:
 3
 dfgas abc cbdf
 样例输出:
 ab cbd dfga
# 示例代码
n=int(input())
ls=list(input().split())  # 分割并放入列表
ans_ls=[x[0:len(x)-1] for x in ls] # 去掉每个字符串的最后一个字母
ans_ls.sort(key=len) # 按长度排序
for i in ans_ls:
    print(i,end=' ')  # 输出 
第四题
 编程实现:
 有 N 张扑克牌叠放在桌上,A 和 B 两人轮流抽牌,每次只能从最上面或最下面抽一张牌,当最后一张牌被抽完时,比较 A 和 B 两人扑克牌的点数总和,点数总和大的一方胜利,点数相同时双方均不算胜利。A 先抽牌,请统计一共有多少种不同的抽牌情况,A 有多少种不同的获胜情况。
 例如:N = 3,有 3 张扑克牌,从上往下的点数依次为 3、2、1。A 先抽牌,所有不同的抽取情况有:
 第一种:A 抽 3,B 抽 1,A 再抽 2,A 的点数总和为 5,B 的点数总和为 1;第二种:A 抽 3,B 抽 2,A 再抽 1,A 的点数总和为 4,B 的点数总和为 2;第三种:A 抽 1,B 抽 3,A 再抽 2,A 的点数总和为 3,B 的点数总和为 3;第四种:A 抽 1,B 抽 2,A 再抽 3,A 的点数总和为 4,B 的点数总和为 2;一共有 4 种不同的抽牌情况,A 有 3 种不同的获胜情况。
 输入描述:
 第一行输入一个整数 N(2≤N≤20),表示扑克牌的张数
 第二行输入 N 个整数(1≤整数≤13),同一个整数不能出现超过 4 次,表示从上往下每张扑克牌的点数, 整数之间以一个空格隔开
 输出描述:
 第一行输出一个整数,表示一共有多少种不同的抽牌情况第二行输出一个整数,表示 A 有多少种不同的获胜情况
 样例输入:
 3
 3 2 1
 样例输出:
 4
 3
# 示例代码  由于数据量比较小这里用位运算模拟了一下
n = int(input())
cards = list(map(int, input().split()))
res1= pow(2,n-1)
print(res1)
res2=0
for i in range(1,res1+1):
    m,a,b,x, y =i, 0,0, 0, n - 1
    for j in range(0,n):
        if j%2==0 :
            if m&1 :
                a+=cards[x]
                x+=1
            else:
                a += cards[y]
                y-=1
        else:
            if m & 1:
                b += cards[x]
                x += 1
            else:
                b += cards[y]
                y -= 1
        m>>=1
    if a>b:
        res2+=1
print(res2) 
第五题
 编程实现:
 有一张 N 行 N 列的网格纸,网格中每个小格子都是 1×1 的正方形,有些格子被填充成橙色。请数一数橙色区域一共有多少个矩形。
 例如:N = 4,4 行 4 列的网格纸如下图:
 图中网格纸的橙色区域一共有 7 个矩形。
 输入描述:
 第一行输入一个正整数 N(2≤N≤50)
 接下来输入 N 行,每行 N 个整数(整数只能为 1 或 0 ),其中 1 表示填充成橙色,0 表示没有填充成橙色,整数之间以一个空格隔开
 输出描述:
 输出一个整数,表示橙色区域的矩形数量
 样例输入:
 4
 1001
 0000
 1001
 0110
 样例输出:
 7
# 示例代码
n=int(input())
ls=[]
for i in range(n):
    lst=list(input())
    ls.append(lst)
def judge(x,y,a,b):
    for i in range(a):
        for j in range(b):
            if ls[x+i][y+j]!='1':
                return False
    return True
res=0
for a in range(1,n+1):
    for b in range(1,n+1):
        for x in range(n-a+1):
            for y in range(n-b+1):
                if judge(x,y,a,b):
                    res+=1
print(res) 
第六题
 编程实现:
 老师在黑板上写了一个不超过 500 位的整数 n(1≤n<10500),要求同学们擦掉其中任意 k 个数字,剩余数字的顺序不变,希望得到的数最大。
 例如:n = 69134,k = 2,从 69134 中擦掉 2 个数字;从左往右,将第一个位置的 6 和第三个位置的
 1 擦掉,变成的新数 934 是最大的。
 输入描述:
 输入两个整数 n 和 k(1≤n<10500,0≤k<n 的位数),整数之间以一个空格隔开
 输出描述:
 输出一个整数,表示擦掉 k 个数字后,得到的最大数
 样例输入:
 69134 2
 样例输出:
 934
# 示例代码
s,n=input().split()
ls=list(s)
n=int(n)
for i in range(n):
    t=True
    for j in range(1,len(ls)):
        if ls[j-1]<ls[j]:
            ls.pop(j-1)
            t=False
            break
    if t:
        ls.pop()
s=''.join(ls)
print(s)
                


















