单行输入- input()
input
将所有输入当做字符串str处理
# 单行最后没有'\n'
>>> message = input()
zhang zi wen 2020-09-30
>>> message
'zhang zi wen 2020-09-30' # 不是 'zhang zi wen 2020-09-30\n'
多行输入- sys.stdin.readlines()
readlines()
返回列表list, 每一行是一个字符串str:
import sys
lines = sys.stdin.readlines()
print(lines)
输入:
zhang zi wen
23
ok
you
输出:
# 最后一个输入没有'\n'
['zhang zi wen\n', '23\n', 'ok \n', 'you']
或者将所有输入的行放在一个列表中:
import sys
list = []
# sys.stdin.readlines将所有行读取为一个list, 等效下面的形式
for line in sys.stdin:
list.append(line.split())
print(list)
其他
- sys.stdin.readlines()方法结束
Window系统: Ctrl + Z + Enter
Linux系统: Ctrl + D + Enter
- split()方法默认的分隔符是
空字符
,空格
,制表符tab
和回车\n
.
>>> 'zzw '.split()
['zzw']
>>> 'zzw\n\n'.split()
['zzw']
>>> 'zzw'.split('w')
['zz', '']
>>> 'zzw '.split(' ')
['zzw', '', '']
>>> 'zzw\n'.split('\n')
['zzw', '']
- 类似地,
strip()
方法去除的同样是空格
,制表符
和回车\n
.
>>> 'zzw'.split()
['zzw']
>>> 'zzw\n'.strip()
'zzw'
>>> 'zzw\n\n '.strip()
'zzw'
>>> ' \n zzw\n '.strip()
'zzw'
- 我的常用写法
import sys
inputs = [line.split() for line in sys.stdin]
得到
>>> import sys
>>> [line.split() for line in sys.stdin]
5 19
1 10 20 30 50
[['5', '19'], ['1', '10', '20', '30', '50']]
- 常用处理方法一: 空格隔开
3 4
9 8 10 8
7 9 10 8
9 10 8 7
处理方法
inputs = [int(line.split()) for line in sys.stdin.readlines()[1:]]
>>inputs
9 8 10 8
7 9 10 8
9 10 8 7
- 常用处理方法二: 逗号隔开
3,4
9,8,10,8
7,9,10,8
9,10,8,7
处理方法
inputs = []
for line in sys.stdin:
inputs.append([*map(lambda x: int(x.strip()), line.split(','))])
inputs = inputs[1:]
>> inputs
9 8 10 8
7 9 10 8
9 10 8 7