牛客网面试题输入输出的处理(python语言,包括readline()、strip()、split()的使用)

一、常见的输入类型:

推荐使用:sys.stdin.readline().strip().split())

1、基础知识:

readline() 会返回一个字符串

readline(size)从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。

strip() 只能用于移除字符串 开头和结尾 指定的字符(默认为空格或换行符)或字符序列
注意:strip() 只能删除开头或是结尾的字符,不能删除中间部分的字符

split() 默认分割所有的空字符,包括空格、换行(\n)、制表符(\t)等,返回分割后的字符串列表。

s.split(str="", num=string.count(str))
str --分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。如果第二个参数
num 有指定值,则分割为 num+1 个子字符串。

比如:

readline()

读字符

import sys
s = sys.stdin.readline(3)#读三个字符
print(s)
print(type(s))

结果为:

#readline
rea
<class 'str'>

读一行

import sys
s = sys.stdin.readline()#读一行
print(s)

结果为:

#readline
readline

读多行:

readline line
3 2 3
读 多
行
import sys
data = []
while True:
    s = sys.stdin.readline().strip()
    if not s:
        break
    data.append(s)
print(data)
#对比
# import sys
# data = []
# while True:
#     s = sys.stdin.readline().strip()
#     if not s:
#         break
#     s = list(s.split())
#     data.append(s)
# print(data)

结果为:

['readline line', '3 2 3', '读 多', '行']
#[['readline', 'line'], ['3', '2', '3'], ['读', '多'], ['行']]

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

结果为:

 8dajia8hao8
 dajia8hao
 dajia8ha

split()

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']

2、仅有一行:

2.1、字符串:

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

或者:

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

2.2、单个数字:

3
n=int(input())
#print(n) #结果为 3

或者:

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

注意:sys.stdin.readline()int(sys.stdin.readline())的区别

import sys
n = sys.stdin.readline()
b = int(n)
print(type(n))
print(type(b))

结果:

<class 'str'>
<class 'int'>

2.3、两个数字:

2 3
import sys
x, y = map(int, sys.stdin.readline().strip().split())
#print(x,y) #结果为 2 3

或者:

x, y = map(int, input().split())
#print(x,y) #结果为 2 3

2.4、多个数字:

2 3 6 4 8 9
import sys
data = list(map(int,sys.stdin.readline().strip().split()))
#print(data) #结果为 [2, 3, 6, 4, 8, 9]

或者:

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

3、第一行表示将会有多少行数据,下面各个行有单个数据

5
1 
5 
4 
7 
9 
n = int(input())
data = []
for i in range(n):
	b = int(input())
	data.append(b)
#print(data) #结果为 [1, 5, 4, 7, 9]

或者

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

4、第一行表示将会有多少行数据,下面各个行有多个数据(数字)

5
1 2
5 3
4 6
7 5
9 0
n = int(input())
data = []
for i in range(n):
	b = list(map(int,input().split()))
	data.append(b)
#print(data) #结果为[[1, 2], [5, 3], [4, 6], [7, 5], [9, 0]]

或者:

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) #结果为[[1, 2], [5, 3], [4, 6], [7, 5], [9, 0]]

或者

import sys
n = int(input())
data=[]
while True:
    line = sys.stdin.readline().strip()
    if not line:
        break
    tmp = list(map(int, line.split(" ")))
    data.append(tmp)
#print(data) #结果为[[1, 2], [5, 3], [4, 6], [7, 5], [9, 0]]

5、第一行表示将会有多少行数据,下面各个行有单个数据(字符串)

2
helloo
wooooooow
import sys
n = int(input())
#if __name__ == "__main__":
#    data = []
data = []
while True:
    line = sys.stdin.readline().strip()
    if not line:
        break
    data.append(line)
#print(data)  # 结果为['helloo', 'wooooow']
#print(" ".join(data))  #结果为 helloo wooooow

二、常见输出处理:

1.对于[‘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

若要求输出格式为1,2,3,4

print(',').join(a) # 结果为 1,2,3,4

2.对于循环输出多个数,两个数之间用空格隔开

代码:

a= ['1','2','3','4']
b = ''.join(a)
print(b)
for i in range(len(b)):
    print(b[i],end=' ')#b加空格
print()
for i in range(len(a)):
    print(a[i],end='')#a去空格

结果为

1234
1 2 3 4 
1234
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值