选择题
1、十进制 55 55 55转换为十六进制是()
- A、 1101111 1101111 1101111
- B、 313 313 313
- C、 37 37 37
- D、 67 67 67
2、下列关于函数的说法正确是()
- A、函数的定义必须的程序的开头
- B、函数定义后,其中的程序就可以自动运行
- C、函数定义后,需要调用才会执行
- D、函数体与关键字
def
必须左对齐
3、已知t = ("蓝桥", "青少组", "省赛")
,执行t[::-1]
语句输出的结果是():
- A、
("省赛", "青少组", "蓝桥")
- B、
["省赛", "青少组", "蓝桥"]
- C、
{"省赛", "青少组", "蓝桥"}
- D、执行报错
4、字符串strip
方法的作用是():
- A、删除字符串头尾指定的字符
- B、删除字符串末尾的指定字符
- C、删除字符串头部的指定字符o
- D、通过指定分隔符对字符串切片
5、下列方法中,哪一个可以随机生成一个实数():
- A、
random()
- B 、
randrange()
- C、
getrandbits()
- D、
randint()
random()
方法返回随机生成的一个实数,它在 [ 0 , 1 ) [0,1) [0,1)范围内randrange ([start,] stop [,step])
方法返回指定递增基数集合中的一个随机数,基数默认值为 1 1 1random.getrandbits(k)
函数输出的是一个 0 − 2 k − 1 0-2^k-1 0−2k−1范围内的一个随机整数random.randint(start, stop)
方法返回指定范围内的整数
操作题
T1、字符串拼接
输入两个字符串 S 1 S1 S1、 S 2 S2 S2,然后将 S 1 S1 S1和 S 2 S2 S2拼接乘一个字符串输出。
输入描述
第一行输入一个字符串
S
1
S1
S1
第二行输入一个字符串
S
2
S2
S2
输出描述
将 S 2 S2 S2拼接到 S 1 S1 S1后面输出
输入样例
Ab
cd
输出样例
Abcd
代码实现
s1 = input()
s2 = input()
print(s1 + s2)
T2、最大数字
给定一个正整数,输出这个正整数中最大的那个数。
输入描述
输入一个正整数。
输出描述
正整数中各位最大的那个数。
输入样例
123
输出样例
3
代码实现
s = input()
ans = 0
for x in s:
ans = max(ans, int(x))
print(ans)
T3、摘苹果
小蓝带着一根长为
80
c
m
80cm
80cm的竹竿去摘苹果,当伸手碰不到,会借助竹竿摘苹果(竹竿碰到苹果就算摘下来)。
在给出小轩伸手的高度
N
N
N及每个苹果离地面的高度,请你帮助小蓝最多能摘到多少个苹果。
例如 N = 120 N=120 N=120,苹果高度为 122 , 222 , 159 , 200 122,222,159,200 122,222,159,200,最多摘到 3 3 3个苹果,高度为 222 222 222的苹果摘不到。
输入描述
输入一个正整数,表示小蓝伸手高度。
输入多个正整数,表示每个苹果离地面的高度,以英文逗号隔开。
输出描述
输出小蓝最多可以摘多少个苹果
输入样例
120
122,222,159,200
输出样例
3
代码实现
h = int(input())
s = eval(input())
ans = 0
for x in s:
if h + 80 >= x:
ans += 1
print(ans)
T4、搬物品
小蓝需要将 N N N件物品从河的一岸搬运到河的另外一岸,每次搬运数量为 1 − 3 1-3 1−3件,请问小蓝将 N N N件物品全部搬运过去有多少种方案?
例如 N = 2 N=2 N=2时,将 2 2 2件物品全部搬过去有 2 2 2种方案:
- 第一次搬一件,第二次搬一件
- 一次搬两件
输入描述
输入一个正整数,表示需要搬的物品数。
输出描述
全部搬过去的方案数。
输入样例
3
输出样例
4
代码实现
n = int(input())
f = {1 : 1, 2 : 2, 3 : 4}
for i in range(4, n + 1):
f[i] = f[i - 1] + f[i - 2] + f[i - 3]
print(f[n])
T5、污染
有一片海域分为 N × M N\times M N×M个方格,其中有些海域已被污染(用 0 0 0表示),有些海域没有被污染(用 1 1 1表示)。
请问这片 N × M N\times M N×M海域中有几块是没有被污染的独立海域(没有被污染的独立海城是指该块海域上下左右被已污染的海域包围,且 N × M N\times M N×M以外的海域都已被污染)。
例如下图,有三块海域(绿色)没有被污染,因为每一块上下左右都被污染的海域包围。
输入描述
第一行输入两个正整数 N N N和 M M M。 N N N表示矩阵方格的行数, M M M表示矩阵方格的列数, N N N和 M M M之间用一个英文逗号隔开。
第二行开始输入 N N N行,每行 M M M个数字,数字只能为 1 1 1或者 0 0 0。 1 1 1表示没有被污染的海域, 0 0 0表示被污染的海域
输出描述
这边 N × M N\times M N×M海域中有几块时没有被污染的独立海域。
输入样例
4,5
1,1,0,0,0
1,0,1,0,0
1,0,0,0,0
1,1,0,1,1
输出样例
3
代码实现
# 输入
n, m = eval(input())
g = []
for i in range(n):
g.append(list(eval(input())))
ans = 0
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# 广度优先搜索,求连通块
def bfs(x, y):
q = []
g[x][y] = 0 # flood fill
q.append((x, y))
while len(q) != 0:
x, y = q[0]
q.pop(0)
for i in range(4):
a = x + dx[i]
b = y + dy[i]
# 越界检查
if a < 0 or a >= n or b < 0 or b >= m:
continue
# 合法性检查
if g[a][b] == 0:
continue
g[a][b] = 0 # flood fill
q.append((a, b))
# 统计连通块个数
for i in range(n):
for j in range(m):
if g[i][j] == 1:
ans += 1
bfs(i, j)
print(ans)
T6、领奖活动
在一次领奖活动现场,有一个 N × M N\times M N×M个方格,其中有些方格中装有奖品,有些方格中没有奖品。 1 1 1表示有礼物, 0 0 0表示没有礼物。
小蓝参加了这次领奖活动,他需要从矩阵中选择一个正方形区域,如果所选的区域内的一条对角线方格中都有奖品,其他方格都没有奖品,就会获得所选区域的所有奖品,否则不能获得奖品。
请计算出小蓝最多能领取多少个礼物。
输入描述
第一行输入两个正整数 N N N和 M M M, N N N表示方格的行数, M M M表示方格的列数。 N N N和 M M M之间以一个英文逗号隔开。
第二行开始输入 N N N行,每行 M M M个数字,(数字只能为 1 1 1或者 0 0 0), 1 1 1有礼物, 0 0 0表示没有礼物。
输出描述
小蓝最多能领取多少个礼物。
输入样例
5,6
1,0,1,0,0,0
0,1,0,1,0,0
1,0,0,0,1,0
0,1,0,0,0,1
0,0,1,0,1,0
输出样例
4
提示
代码实现
import sys
n, m = eval(input())
g = []
for i in range(n):
g.append(eval(input()))
ans = 0
# 从x行y列开始,大小为k的子矩阵能够获得礼物数
# 每个子矩阵有两条对角线↘↗
def f(x, y, k):
flag = True # 左上到右下对角线↘
for i in range(k):
if g[x + i][y + i] == 0:
flag = False
break
if flag:
return True
x += k - 1 # 左下到右上对角线↗
flag = True
for i in range(k):
if g[x - i][y + i] == 0:
flag = False
break
return flag
# 子矩阵的最大行列数
k = min(n, m)
flag = False
while k >= 1:
for i in range(n - k + 1): # 枚举子矩阵的行
for j in range(m - k + 1): # 枚举子矩阵的列
if f(i, j, k):
print(k)
sys.exit(0) # 找到答案,结束程序
k -= 1
print(0)