文章目录
1. 合并表记录
描述:数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
输入描述:先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:输出合并后的键值对(多行)
示例一:
输入 :
4
0 1
0 2
1 2
3 4
输出:
0 3
1 2
3 4
示例二:
输入:
3
0 1
0 2
8 9
输出:
0 3
8 9
参考代码:
python
import sys
tmp_list = []
for line in sys.stdin:
a = line.split()
tmp_list.append(a)
count = int(tmp_list[0][0])
ele_list = tmp_list[1:]
result = []
n = 0
while n < count:
m = n + 1
tmp = ele_list[n]
while m < count:
if int(tmp[0]) == int(ele_list[m][0]):
tmp = [tmp[0],str(int(tmp[1]) + int(ele_list[m][1]))]
m += 1
flag = True
for k,v in result:
if int(k) == int(tmp[0]):
flag = False
if flag:
result.append(tmp)
n += 1
new_index = [ int(k) for k,v in result ]
new_index.sort()
new_result = []
for index in new_index:
for k,v in result:
if index == int(k):
new_result.append([k,v])
for k,v in new_result:
print(k,v)
2. 提取不重复的整数
描述:输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是 0 。
输入描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1:
输入:9876673
输出:37689
参考代码:
python
import sys
tmp_list = None
for line in sys.stdin:
a = line.split()[0]
tmp_list = list(a)
tmp_list.reverse()
result = []
n = 0
while n < len(tmp_list):
if tmp_list[n] not in result:
result.append(tmp_list[n])
n += 1
print(''.join(result))
3. 字符个数统计
描述:编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次,例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
输入描述:输入一行没有空格的字符串。
输出描述:输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
示例1:
输入:abc
输出:3
示例2:
输入:aaa
输出:1
参考代码:
python
import sys
for line in sys.stdin:
a = line.split()[0]
a_set = set(a)
print(len(a_set))
4. 数字颠倒
描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:输入一个int整数
输出描述:将这个整数以字符串的形式逆序输出
示例1:
输入:1516000
输出:0006151
示例2:
输入:0
输出:0
参考代码:
python
import sys
for line in sys.stdin:
a = line.split()[0]
b = list(a)
b.reverse()
print(''.join(b))
5. 字符串反转
描述:接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。
输入描述:输入一行,为一个只包含小写字母的字符串。
输出描述:输出该字符串反转后的字符串。
示例1:
输入:abcd
输出:dcba
参考代码:
python
import sys
for line in sys.stdin:
a = line.split()[0]
b = list(a)
b.reverse()
print(''.join(b))
6.句子逆序
描述:将一个英文语句以单词为单位逆序排放。例如"I am a boy",逆序排放后为"boy a am I"
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:得到逆序的句子
示例1:
输入:I am a boy
输出:boy a am I
示例2:
输入:nowcoder
输出:nowcoder
参考代码:
python
import sys
for line in sys.stdin:
a = line.split()
a.reverse()
print(' '.join(a))
7.字符串排序
描述:给定 n 个字符串,请对 n 个字符串按照字典序排列。
输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:数据输出n行,输出结果为按照字典序排列的字符串。
示例1:
输入:
9
cap
to
cat
card
two
too
up
boat
boot
输出:
boat
boot
cap
card
cat
to
too
two
up
参考代码:
python
import sys
tmp_list = []
for line in sys.stdin:
a = line.split()[0]
tmp_list.append(a)
tmp_list = tmp_list[1:]
tmp_list.sort()
for _ in tmp_list:
print(_)
8. 求int型正整数在内存中存储时1的个数
描述:输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
输入描述:输入一个整数(int类型)
输出描述:这个数转换成2进制后,输出1的个数
示例1:
输入:5
输出:2
示例2:
输入:0
输出:0
参考代码:
python
import sys
for line in sys.stdin:
a = line.split()[0]
b = bin(int(a))[2:].count('1')
print(b)
9.坐标移动
描述:开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:
合法坐标为A(或者D或者W或者S) + 数字(两位以内)
坐标之间以;分隔。
非法坐标点需要进行丢弃。如AA10; A1A; % ; YAD; 等。
下面是一个简单的例子 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
处理过程:
起点(0,0)
- A10 = (-10,0)
- S20 = (-10,-20)
- W10 = (-10,-10)
- D30 = (20,-10)
- x = 无效
- A1A = 无效
- B10A11 = 无效
- 一个空 不影响
- A10 = (10,-10)
结果 (10, -10)
输入描述:一行字符串
输出描述:最终坐标,以逗号分隔
示例1
输入:A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出:10,-10
示例2
输入:ABC;AKL;DA1;
输出:0,0
参考代码:
python
import sys
import re
tmp_list = None
for line in sys.stdin:
a = line.split()[0].split(";")
tmp_list = list(a)
new_list = []
pattern = r"^[AWDS]\d+$"
for _ in tmp_list:
if re.match(pattern,_)
new_list.append(_)
X = 0
Y = 0
for _ in new_list:
if _[0] == 'A':
X -= int(_[1:])
elif _[0] == 'S':
Y -= int(_[1:])
elif _[0] == 'W':
Y += int(_[1:])
elif _[0] == 'D':
X += int(_[1:])
print("{},{}".format(X,Y))
10.简单密码
描述:现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
输入描述:输入一组密码,长度不超过100个字符。
输出描述:输出密码变换后的字符串
示例1:
输入:YUANzhi1987
输出:zvbo9441987
参考代码:
python
import sys
tmp_str = None
for line in sys.stdin:
tmp_str = line.split()[0]
password_dict = {
"abc": "2",
"def": "3",
"ghi": "4",
"jkl": "5",
"mno": "6",
"pqrs": "7",
"tuv": "8",
"wxyz": "9",
}
result = ""
for _ in tmp_str:
if _.isupper():
t = _.lower()
if t == "z":
result += "a"
else:
tmp = ord(t) + 1
result += chr(tmp)
elif _.isnumeric():
result += _
else:
for k,v in password_dict.items():
if _ in k:
result += v
break
print(result)
11.汽水瓶
描述:某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
输入描述:对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
示例1:
输入:
3
10
81
0
输出:
1
5
40
参考代码:
python
import sys
tmp_list = []
for line in sys.stdin:
a = line.split()[0]
tmp_list.append(a)
def fun(N):
if N == 0 or N == 1:
return
if N == 2:
return 1
if N == 3:
return 1
count = N // 3
mod = N % 3
return count + fun(count + mod)