简单总结一下python 2.x 的输入输出方式,如使用了sys模块需要先import sys导入。
1. 输入为一个int类型的数据
n = input()
2.输入为字符串
arr = raw_input(),此时得到的为字符串本身,如输入adae,得到的是字符串'adae'。
arr = sys.stdin.readline(),若采用这种方式,此时得到的为'adae\n’,末尾多了一个换行符,需要把这个换行符截断,一般直接采用arr = sys.stdin.readline().strip('\n'),即可得到正常的输入字符串
3.输入为一行int类型数据,如 2 4 5 6 7
arr = map(int, raw_input().split())
arr = map(int, sys.stdin.readline().strip('\n').split())
首先用split将输入的字符串按空格分开,split默认分隔方式为空格,可针对输入数据格式调整,如输入为2,4,5,6,7,用逗号隔开,那么这里可以使用split(',')。map函数则是根据提供的函数(这里的函数是int函数),对制定序列做映射(这里的序列是将输入字符串按空格分割的结果),上面的使用方式,左右是把分割后的列表逐元素映射为int类型,即可得到包含一行输入元素的列表。
4.多行输入
可采用lines = sys.stdin.readlines(),一次性读取多行输入。再使用for line in lines处理每一行输入,但要注意,这里的line会包含末尾的'\n’换行符,要进行处理,line = line.strip('\n‘),再进行后续处理。这种适合牛客网的在线编程,但在本地IDE调试程序时,不要使用这样的方式,程序会一直读取输入。
牛客网官方建议方式为:
import
sys
try
:
while
True:
line = sys.stdin.readline().strip()
if
line ==
''
:
lines = line.split()
print
int
(lines[
0
]) +
int
(lines[
1
])
except:
pass
输出方式:
在线编程题常要求输出结果序列,如 2 3 4 5,或2345(将结果list中的元素拼接在一起,常出现在求几个数组合起来形成的最大数或最小数)
对于第一种,以空格形式隔开,若输出list为res,那么可采用" ".join(map(str, res)),双引号内为空格.
若为第二种,中间没有空格隔开,那么就直接采用“”.join(map(str, res)).
以上要求条件是res为数值形式的list,如res = [3, 4, 5]。若为str类型的list,就不用转换了,直接"".join(res),如res = ['a', 'b', 'd']。