一、实操题
1、出租车费用
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
根据乘坐出租车的里程,计算应该支付的费用。
出租车根据行驶里程阶梯式计价,具体规则如下表:
请补全下面程序,使程序实现如下功能:
(1)程序开始运行后,输入一个正整数,表示乘坐出租车的里程数;
(2)根据规则计算并输出乘坐出租车应该支付的费用,结果保留一位小数。
d = int(input())
if __________:
cost = d * 2
__________
cost = __________
else:
cost = __________
print('%.1f' % cost)
参考答案:```pythond = int(input())if d <= 3:cost = d * 2elif d <= 10:cost = 6 + (d - 3) * 1.5else:cost = 14.5 + (d - 10) * 2print('%.1f' % cost)```
2、和的结果数
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
请补全下面程序,使程序实现如下功能:
(1)输入n(2≤n≤100)个整数,整数之间以空格隔开,并保证n个数各不相同;
(2)从这n个数中任选两个,计算并输出任意两个数的和共有多少种不同结果。
例如:
输入一组整数1 3 4 6,任意两数和可能为4(1+3)、5(1+4)、7(1+6 或 3+4)、9(3+6)、10(4+6),因此,输出结果应为5。
ls = [int(i) for i in input().split()]
results = []
for i in range(_______):
for j in range(_______):
s = ls[i] + ls[j]
if s not in results:
_____________
print(len(results))
参考答案:```pythonls = [int(i) for i in input().split()]results = set()for i in range(len(ls)):for j in range(i+1, len(ls)):s = ls[i] + ls[j]results.add(s)print(len(results))```
3、因数和个数
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
把一个数的因数全加在一起,叫做这个数的因数和。例如,6的因数有1、2、3、6,则它的因数和为1 + 2 + 3 + 6 = 12。
请编写一段程序,输入一个正整数n(n≤1000),判断因数和为n的正整数有多少个,并依次输出这些正整数。
输入描述:
输入一个正整数n(n≤1000)
输出描述:
第一行输出一个正整数,表示因数和为n的正整数的数量,如不存在,则输出0
如果存在,则第二行由小到大输出所有符合条件的数,数字之间以空格隔开
输入样例1:
12
输出样例1:
2 6 11
样例说明1:
因数和为12的正整数有2个,分别是6和11
输入样例2:
10
输出样例2:
0
样例说明2:
因数和为10的正整数不存在,所以仅输出0
参考答案:```pythonn = int(input())count = 0for i in range(1, n+1):s = 0for j in range(1, i+1):if i % j == 0:s += jif s == n:print(i, end=' ')count += 1print(count)```
4、单词变复数
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
英语单词在变成复数形式时,有以下几种常见情况(不完全):
(1)常规情况下结尾直接加s;
(2)以s、sh、ch、x结尾的单词,加es;
(3)以辅音字母加上y结尾的单词,去掉y加ies;
(注:英文字母中,除了a、e、i、o、u这5个元音字母外,其他都是辅音字母)
请编写一段程序,输入n(1≤n≤1000)个英文单词(单数,仅包含小写字母),并按以上规则变成复数形式。
输入描述:
输入n(1≤n≤1000)个英文单词(单数,仅包含小写字母),单词之间以空格隔开
输出描述:
输出这组单词按以上规则变成的复数形式,单词之间以空格隔开
输入样例:
teacher box butterfly
输出样例:
teachers boxes butterflies
参考答案:根据题目要求,我们需要编写一段程序,输入n(1≤n≤1000)个英文单词(单数,仅包含小写字母),并按题目中给出的规则变成复数形式。首先,我们需要读取输入的单词数量n和n个单词。由于题目中限制了input()括号中不允许添加任何提示语,因此我们需要使用其他方式读取输入。一种可行的方式是使用sys模块的stdin.readline()函数来读取输入。然后,我们需要遍历每个单词,并根据题目中给出的规则将其变成复数形式。具体实现如下:1. 如果单词以s、sh、ch、x结尾,直接在其后加上es;2. 如果单词以辅音字母加上y结尾,去掉y加上ies;3. 否则,直接在单词后加上s。最后,我们将所有复数形式的单词输出到屏幕上,单词之间以空格隔开。
5、啤酒兑换
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
某啤酒品牌正在举办一次促销优惠活动。凭3个啤酒瓶可以再换一瓶啤酒,凭5个瓶盖也可以再换一瓶啤酒,换来的啤酒可以继续换,但不允许赊账。
请编写一段程序,计算一个人初始买入n(1≤n≤100)瓶啤酒后,最终他最多能得到多少瓶啤酒,并将这个结果输出。
输入描述:
输入一个正整数n,表示初始买入的啤酒瓶数(1≤n≤100)
输出描述:
输出一个正整数,表示最终能得到的啤酒数
输入样例:
10
输出样例:
19
参考答案:br />输入n,输出最多得到的啤酒数。
6、反转递增串
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
编写一段程序,输入一个n(2≤n≤1000)位正整数,将其中所有递增数字子串进行反转。
例如,正整数12387645包含两个递增数字子串1238和45,将这两部分进行反转,得到最终的83217654。
输入描述:
输入一个n(2≤n≤1000)位正整数
输出描述:
输出一行,为将输入中所有递增数字子串进行反转的结果
输入样例1:
12387645
输出样例1:
83217654
输入样例2:
87654321
输出样例2:
87654321
参考答案:```pythonn = int(input())s = str(n)res = ''inc_num = ''for i in range(len(s)):if i == 0 or s[i] > s[i-1]:inc_num += s[i]else:res += inc_num[::-1] + s[i]inc_num = ''res += inc_num[::-1]print(res)```
7、包围黑子块
时间限制:1s
内存限制:128mb
(注:input()括号中不允许添加任何提示语)
小张发明了一种新式的棋类游戏——战斗棋。在“战斗棋”中,棋子分为黑、白两色。有一条重要的规则叫做“包围败地”。即,横竖相连的同色棋子算成一块棋,一块棋被对方棋子横竖包围起来就算一块“败地”,棋盘边角也算是包围。
现有一片战斗棋区域,包含N * M(1≤N≤100,1≤M≤100)个落子点,所有落子点均摆满了棋子,其中1代表黑子、0代表白子。
请编写一段程序,计算并输出这片区域中被包围的黑色败地数量。
输入描述:
第一行输入2个正整数N和M(1≤N≤100,1≤M≤100),N表示区域的行数,M表示区域的列数,正整数之间以一个空格隔开
接下来的N行每行包括M个数字(数字只能为1或0),1表示黑子,0表示白子,数字之间以一个空格隔开
输出描述:
输出一个正整数,表示N * M的区域中被包围的黑色败地数量
输入样例:
5 3 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0
输出样例:
5
参考答案:```pythondef count_black_defeated_areas(N, M, board):def dfs(i, j):if i < 0 or i >= N or j < 0 or j >= M or board[i][j] != 1:returnboard[i][j] = 2dfs(i - 1, j)dfs(i + 1, j)dfs(i, j - 1)dfs(i, j + 1)def count_defeated_areas():count = 0for i in range(N):for j in range(M):if board[i][j] == 1:dfs(i, j)if all(board[x][j] == 2 for x in range(i - 1, i + 2)) and \all(board[i][y] == 2 for y in range(j - 1, j + 2)):count += 1return countN, M = map(int, input().split())board = [list(map(int, input().split())) for _ in range(N)]return count_defeated_areas()print(count_black_defeated_areas())```
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!