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

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 输入多个数
>>> 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]
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]]
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]]

input()

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

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

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

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)
  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值