我想编写一个代码,通过使用字符比较计算给定句子中的单词数量,下面是我编写的代码,因为我不允许使用像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))
答案 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"
是否为IndexError
。try
使用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}}