牛客网笔试输入输出的一堆坑。。(Python)

牛客网笔试的时候Python的输入输出是真的很坑,有时候线下自测案例是正常的,线上却怎么都调不过去,这里简单记录一下。

一、常见输入输出的写法

1、input

#直接使用input(),读取回来的是字符串,比如输入为“abds”,n就为“abds”
n = input()

▲需要注意的是input()是一行一行读取的,也就是每次只能读取一行,需要读取第二行的话要再调用一次input()。

当然很多时候我们输入是一个列表,我们可以用以下的方法将其分割为列表。

n_list = list(map(int, input().split(" "))) #int表示里面的值都是整数。

2、sys

可以用sys库来调用信息,但是要注意有时候可能会把换行符也读回来,需要去除。

import sys
for line in sys.stdin:
	s = line.split(" ")

二、输入中的一些坑

1、确定行数

其实最简单的读取思路,是将读取回来的每一个值保存到一个list中,然后再来调用,但是在实际使用中线下可以跑通,但是线上是怎么都运行不了,也没法打印debug(没有概念的可以去体验一次秋招笔试或者在牛客网上做一下模拟题)。

针对于这个比较坑的地方,需要把运行程序加入以下模板中(原因不知道。。反正跑不通加这个就可以跑通了)。

while 1:
    try:
		#your code
	except:
        break

如以下例子:
在这里插入图片描述
运行失败样例:
在这里插入图片描述

运行成功样例:
在这里插入图片描述

2、不定行数

可以先用一个list保存下来然后再打印出来。

all_list = []
while 1:
    try:
        s_list = list(input().split())
        all_list.append(s_list)
    except:
        break

▲此外有些不定行输入也可能不是输入成多行,可能是输入成一个很长的str,然后中间用空格之列的隔开。由于自测一般给的例子很简单比较坑,所以如果一直报错或者跑不过去可以考虑是否是这个原因。
 
 

三、输出中的一些坑

1、一行输出一个值

正常用print()就行,如print(result)

2、一行输出多个值

这个在平时接触的可能比较少,需要在一行打印n个值,然后用空格分割开,这里提供一个方法。

ret = [] #list of result
for i in range(m):
    if i < m-1:
        print(ret[i],end=' ')
    else:
        print(ret[i])

参考连接:
1、牛客网 多行输入输出问题 Python3 模板样例

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值