从用户输入创建一个字母数

从用户输入创建一个字母数

问题描述:

所以我创建一个单词和字母计数程序,并且我有倒数字的单词。字数应该允许用户输入他们想要的行数,然后在完成后按回车键,然后程序会告诉列表中有多少单词。我现在试图在程序上建立字母计数。我遇到问题,因为他们不在功能?我尽量保持简单,不要使用函数,因为我感到困惑。在我的代码中,它告诉我有0个字母。从用户输入创建一个字母数

这是到目前为止我的代码:

print("Enter as many lines of text as you want.") 
print("When you're done, enter a single period on a line by itself.") 

content = [] 
while True: 
    line = input() 
    if line == ".": 
     break 
    words = line.split() 
    content.append(words) 

words_list = [item for sublist in content for item in sublist] 
print("The number of words entered: " + str(len(words_list))) 

letter = sum(c.isalpha() for c in line) 
print("The number of letters used: " + str(letter) + "") 

在文字计数代码,您使用的是可变content它保存所有用户的列表的列表输入线。在您的字母计数代码中,您使用变量line,这是用户输入的最后一行。由于该行必须是“。”离开它,不具有任何字母循环从而你总是返回0,从单词列表应用你的信计数技术将每个单词,如:

letter = sum(c.isalpha() for word in words_list for c in word) 
+0

这似乎并没有给我一个完整的字母数。我不再得到一个零返回,但它就像不是所有的字母都被计算在代码中。 –

+0

@ Trev.Drumm我的不好。我有错误的顺序发生器表达式。它现在应该工作 – weirdev

content每个元素都似乎是自己的单元素列表。如果您拉出每个元素并加入它们,然后进行字符计数,您应该在letter中获得正确的值。

例如,输入foobar.

# output 
# The number of words entered: 2 

print(content) 
# [['foo'], ['bar']] 

letter = sum(c.isalpha() for c in ''.join([x[0] for x in content])) 
... 
# The number of letters used: 6 
+0

它可能工作。然而。一些解释总是有帮助的,特别是在SO上。 –