目录
✨前言
在我们参加算法大赛时,会遇到各种各样的输入输出数据。而我们可能会因为想着怎么样去接收这些输入输出而拖延做题时间,因此,掌握一些基础的输入输出手段是必要的!
✨输入
我们都知道Python中使用input()函数来接收输入,那我们如何灵活运用input()函数呢?
✨✨单行单输入
要求一:输入一个字符串。
s = input()
这便是最简单的输入了。input()函数接收数据默认是str类型的
要求二:输入一个整数。
n = int(input())
我们可以直接使用int()函数进行数据转换,但是前提是保证输入的数据可以转换成对应的整形,不然程序会报错,但是在比赛时不用考虑报错情况,因为比赛会保证输入可以转换。
✨✨单行多输入
要求一:输入两个字符串,S串和T串,使用空格隔开。
s, t = map(str, input().split())
在单行多输入时,若该行的每一个数据都有单独的含义,如输出是S串和T串,我们可以使用map()来逐一赋值,输入数据使用split()分割函数来预处理,在逐一赋值。
要求二:输入两个整形,n和m,使用/隔开。
n, m = map(int, input().split("/"))
不难看出,map()函数有两个参数,一个是数据类型,一个是要迭代的数据,而split()函数也是有一个默认参数的,你传入了什么就以什么为标准进行分割,如没有传参的话,会默认对空格进行分割,值得注意的是,split(" ") ≠ split(),如果是比赛不建议特意使用split(" "),因为split()是对数据内部的所有空格都分割,不管是一个空格还是多个空格,一律分割,但是你传入单空格就是指定对单空格进行分割,是不会对多空格进行分割的,而有些题目输入的空格数并不一定是都是一个的(少部分),除非特殊要求,不然直接写split()即可。
✨✨多行单输入
要求:输入n行,每行输入一个数据。
刚看到这个要求的时候是不是觉得很奇怪?这个跟单行多输入有什么区别?其实真没啥区别,只不过是输入的格式不一样罢了,那我们怎么写代码呢?
方法一(不推荐):
既然是多行输入,每一行只需要输入单个数据,那我整个for循环不就可以了?说写就写!
n, data = int(input()), []
for i in range(n):
data.append(input())
我们先接收n这个整形,表示我们接下来输入多少行数据,再创建一个新列表data用于存储一会要接收的数据,再使用一个for循环进行接收,这三行代码是可以满足我们输入的要求的,但是会不会显得太冗余了?那我们接下来写个高级点简短点的!
方法二(推荐的啦!):
使用推导式可以让我们的代码看起来更加的简洁美观高端大气上档次~嘻嘻~
n = int(input())
data = [int(input()) for _ in range(n)]
同样的,我们先接收有多少行数据,我们直接创建data数据数组,在data数组里面直接把数据全部接收,不需要再逐一添加至data数组,int(input())意思是输入的单行数据直接转换成整形,for _ in range(n)就是前面的操作重复n次,_也是变量名,使用其他的代替也可以的。
✨✨多行多输入
要求:输入多行数据,每行数据又有若干个数据,使用空格隔开
在多行单输入时,我们简单使用了推导式对代码的简化,那么在多行多输入时,我们是否也能使用推导式让我们的代码变得高大上那样呢?答案时肯定的!
方法一(不推荐):
n, data = int(input()), []
for i in range(n):
data.append([i for i in input().split()])
我们简单的解析一下,n,data都知道,for循环也知道,append()函数里面时什么呢??是不是很眼熟??没错,它就是我们在单行多输入的时候使用到的语句,而在上一小节多行单输入时我们使用了推导式来简化代码,那多行多输入自然也可以,马上开写!
方法二(推荐推荐):
n = int(input())
data = [[i for i in input().spliut()] for _ in range(n)]
是不是看起来感觉就不一样?是不是显得又优雅又深奥?其实很简单!南墙今天教你了!
第二句语句可以直接实现输入一大堆数据的需求!
这篇帖子就到此结束啦!
如果你坚持看到这里,你对比赛的大多数输入需求都可以解决了!
✨输出
Python使用print()函数来输出内容,你掌握了吗?跟着南墙重温一次吧!
✨✨输出格式
print(11, 13, sep=".", end="")
这句代码就包含了我们输出时经常能用到的参数,object参数,sep参数,end参数,object参数就是我们要输出的数据对象,sep参数是指定在输出一个数据后输出的字符,end参数则为本次print()函数全部输出后输出的字符。
关于输出的要求什么的比较简单,这样就不多讲了。
篇幅有限~感谢您看到最后,谢谢您的欣赏!
制作不易,如果你在南墙的帖子里学到了一点点东西,那请给南墙一个小小的点赞支持一下吧!