Python输入 raw_input()/input() 与 sys.stdin.readline()的不同

最近发现OJ中涉及字符串的问题用Python解要比Java简单得多,但是却在输入上遇到了麻烦:
题目描述:

写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
import sys
a = sys.stdin.readline( ).upper()
b = sys.stdin.readline( ).upper()
alist = list(a)
count = 0
while b in alist:
    alist.remove(b)
    count = count + 1
print(count)

上面的代码并不能ac
接着我用raw_input():

s1 = raw_input().upper()
s2 = raw_input().upper()
slist = list(s1)
count = 0
while s2 in slist:
    slist.remove(s2)
    count += 1
print(count)

ac了

顿时觉得纳闷,看了一下sys.stdin.readline()的输出才发现:

测试用例:
nhrwlbcc8m7c5hih9mhalw98k0322wf2jjm47kk3ntm9snfrflzzundn7d608usy049asxalzjk7izj6amcqhr8uubc04g52mcjboj2fmge2l6iarizfu4yve5o4i3srf5zgqbg82ckcotdeqp760mc9gzei5dzk5gj9x9yj05o3hle0ii64krkkp5i7blh7nbu3gu5vgi2scyn4yqx3z4vcjbyzhnqkh887izotjkg2l0mit0k14vyn39
你的输出为:
['N', 'H', 'R', 'W', 'L', 'B', 'C', 'C', '8', 'M', '7', 'C', '5', 'H', 'I', 'H', '9', 'M', 'H', 'A', 'L', 'W', '9', '8', 'K', '0', '3', '2', '2', 'W', 'F', '2', 'J', 'J', 'M', '4', '7', 'K', 'K', '3', 'N', 'T', 'M', '9', 'S', 'N', 'F', 'R', 'F', 'L', 'Z', 'Z', 'U', 'N', 'D', 'N', '7', 'D', '6', '0', '8', 'U', 'S', 'Y', '0', '4', '9', 'A', 'S', 'X', 'A', 'L', 'Z', 'J', 'K', '7', 'I', 'Z', 'J', '6', 'A', 'M', 'C', 'Q', 'H', 'R', '8', 'U', 'U', 'B', 'C', '0', '4', 'G', '5', '2', 'M', 'C', 'J', 'B', 'O', 'J', '2', 'F', 'M', 'G', 'E', '2', 'L', '6', 'I', 'A', 'R', 'I', 'Z', 'F', 'U', '4', 'Y', 'V', 'E', '5', 'O', '4', 'I', '3', 'S', 'R', 'F', '5', 'Z', 'G', 'Q', 'B', 'G', '8', '2', 'C', 'K', 'C', 'O', 'T', 'D', 'E', 'Q', 'P', '7', '6', '0', 'M', 'C', '9', 'G', 'Z', 'E', 'I', '5', 'D', 'Z', 'K', '5', 'G', 'J', '9', 'X', '9', 'Y', 'J', '0', '5', 'O', '3', 'H', 'L', 'E', '0', 'I', 'I', '6', '4', 'K', 'R', 'K', 'K', 'P', '5', 'I', '7', 'B', 'L', 'H', '7', 'N', 'B', 'U', '3', 'G', 'U', '5', 'V', 'G', 'I', '2', 'S', 'C', 'Y', 'N', '4', 'Y', 'Q', 'X', '3', 'Z', '4', 'V', 'C', 'J', 'B', 'Y', 'Z', 'H', 'N', 'Q', 'K', 'H', '8', '8', '7', 'I', 'Z', 'O', 'T', 'J', 'K', 'G', '2', 'L', '0', 'M', 'I', 'T', '0', 'K', '1', '4', 'V', 'Y', 'N', '3', '9', '\n']

原来readline()会将换行符也读取到,这样我读的第二行单字符也多加了一个\n,不得不能ac

所以raw_input()/input() (Python3中为input())返回的结果不包含末尾的换行符,而sys.stdin.readline()返回的结果包含了末尾的换行符\n

只要使用sys.stdin.readline( ).strip(‘\n’)便能去掉换行符达到目的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值