[Python]一个句子中有多个单词,单词之间可能有一个或多个空格。给定一个字符,请计算该字符在每个单词中的出现次数。 本题目不区分大小写字母。例如,字符A与字符a在单词Abandon中的......

描述

一个句子中有多个单词,单词之间可能有一个或多个空格。给定一个字符,请计算该字符在每个单词中的出现次数。 本题目不区分大小写字母。例如,字符A与字符a在单词Abandon中的出现次数都认为是2。 本题目有多组输入数据。

输入

第一行一个整数n,表示数据组数;
接下来共2n行,每两行为一组:
每组中第一行为给定的字符,保证为小写或大写字母;
每组中第二行为输入的句子,保证只由大小写字母或空格组成,且第一个单词前与最后一个单词后都没有空格。

输出

n行,每行若干个整数,表示句子的每个单词中,给定字符的出现次数。
每行的相邻整数之间用一个空格分隔。

行末多输出了空格没有关系

样例输入

3
a
Abandon that
B
Bob  is   the  BIG BOSS
z
Zelda   ZZZ

样例输出

2 1
2 0 0 1 1
1 3

代码如下:

n=int(input())
for i in range(n):
    s1=input().lower()
    s2=input().lower().split()
    for j in range(len(s2)):
        count=0
        for k in range(len(s2[j])):
            if s2[j][k]==s1:
                count+=1
        print(count,end=" ")
    print()

tips:

1.这道题需要对每个单词分别计算给定字符的出现次数,并且不区分大小写。为了比较方便地进行大小写不敏感的匹配,我们可以先将句子和字符都转化为大写或小写形式,然后再进行匹配,这里我们使用lower()函数将字符转换为小写。 

2.if s2[j][k]==s1:这里不要写成了s2[k],会超出数组长度的,因为s2[]第一个括号是给j变量的,它来表明是哪个单词,即s2[j],在这个基础上我们再加上[k],用k变量来遍历s2[j]中的每个字符,即s2[j][k]。我们带入题目看就很容易发现错误,样例输入第一行有两个单词,for k in range(len(s2[j])):,而这个循环的截止是到len(s2[j])-1,第一行的第一个单词长度为7,假如写成了s2[k],当s[2]时就会超出数组长度,程序会报错。因为s2的长度为2。

你可能感兴趣的:(python,开发语言,算法)