最近发现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’)便能去掉换行符达到目的