一、单选题
1、以下哪项是取余运算符?( )
A *
B //
C %
D +
2、已知:s = "python",执行 print(s[::2])语句后,输出的结果是( )。
A python
B pto
C nohtyp
D yhn
3、在 Python 中,下面哪个选项可以获取字符串中某字符出现的次数?( )
A length()
B count()
C size()
D len()
4、Python 中的列表和元组的主要区别是( )。
A、 列表中元素的值可修改,元组中元素的值不可修改
B、
列表是有序的,元组是无序的
C、
列表是一维的,元组可以是多维的
D、
列表可以包含不同类型的元素,元组只能包含相同类型的元素
5、关于 Python 语言的浮点数类型,以下选项中描述错误的是( )。
A 小数部分不可以为 0
B 带有小数的类型通常用浮点数类型表示
C float(x) 中 x 可以是十进制实数形式的字符串
D 整数写成指数形式是浮点数类型
二、实操题
6、小青有 N 个小球,小蓝有 M 个小球,请计算他们一共有多少个小球。
例如:N = 2,M = 3,表示小青有 2 个小球,小蓝有 3 个小球,一共有 5 个小球(5 = 2 + 3)。
输入描述:
第一行输入一个整数 N(1≤N≤1000),表示小青的小球数量第二行输入一个整数 M(1≤M≤1000),表示小蓝的小球数量
输出描述:
输出一个整数,表示一共有多少个小球
样例输入:
2 3
样例输出:
5
参考答案:对于这个问题,我们需要计算小青和小蓝的小球总数。输入给出小青有N个小球,小蓝有M个小球。所以,他们一共有N+M个小球。
7、给定一个长度为 11 的字符串 S,表示电话号码,然后将电话号码中第三位数字后的连续四位数字用“*”替换,并输出替换后的字符串。
例如:S = "13900001234",用“*”替换第三位数字后的连续四位数字为“139****1234”。
输入描述:
输入一个长度为 11 的字符串 S(字符串仅包含 0~9 之间的数字且首个字符只能为 1),表示电话号码
输出描述:
输出一个字符串,表示替换后的字符串
样例输入:
13900001234
样例输出:
139****1234
参考答案:根据题目要求,我们需要将电话号码中第三位数字后的连续四位数字用“*”替换。首先,我们需要找到第三位数字的位置,然后将该位置后的四个字符替换为四个“*”。假设电话号码为 S,长度为 11。我们可以用以下步骤实现:1. 找到第三位数字的位置,记为 index。由于字符串下标从 0 开始,因此 index = 2。2. 构造一个字符串 result,将电话号码 S 的前两位数字添加到 result 中。3. 将四个“*”添加到 result 中,对应的位置是 S 的第三、第四、第五和第六位数字。4. 将电话号码 S 的最后五位数字添加到 result 中。5. 返回 result。用 Python 代码实现如下:```pythondef replace_phone_number(S):index = 2result = S[:index] + '*' * 4 + S[index + 4:]return result```
8、给定 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
参考答案:br />```pythonN = int(input())strings = input().split()for i in range(N):strings[i] = strings[i][:-1]strings.sort(key=len)for s in strings:print(s)```
9、有 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
参考答案:br />```123```
10、有一张 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
参考答案:```def countRectangles(N, grid):count = 0for i in range(N):for j in range(N):if grid[i][j] == 1:row_start = icol_start = jwhile row_start < N and grid[row_start][col_start] == 1:row_start += 1while col_start < N and grid[i][col_start] == 1:col_start += 1rect_width = row_start - irect_height = col_start - jcount += rect_width * rect_heightreturn countN = int(input().strip())grid = []for _ in range(N):grid.append(list(map(int, input().strip().split())))print(countRectangles(N, grid))```
11、老师在黑板上写了一个不超过 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
参考答案:对于这个问题,我们可以按照以下步骤来求解:1. 首先,将输入的整数n转换为字符串形式,方便后续处理。2. 从左到右遍历这个字符串,找到第一个出现k+1次的数字,记为x。3. 将x及其右侧的所有数字都删除,得到一个新的字符串。4. 将剩下的数字按照从大到小的顺序重新排列,得到最终的字符串。5. 将最终的字符串转换回整数形式,并输出。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!