Description:python3.x版
Date:2020.4.17
Author:zhww
本文档记录一些机试的输入输出常用模板,旨在经验记录,也希望给还不熟悉编程笔试平台的Coders一点帮助,从而在各大公司的笔试招聘中无需烦恼于输入输出。
因为作者目前经验不足,有不对的地方还请大家多多指正,我也会根据代码练习及笔试经验,积极补充完善。
在线笔试须知
常用刷题平台:leetcode、newcoder、acmcode
while 1
,还需要加try...except...
总感觉牛客编程系统对python不够友好,试了几次都不容易通过,或者是耗时太长,so sad);while 1
来循环输入;input() Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
print() 用于打印输出,常用参数sep、end
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
map() 根据提供的函数对指定序列做映射。返回列表或迭代器。
list() 用于将元组或字符串转换为列表。
split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串,返回分割后的字符串列表。
str.split(str="", num=string.count(str))
输入形式
16
AC
输入模板
# 输入一个数字,int: 16
a = int(input())
# 输入一个字符/字符串,str: AC
c = input()
输入形式
2 8 1
ABC CSA
输入模板
# 输入多位数字,直接得到 list[int]:[2,8,1]
line = list(map(int,input().split(' ')))
# 输入一行字符/字符串list[str]:['ABC','CSA']
c = [i for i in input().split()]
# c = input().split()
形式
输入:第一行m,n分别代表人数和科目,接下来的是某人n科成绩;
2 3
15 32 23
58 20 69
输入:多行数字序列,每个序列占一行且由N(2
3 63 72 72 1
1 52 62 5 1
2 4 7
5 8 9 3 53 12 74
…
输入模板
# 行数已知,list[[int]]:[[15, 32, 23], [58, 20, 69]]
m,n = list(map(int,input().split()))
lines = []
for _ in range(m):
lines.append(list(map(int, input().split(' '))))
# lines.append([int(x) for x in input().split()])
# 行数未知
res = []
while True:
try:
s = input()
res.append(list(map(int, s.split(' '))))
# res.append(s.split(' '))
except:
break
#算法主体#
...
形式
每行输出一个结果
5
每行输出多个结果,单行输出,空格隔开
a b c s g
输出模板
# 单行单输出
print(res)
# 单行多输出,空格隔开
for i in range(len(res)):
print(res[i], end=' ')
输入:
abc
123456789
输出:
abc00000
12345678
90000000
平台支持: 华为机试、腾讯、阿里
代码示例
# 牛客网版本1:不带循环
s = []
res = []
# input
for _ in range(2):
s.append(input())
# solve
for i in range(2):
if len(s[i]) == 0:
continue
zero = len(s[i])%8
s[i] += '0'*(8-zero) if zero>0 else ""
for j in range(len(s[i])//8):
res.append(s[i][j*8:j*8+8])
# output
for i in range(len(res)):
print(res[i])
# 牛客网版本2:带循环
while True:
try:
s = []
res = []
# input
for _ in range(2):
s.append(input())
# solve
for i in range(2):
if len(s[i]) == 0:
continue
zero = len(s[i])%8
s[i] += '0'*(8-zero) if zero>0 else ""
for j in range(len(s[i])//8):
res.append(s[i][j*8:j*8+8])
# output
for i in range(len(res)):
print(res[i])
except:
break
笔试平台支持: 美团点评笔试
注意 测试用例是连续输入的,故算法前需要加上 while 1:
代码示例
#赛码网版本#
def main():
s = []
res = []
# input
for _ in range(2):
s.append(input())
# solve
for i in range(2):
if len(s[i]) == 0:
continue
zero = len(s[i])%8
s[i] += '0'*(8-zero) if zero>0 else ""
for j in range(len(s[i])//8):
res.append(s[i][j*8:j*8+8])
# output
for i in range(len(res)):
print(res[i])
while 1:
main()
笔试平台支持: 暂无
适合刷题,主要以面向对象的方式编写,无需编写输入输出。
好处:专注算法,且锻炼面向对象的思维方式;
坏处:算法不能直接本地运行,且容易忽视输入输出的表达。
代码示例
#leetcode版本#
class Solution(object):
def str8Split(self, s):
'''
type List[str]
rtype List[str]
'''
res = []
for i in range(2):
if len(s[i]) == 0:
continue
zero = len(s[i]) % 8
s[i] += '0' * (8 - zero) if zero > 0 else ""
for j in range(len(s[i]) // 8):
res.append(s[i][j * 8:j * 8 + 8])
return res
## 本地运行需要以下输入输出的补充
s = []
# input
for _ in range(2):
s.append(input())
# solve
solution = Solution()
res = solution.str8Split(s)
# output
for i in range(len(res)):
print(res[i])
[1] https://blog.csdn.net/qq_39938666/java/article/details/101004633
[2] https://www.runoob.com/python3/python3-built-in-functions.html