2016-11-23 69 views
0

所以,我是一个编程初学者。我正在尝试创建一个用户可以输入句子的程序,程序会告诉用户该句子中有多少个字母。Python编程字符串处理函数

counter=0 

wrd=raw_input("Please enter a short sentence.") 

if wrd.isalpha(): 
counter=counter+1 
print "You have" + str(counter) +"in your sentence." 

当我输入这个时,我的输出是空白的。这个计划中我的错误是什么?

+0

你有没有缩进'计数器=计数器+ 1'我想。除此之外,你并不完全使用循环 – martianwars

+0

你可以使用'len()'吗?这是做你所描述的最简单和最快的方法。当然,你仍然需要从你的句子中滤除所有的非字母。 –

回答

0

首先为@kalpesh提到,声明counter=counter+1应当缩进。

其次,您需要迭代输入的整个字符串,然后计算字符数或任何您需要的逻辑。

counter=0 

wrd=raw_input("Please enter a short sentence.") 

for i in wrd: 
    if i.isalpha(): 
     counter = counter+1 

print "You have " + str(counter) +"in your sentence." 

一旦你开始学习更多,那么你可以使用下面的代码,

counter=[] 
count = 0 
wrd=raw_input("Please enter a short sentence.") 

counter = [len(i) for i in wrd.split() if i.isalpha()] 

print "You have " + str(sum(counter)) +"in your sentence." 

我只是拆分单词,然后检查它是否是字母或不使用列表解析来遍历在输入的字符串上。

0

wrd.isalpha()返回一个布尔值(true或false)。所以如果函数返回true,counter = counter + 1将会被调用一次(并且只会被调用一次)。您需要遍历每个字母的每个字母,并调用isalpha()。

1

您需要在if块内缩进代码。在你提供的代码中,你忘记了缩进counter = counter + 1

您错过了wrd所有字符的循环。试试这个,

所有的
counter = 0 
wrd = raw_input("Please enter a short sentence.") 
# Iterate over every character in string 
for letter in wrd: 
    # Check if the letter is an alphabet 
    if letter.isalpha(): 
    # Increment counter only in this condition 
    counter += 1 

print "You have " + str(counter) + " in your sentence." 
0

您可以使用replace()从句子中删除空格,然后使用len()来获取句子中有多少个字符。

例如:

sentence = input("Type in a sentence: ") # Ask the user to input a sentence 
sentence = sentence.replace(" ", "") # Replace the spaces in the sentence with nothing 
print("Your sentence is " + str(len(sentence)) + " characters long") # Use len() to print out number of letters in the sentence