OJ在线编程常见输入输出练习
前言
牛客网的输入输出总是让我们很困惑,所以我们今天来聊一聊到底应该如何处理这些输入输出。以下实例均出自牛客网OJ训练场,我是用python完成下面训练,旨在说明如何用python读取固定或非固定长度的输入。
代码基于python3实现, 训练场链接如下:牛客网OJ训练场
一、python的标准输入输出
python的标准输入输出需要导入sys包,类似于c语言的#include<stdio.h>或c++的#include。
import sys
在python中,需要使用
sys.stdin.readline() # 同时还有read readlines函数
读入一行数据,类似于C的scanf函数或者C++的cin函数,readline读入用户输入的一行数据,通常以换行符作为结束。readline读入数据后,尾部是包含\n字符,需要手动去除。
1 import sys
2
3 data = sys.stdin.readline()
4 sys.stdout.write(data + " " + "lenght is " + str(len(data)) + "\n")
5 # print(data, "length is ", len(data))
代码实际输出如下(print打印的)
可以看出尾部包含了换行符,使用 strip() 函数可以去掉头尾的空格或换行符。标注输入的默认格式都是字符串形式,标准输出sys.stdout.write(arg1)将数据打印到控制台,print()函数也是在标准输出的基础上实现的。
标准输入还有两种实现:raw_input()和input()函数。
raw_input()函数是python2中的数据读取的一种方式,同时也提供input()函数,可以对输入的表达式进行计算。在python3中只提供input()函数读取用户输入的一行数据,input()使用起来要比stdin更加便捷,使用input()函数读入的数据不包含末尾换行符,可以简单理解i为nput()读入用户一行数据且无需额外调用strip()函数。
简单了解上面一些知识,即可顺利完成牛客网的OJ训练。下面开始进入正式训练阶段。
二、训练实例
1.A + B(1)
我这里直接截图进行说明,不打字了,偷懒一下下~
代码如下:
import sys
res = []
try:
while True:
data = [int(e) for e in input().split(' ')]
res.append(sum(data))
except:
for r in res:
print(r)
这道题的输入是不固定的,因此上述代码可以直接套用实际的面试题,读取未知长度输入数据。代码风格因人而异,如果大家有疑问可以先尝试,然后留言告诉我哈。
2.A + B(2)
题目如下图所示。
代码如下:
import</