首页 > 解决方案 > 空白被忽略

问题描述

我做了一个有趣的程序,在一个句子中找到“爱”这个词,并列出有多少个“爱”。如您所见,有几个要求,“爱”必须是一个词。这意味着它必须用空格分隔或以标点符号结尾。我还解释了从句子开头开始的“爱”。

num_loves = 0
inpt = input('type ')
for star in range(len(inpt) - 3):
if inpt[star] == 'l' or 'L' and inpt[star+1] == 'o' and inpt[star+2] == 'v' and inpt[star+3] == 'e':
    if inpt == 'love' or 'Love':
        num_loves = num_loves + 1
    elif star == 0 and inpt[star+4] == ' ' or '.' or ',' or '!' or '?':
        num_loves = num_loves + 1
    elif star != 0:
        if inpt[star-1] == ' ' and inpt[star+4] == ' ' or '.' or ',' or '!' or'?':
            num_loves = num_loves + 1
if num_loves != 0:
   print(num_loves)
print('true')
   if num_loves == 0:
print('false')

虽然它很擅长发现“爱”,但它太棒了。当我输入“Iloveyou”时,它仍然找到了爱这个词,即使我不想要它。这正是我输入代码“inpt[star-1] == ' '”的原因。似乎python忽略了这部分。请帮忙。我正在使用python 3。

标签: pythonpython-3.x

解决方案


你把事情复杂化了,错过了一些带有标点符号之类的极端案例。有更简单的解决方案:

from collections import Counter
inpt = input('type ')  # "Love Love lovelovelove Love love lovelove Love love love love"
no_punct = ''.join( [i.upper() if i.isalpha() else ' ' for i in inpt] )
print Counter(no_punct.split())['LOVE']

输出:

8

推荐阅读