当前位置:   article > 正文

Python获取输入:sys.stdin与input()_python input 与sys.stdin

python input 与sys.stdin

sys.stdin

  • python3中使用sys.stdin.readline()可以实现标准输入,其默认输入的格式是字符串,如果是int,float类型则需要强制转换。
  • sys.stdin.readline() 每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象;
  • sys.stdin.readline() 会读取末尾'\n',加.strip(),去掉回车符,同时去掉前后的空格。
  • read([size])从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象。
  • readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
1. 输入一行
1.1 输入一个数或字符
>>> import sys
#输入一个字符(串)
>>> str=sys.stdin.readline()
abc
>>> print(len(str))
4
>>> str=sys.stdin.readline().strip()
>abc
>>> print(len(str))
3
#输入一个数
>>> num=sys.stdin.readline().strip()
921
>>> print(len(num))
3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
1.2 输入多个数
>>> import sys
>>> num=sys.stdin.readline()
1 2 3
>>> print(len(num))
6
>>> type(num)
<class 'str'>
>>> num=sys.stdin.readline().strip()
1 2 3
>>> print(len(num))
5
>>> print(num)
1 2 3
>>> num=sys.stdin.readline().split()
1 2 3
>>> print(len(num))
3
>>> print(num)
['1','2','3']
>>> type(num)
<class 'list'>
>>> a,b,c=sys.stdin.readline().split()
1 2 3
>>> print(a)
1
>>> print(len(a))
1
>>> type(a)
<class 'str'>
#转换为int类型
>>> num=[int(n) for n in sys.stdin.readline().split()]
1 2 3
>>> print(num)
[1,2,3]
>>> a,b,c=[int(n) for n in sys.stdin.readline().split()]
1 2 3
>>> a
1
>>> num=map(int,sys.stdin.readline().split())
1 2 3
>>> print(num)
<map object at 0x000000D6BEFE89E8>
>>> num=list(num)
>>> print(num)
[1,2,3]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
2. 输入多行
2.1 行数已知
>>> import sys
#已知行数n,一行有任意个字符字符串都可以
#示例1
>>> seq[]
>>> for i in range(n):
... 	line=sys.stdin.readline().strip()
... 	value=list(map(int,line.split()))
...		seq+=value
...
1 2 3
2 4
>>> print(seq)
[1,2,3,2,4]
#示例2
>>> ans=[]
>>> for i in range(n):
...     line=list(map(int,sys.stdin.readline().split()))
... 	ans.append(line)
...
1 2 3
2 4
>>> print(ans)
[[1,2,3],[2,4]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
2.2 行数未知
#示例1
>>> seq=[]
>>> while 1:
... 	line=sys.stdin.readline().strip() #line此时是字符串列表,并已去掉前后空格、回车符
... 	if line:
... 		line=list(map(int,line.split()))
... 	else:
... 		break
... 	seq.append(line)
... print(seq)
#示例2
>>> lines=sys.stdin.readlines()
3
2 3
3 5
1 4
7 8 9
^Z
>>> print(lines)
['3\n','2 3\n','3 5\n','1 4\n','7 8 9\n']
>>> n=lines[0].split()
>>> print(n)
2
>>> seq=[]
>>> for line in lines[1:-1]:
... 	if not line.split():
... 		continue
... 	l=list(map(int,line.split()))
... 	seq.append(l)

>>> print(seq)
[[2,3],[3,5],[1,4]]
>>> ab=list(map(int,lines[-1]).split()))
>>> print(ab)
[7,8,9]
#示例3
>>> seq=[]
>>> for line in sys.stdin:
...     nums=line.split()
...     if int(nums[0])==0:
...         break
...     else:
...         seq.append(list(map(int,line.split())))
...
2 3
3 5
0
>>> print(seq)
[[2,3],[3,5]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

input()

1.一行输入
1.1 输入一个数/字符串
>>> s = input()#一个字符
abc
>>> num=int(input())#一个数字
23
>>> print(s,num)
abc 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
1.2 输入一个数组
>>> nums = [int(i) for i in input().split()]
11 15 18 21
>>> print(nums)
[11,15,18,21]
  • 1
  • 2
  • 3
  • 4
2. 两行输入

  两行读取要在一行读取的基础上再进行一些操作。这里举个例子,假设第一行输入数组长度,第二行输入数组,那么读入操作分两步,首先获得数组长度,然后获取数组。

>>> s = input()
>>> if s != "":
... 	length = int(s)
...     nums = [int(i) for i in input().split()]
...     print(length, nums)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
3. 多行输入
>>> data = []
>>> length = int(input())
>>> n = 0
>>> while n < length:
...     s = input()
...     if s != "":
...         temp = [i for i in s.split()]
...         data.append(temp)
...         n = n + 1
...     else:
...         break
>>> print(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/361083
推荐阅读
相关标签
  

闽ICP备14008679号