我们一般在牛客网刷题的时候不可避免的要从控制台读取数据,那么今天这篇博客就主要讲讲如何读取,读取数据之后才可以进行接下的操作。
当输入的数据只有一行时,比如题目要求输入如下数据(中间用一个空格隔开)
1 2 3 5 6 9 12 3
读取单行数据相对比较简单,一行命令就可以了
x=input()
注:变量x就指向输入的那行数据
简单看一下运行的结果
接下来的一段话可能有些啰嗦,可以跳过
————————————————————————————
在这里我们看到,当输入命令x=input()
(也就是input函数),按下回车,即开始像控制台输入数据,输入完成后按下回车即可结束输入过程。值得注意的是,我们要知道通过命令x=input()
得到的变量x的类型是str
型,即字符串型,并且在输入过程中的空格也保留了,所以这就是为什么访问x[1]
的结果是空格而不是2了,因为1与2在输入时中间有一个空格(之前已经说明了,当然没有空格的话最后得到的x里面也不会有空格)。那么问题来了,当我不想要空格的时候怎么处理呢?我们已经知道input函数返回的是string型,所以可以借助字符串的split方法来解决
————————————————————————————
或者我们使用另外一种办法
x=input().split()
示例
这样得到的x是一个列表,并且列表中没有空格(不管输入数据之间有多少个空格)
注:实际上就是简单的input函数和字符串的split方法的结合
一般复杂的问题都是需要输入多行数据,比如要输入如下几行数据
1 2
5 6 8 9
1 2 3 6 9 12
我们可以借助如下命令
import sys
result=[]
for line in sys.stdin:
list_new=line.split()
result.append(list_new)
print(result)
注意这里需要用到sys模块,主要用到了sys.stdin方法(感兴趣可以自行百度看看),循环体内的list_new是读取的每一行数据(类型是一个list,因为split方法返回的是list类型),并将每一行加入到最后的结果中,循环结束即读取完成。下面看一个例子
将上述代码放到新的.py
文件中,输入数据,按回车可以另起一行输入,最终输入完成后,按住ctrl+d
结束输入即可。
上面要注意的是列表中的每个元素都是一个str类型,这一点在处理数据的时候要格外注意。可以稍微加工一下
注意上面多了一行代码,目标是将列表中的元素从str类型变成int型,这样方便我们处理。
————————————————————————————
一个简单的问题好像说的很啰嗦了,哈哈哈,但是这毕竟是一个十分基础且重要的步骤。