牛客网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 sys
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值