【python & ACM 输入输出的处理:sys.stdin.readline().strip().split

【python & ACM 输入输出的处理:sys.stdin.readline().strip().split,第1张

python & ACM 输入输出的处理:sys.stdin.readline().strip().split())】 一、输入处理 按行读取数据
  • readline() 会返回一个字符串;
  • 如果指定了一个非负数的参数readline(size) ,则返回指定大小的字节数,包括 “\n” 字符。
    示例:

import sys
line1 = sys.stdin.readline(3)#读三个字符
line2 = sys.stdin.readline()#读一行
print(line1)
print(type(line1))
print(line2)
 # 若给定输入为: beautiful
 # 输出结果:
bea
<class 'str'>
beautiful

  • strip() 只能用于移除字符串 开头和结尾 指定的字符(一般是默认为空格或换行符)或字符序列
    示例:
a = ' 8dajia8hao8 '
b = a.strip()#移除字符串 开头和结尾  的空格或换行符
c = b.strip('8')#移除字符串 开头和结尾  的指定的字符'8'
d = b.strip('o8')#移除字符串 开头和结尾  的指定的字符序列'o8'
print(b)
print(c)
print(d)
# 结果为:
# 8dajia8hao8
# dajia8hao
# dajia8ha
  • split() 默认分割所有的空字符,包括空格、换行(\n)、制表符(\t)等,返回分割后的字符串列表。
    示例:
s = "I love you"
print(s.split())#以空格为分隔符
print(s.split('0'))#以o为分隔符
print(s.split('o',1))#以o为分隔符,分成2个
print(s.split('y'))#以y为分隔符
# 运行结果:
['I', 'love', 'you']
['I l', 've y', 'u']
['I l', 've you']
['I love ', 'ou']

获取输入的单行数据
  • 字符串
输入:'abdc'

import sys
line = sys.stdin.readline()
#print(line) #结果为 'abdc'

###### 或者
n = input()
#print(n) #结果为 'abdc'

  • 单个数字
输入: 5
n=int(input())
#print(n) #结果为 5

import sys
n = int(sys.stdin.readline())
#print(n) #结果为 5

  • 注意:sys.stdin.readline()和 int(sys.stdin.readline())的区别
sys.stdin.readline()
<class 'str'>
int(sys.stdin.readline())
<class 'int'>
获取输入的单行多个数据
  • 两个数值
输入 : 5 6
import sys
x, y = map(int, sys.stdin.readline().strip().split())
#print(x,y) #结果为 5 6
# 或者
x, y = map(int, input().split())
#print(x,y) #结果为 5 6

  • 单行多个数值
单行输入:2 3 6 4 8 9
import sys
data = list(map(int,sys.stdin.readline().strip().split()))
print(data)
# print(data) #结果为 [2, 3, 6, 4, 8, 9]

## 或者
data=list(map(int,input().split(" ")))
print(data)
#print(data) #结果为 [2, 3, 6, 4, 8, 9]

  • map函数的原型是map(function, iterable, …),它的返回结果是一个列表。

    • 参数function传的是一个函数名,可以是python内置的,也可以是自定义的。
    • 参数iterable传的是一个可以迭代的对象,例如列表,元组,字符串这样的。
    • python中的map函数是python中的内置函数,map函数会根据提供的函数对指定序列做映射,map函数的第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表:其实就是对可迭代的对象中的每一个元素调用function函数并将函数处理的结果转为列表返回。
    • 在蓝桥杯的杯赛中经常要使用这个函数对输入的数据转换为int类型的数据:a,b = map(int, input().split())
获取输入的多行多个数据
  • 第一行表示将会有多少行数据,下面各个行有单个数据
# 输入				'''
				3
				5  
				7 
				9
				'''
# 方法1
n = int(input())
data = []
for i in range(n):
	b = int(input())
	data.append(b)
print(data)
#print(data) #结果为 [5, 7, 9]

# 方法2 
import sys
n = int(input())
data = []
for i in range(n):
 	b = int(sys.stdin.readline().strip())
 	data.append(b)
#print(data) #结果为 [5, 7, 9]

  • 第一行表示将会有多少行数据,下面各个行有多个数据(数字)
'''
输入:
			3
			5 3 4
			4 6 6
			7 5 9
'''
# 方法1
n = int(input())
data = []
for i in range(n):
	b = list(map(int,input().split()))
	data.append(b)
print(data)
#print(data) #结果为[[5, 3 ,4], [4,6, 6], [7, 5,9] ]

# 方法2 
import sys 
n = int(input())#strip()方法只能用于移除字符串 开头和结尾 指定的字符(默认为空格或换行符)或字符序列
data = []
for i in range(n):	
	b = list(map(int,sys.stdin.readline().strip().split()))
	data.append(b)
print(data)
#print(data) #结果为[[5, 3 ,4], [4,6, 6], [7, 5,9] ]

  • 第一行表示将会有多少行数据,下面各个行有单个数据(字符串)
'''
	输入:
					3
					I
					LOVE
					YOU
'''
import sys
n = int(input())
data = []

for i in range(n):
    line = sys.stdin.readline().strip()
    if line == r'':  # 等价于 if not line:
        break
    data.append(line)
print(data)
print(" ".join(data))

#print(data)  # 结果为['I', 'LOVE', 'YOU']
#print(" ".join(data))  #结果为: I LOVE YOU


二、输出处理
  • [‘1’,‘2’,‘3’,‘4’] 这样的格式要求变成1 2 3 4 5
a= ['1','2','3','4']
print(''.join(a)) #引号里没空格,结果为 1234
print(' '.join(a)) #引号里有空格,结果为 1 2 3 4
print(','.join(a)) #引号里有空格,结果为 1,2,3,4
  • 或者循环输出
a= ['1','2','3','4']
for i in range(len(a)):
    print(a[i],end=' ')
#输出: 1 2 3 4 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/873576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存