第十四届青少年蓝桥杯python组省赛真题

单选题

1.执行以下代码,输出结果是(A)。

age={16,18,7}

print(type(sorted(age))

       A.

       B.

       C.

       D.

2.执行以下代码,输出结果是(A)。

lst=”abc”

print(lst+lst)

        A. abcabc

        B. abc

        C. lst+lst

        D. abc+abc

3.已知ls=[3.5,”Python”,[10,“LIST”],3.6],那么ls[2][-1][1]的运行结果是?(A).

        A. l

        B. P

        C. y

        D. L

4.导入random标准库,执行print(random.randrange(2,20,2))语句,可能输出的结果是(A)。

        A. 2

        B. 5

        C. 13

        D. 20

5.以下关于Python中复数描述,错误的是(D )。

        A. 复数可以看作二元有序浮点数(x,y)

        B. 实部和虚部都是浮点数

        C. 虚数部分的后缀可以是“j”也可以是”J”

        D. 已知复数a,可以使用a.real获得虚数部分

编程题

1.删除字符串后缀

编程实现:

输入一个字符串,如果该字符串以er、Iy或者ing后缀结尾的,则删除该字符串后缀,并输出删除后的字符串,否者将原字符串输出。

输入描述:

输入一个字符串

输出描述:

输出删除后的字符串或者原字符串

样例输入:driver

样例输出:driv

input_str = input("请输入一个字符串:")
suffixes = ['er', 'ly', 'ing']
for suffix in suffixes:
    if input_str.endswith(suffix):
        input_str=input_str[:-len(suffix)]
        break    #满足要求后就不需要再遍历了
print(input_str)

 2.字符串连接

编程实现:

给定一个只包含小写字母的字符串S(S长度﹥=3),请输出字符串S的第一个字符和最后一个字符。

例如:

当S=’abc’, abc的第一个字符为a, 最后一个字符为c, 故输出ac.

输入描述:

输入一个只包含小写字母的字符串S(S长度﹥=3)

输出描述:

输出字符串S的第一个字符和最后一个字符,两个字符之间没有空格及其他字符。

样例输入:abc

样例输出:ac

# 获取用户输入
S = input("请输入一个只包含小写字母的字符串(长度>=3):")

# 确保输入符合要求
if len(S) >= 3 and S.islower():
    # 获取第一个和最后一个字符
    result = S[0] + S[-1]
    # 输出结果
    print(result)
else:
    print("输入不符合要求,请输入一个长度大于等于3且只包含小写字母的字符串。")

3.因数

因子,因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15,那么1和15也是15的因子。1,3,5,15这四个因子是15的所有因子。

完数: 如果一个数等于不含它本身的其他因子之和,则称该数为"完数”。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。

编程实现:

输入一个正整数N,输出小于N的所有完数及个数 (个数前加*,例如:*2)。

输入描述:

输入一个正整数N。

输出描述:

输出小于N的所有完数及个数。

样例输入:100

样例输出:

6

28

*2

# 获取用户输入
N = int(input("请输入一个正整数N:"))

# 找出小于N的所有完数
perfect_numbers = []
for num in range(2, N):
    # 找出num的所有因子(不包含num本身)
    factors = [i for i in range(1, num) if num % i == 0]
    # 判断是否为完数
    if sum(factors) == num:
        perfect_numbers.append(num)

# 输出所有完数
for perfect_number in perfect_numbers:
    print(perfect_number)

# 输出完数个数
print(f"*{len(perfect_numbers)}")

 4.最大值排序

       编程实现:

有N个正整数,现对N个正整数进行不同方式的排列,每次排列后都会按照以下规则进行次计算, 聪明的小蓝发现,排列方式不同,最后计算出的结果也不相同。

计算规则:

第一次:第一个数乘以第二个数乘以第三个数,结果记录为M(1);

第二次:第二个数乘以第三个数乘以第四个数,结果记录为M(2);

第三次:第三个数乘以第四个数乘以第五个数,结果记录为M(3);

……

第N_2次:第N_2个数乘以第N_1个数乘以第N个数,结果记录为M(N-2)。

最后计算M(1)+M(2)+M(3).....M(N-2)的数值。

找出一种排列方式使这个数值最大。

例如: N=4,4个正整数分别为1, 2, 3, 4,那么排列方式就会有24种:

其中排列方式为1, 3, 4, 2时,按照规则计算2次: 1*3*4=12, 3*4*2=24; 乘积相加: 12+24=36

这种排序方式是所有乘积相加的数值最大,为36。

输入描述:

输入N个正整数(3<=N) ,正整数之间一个英文逗号隔开

输出描述:

找出所有乘积相加的数值最大的排列方式。并输出数值

样例输入:

1,2,3,4

样例输出:

36

import itertools

# 获取用户输入并转换为列表
numbers = list(map(int, input().split(',')))

# 初始化最大和变量
max_sum = 0

# 生成所有排列方式
permutations = itertools.permutations(numbers)

# 遍历每种排列方式
for perm in permutations:
    current_sum = 0
    # 计算每种排列方式的乘积和
    for i in range(len(perm) - 2):
        current_sum += perm[i] * perm[i+1] * perm[i+2]
    # 更新最大和
    if current_sum > max_sum:
        max_sum = current_sum

# 输出最大乘积和
print(max_sum)

知识点补充:

1.集合set,集合使用大括号 {}表示,元素之间用逗号 , 分隔。

创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

2.randrange(start,stop,step), randrange() 方法返回指定递增基数集合中的一个随机数,基数默认值为1

randrange()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

import random

random.randrange ([start,] stop [,step])

randrange(0,100, 2)   # 从0-100中随机选取一个偶数

randrange(0,100, 4)  # 从0-100中随机选取一个能被4整除的整数

randrange(1,100, 3)  # 从0-100中随机选取一个能被3整除后余1的数

random.randrange(1, 100, 2)  # 从1-100中随机选取一个奇数

3.complex()函数,包含实部和虚部部分

用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

在 Python 中,复数的虚部以小写字母j或者大写字母J作为后缀(虚数单位)。

从复数中提取实部和虚部,comp.real,comp.imag.

4.字符串

删除特定的字符

切片问题,找到第一个或者最后一个字符。

ASCII 码值,用于对字符串进行加密。

大小写问题

查找字符串中的某个字符,或者是某个子字符串。

你可能感兴趣的:(蓝桥杯,python,开发语言,蓝桥杯)