python中的标准输入和输出问题

   首先笔者是刚入门的新手小白,所以下述文章中有不够严谨或者错误的地方恳请大家在下面评论指正。至于写这篇文章的动机是笔者目前正在牛客网上在练习编程题,一般都需要用到标准的输入和输出格式。查遍所有的博客也没有笔者所需要的关键信息,故自己动手写了一篇。
   首先我们需要明确所谓的标准输入和输出是指sys模块中的stdin(输入)和std.out(输出)命令,所以再次之前需要导入模块,如下
import sys
关于sys.stdin与input的区别,这里就不再赘述,感兴趣的童鞋可以参见下面这篇博客

https://blog.csdn.net/baidu_39140291/article/details/81588981
以及
https://www.jianshu.com/p/494804088639

接下来我们主要说一下使用sys.stdin和sys.stdout中所遇到的问题以及解决方法
首先看关于sys.stdin的用法,前面说到了,这是一个标准的输入,所以并不需要input了,看下面这段代码
# 标准输出
import sys  # 导入sys模块
print("请输入你的名字:")
name = sys.stdin.readline()  # 只读取了一行的内容
print("Hello,", name)

注意,
1,在牛客网等在线编程的网站或者平台上,所有数据都是从控制台得到的(通俗的说就相当于我们本地进行输入,只不过输入台并不需要你人工输入),输入台禁止一切读写文件的操作
2,我们一般使用sys.stdin.readlin()来读取数据,运行结果如下
输入张三之后直接回车即可
这样很好,挺符合我们的要求的,但是当输入的数据有多行时,就会出现问题了,比如
输入张三以后按住shift+回车输入李四,再回车就有结果了
这与我们想要的结果并不一样,这是因为sys.stdin.readlin()只能读取一行数据

那么问题来了,要读取多行数据怎么办呢?
既然一次只能读一行,那么多行数据就不停地重复读取(一行一行的读取)就好了吗,所以这里我们借助一个简单的循环就可以实现,代码如下

import sys
# 这里考虑一行数据里有多个数据,所以我们用二维list来进行存储
num = [[0 for col in range(0)] for row in range(2)]
s = sys.stdin.readline().strip()  # 得到第一行的数据
for i in range(2):
    temp = s.split()  # 删掉字符串的首尾空格
    num[i] = list(range(len(temp)))
    for kk in range(len(temp)):
        num[i][kk] = int(temp[kk])
    s = sys.stdin.readline().strip()
print("num=", num)

注意

1.这里我们假设已经知道数据有多少行,上面举例是2行,如果是n行就把上面的range(2)改为range(n)即可(第三行和第五行)
2. 上面的num使用来存储数据的,初始化的样子如下
. num的初始化形式
运行结果如图
在这里插入图片描述
至此,我们的读取工作就已经完成了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值