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

来源:互联网 发布:iphone4s可以用4g网络 编辑:程序博客网 时间:2024/06/05 17:46

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

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

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

s1 = raw_input().upper()s2 = raw_input().upper()slist = list(s1)count = 0while s2 in slist:    slist.remove(s2)    count += 1print(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
原创粉丝点击