如何在python中逐个字符地比较句子?

时间:2016-04-12 15:15:22

标签: python python-2.7 string-comparison

我想编写一个代码,通过使用字符比较计算给定句子中的单词数量,下面是我编写的代码,因为我不允许使用像split()等一些花哨的实用程序。所以,可以你请指导我在哪里犯错误'我是python的新手,目前正试图通过字符比较来确定如何进行特征化,以便找出使用内置utitilites的单词,行,字符串的简单计数。所以,请指导我。

输入句子:我是XYZ

Input_Sentence = raw_input("Enter your sentence: ")
print Input_Sentence
count = 0
i=0
while(Input_Sentence[i] != "\n"):
    if(Input_Sentence[i] == ' '):
        count=count+1
        i+=1
    else:
        i+=1
print ('Number of Words in a given sentence is :'      +str(count))

4 个答案:

答案 0 :(得分:3)

首先,我不会在此上下文中使用while循环。为什么不使用for循环?

for char in Input_sentence:

这样你就可以遍历每一个字母。 然后你可以使用其余的代码并检查:

if char == ' ':

答案 1 :(得分:1)

scipy.optimize.leastsq()

答案 2 :(得分:0)

如果在句子的开头或结尾有空格,以下内容将避免错误。

Input_Sentence = raw_input("Enter your sentence: ")
print Input_Sentence

count = 0
sentence_length = len(Input_Sentence)
for i in range(sentence_length):
    if Input_Sentence[i] == " ":
        if i not in (0, sentence_length - 1):
            count += 1
count += 1
print "There are %s words in the sentence \"%s\"." % (count, Input_Sentence)

答案 3 :(得分:0)

您可以使用try-except语法。

在您的代码中,您使用while(Input_Sentence[i] != "\n")来查找句子何时结束。如果您只是在i+ = 1之前的每一步打印输出:

...
while(Input_Sentence[i] != "\n"):
   ...
        print i,Input_Sentence[i]
        i+=1
    else:
        print i,Input_Sentence[i],'*'
        i+=1
...

你可以自己看到输出是这样的:

Enter your sentence: Python is good     
Python is good
0 P *
1 y *
2 t *
3 h *
4 o *
5 n *
6  
7 i *
8 s *
9  
10 g *
11 o *
12 o *
13 d *
Traceback (most recent call last):
  File "prog8.py", line 19, in <module>
    while(Input_Sentence[i] != "\n"):
IndexError: string index out of range

这意味着您编写的代码可以正常工作,直到输入句子的长度。之后,当i增加1时,要求代码检查Input_Sentence[i] == "\n"是否为IndexErrortry使用Python的异常处理工具可以克服这个问题。如果它是异常并且在except内执行该块,则选择忽略Input_Sentence = raw_input("Enter your sentence: ") print Input_Sentence count = 0 i=0 try: while (Input_Sentence[i] != "\n"): if (Input_Sentence[i] == ' '): count=count+1 i+=1 else: i+=1 except: count = count+1 print ('Number of Words in a given sentence is :' +str(count)) 内的块。

{{1}}