牛客网 python 输入刷题笔记

前言:最近在牛客网上刷题,我发现python的输入总是出问题,经常弹出您的结果和测试样例不一致。然后又看到很多程序员和我一样,对牛客网的输入搞不清楚是怎么一回事。于是我刷了一下午加一晚上的数字输入问题,得到答案,和大家分享!希望大家都拿到好offer!
刷题的网站如下:
https://ac.nowcoder.com/acm/contest/320?&headNav=www

1 牛客网的标准python输入(按照这个模式来,后面的都很简单)

牛客网 python 输入刷题笔记_第1张图片
首先,题目如图:要我从输入流中得到四个数字,从大佬那里学来的代码给大家整理好了:

import sys 
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

先看第一行 import sys,导入sys模块。sys模块下有一些方法,类什么的,我不知道。再看第二行中的sys.stdin,显然这是一个对象(我不知道是不是,我就当它是对象了),同时它又写在for循环的末尾,所以这是一个iterable——可迭代对象,它产生的效果是把字符串中的’\n’都去掉,只每一行,放进line中。第一次迭代,line(str类)实际上等于’1 5’,第二次迭代,line(str类)=‘10 20’。分别对两个字符串使用split()方法——split方法无参数,则默认以空格作为分隔符,返回a,a是一个列表对象,第一次迭代完成后,a=[‘1’,’‘5’],后面的操作就特别简单了,也就是用int函数将它们转化为可加减的int型。

2牛客网刷题遇到测试样例为通过率为0的技巧

牛客网 python 输入刷题笔记_第2张图片
如图是我编写的正确的代码,但是不是任何时候都可以得到正确的代码。我将第15行中的output_list改为output,这样会让程序出现error。但是此时编译器只会提示通过率为0%。其输出如下:
牛客网 python 输入刷题笔记_第3张图片
刚开始刷题的同学往往找不到问题所在,下午我特别发现了一个办法,先点击界面中的“自测”,得到如下界面:牛客网 python 输入刷题笔记_第4张图片
牛客网 python 输入刷题笔记_第5张图片
此时先点1:示例1,再点自我调适,即可在底端看见python中出现error的地方
牛客网 python 输入刷题笔记_第6张图片
先跟着图中3看懂错在哪里,然后想好对策即可点击4,回到编程界面!错在哪里都不知道的问题终于解决了!

3解决先输入数量,再输入数据问题的偷鸡方法

题目如下,要我先读入数据的量,也就是2组,或者更多。这只能读一个数字。后面是每一行2个数字,可以参考大标题1中的分割方法进行分割。本章主要解决单独输入的问题牛客网 python 输入刷题笔记_第7张图片
经过尝试,我发现使用input方法先读入这个2,然后输入字符串中‘’2\n’就已经消失在输入字符串中了,此事再用大神的方法进行分割,即可快速的秒杀该题目。

4刷题的答案

牛客网 python 输入刷题笔记_第8张图片
代码可以分享给大家:

import sys
output_list = []
for lines in sys.stdin:
    input_list = lines.split(' ')
    sum=0
    for vals in input_list:
        sum+=int(vals)
    output_list.append(sum)
length=len(output_list)
for i in range(length):
    if i<length-1:
        print(output_list[i])
    elif i==length-1:
        print(output_list[i])

看起来很复杂,其实还是1中的东西,一样的。学会这一套,换汤不换药。。

5 小结

经过一下午的努力,终于再也不会在输入中倒下了,7个输入题目全都做出来了,希望接下来能战胜华为的机考,也祝大家刷题愉快牛客网 python 输入刷题笔记_第9张图片
明天把字符串的做了,如果能做出来,还会继续来分享,感谢大家的观看。=.。=

你可能感兴趣的:(牛客网 python 输入刷题笔记)