从用户输入创建一个字母数
问题描述:
所以我创建一个单词和字母计数程序,并且我有倒数字的单词。字数应该允许用户输入他们想要的行数,然后在完成后按回车键,然后程序会告诉列表中有多少单词。我现在试图在程序上建立字母计数。我遇到问题,因为他们不在功能?我尽量保持简单,不要使用函数,因为我感到困惑。在我的代码中,它告诉我有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)
答
在content
每个元素都似乎是自己的单元素列表。如果您拉出每个元素并加入它们,然后进行字符计数,您应该在letter
中获得正确的值。
例如,输入foo
,bar
,.
:
# 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上。 –
这似乎并没有给我一个完整的字母数。我不再得到一个零返回,但它就像不是所有的字母都被计算在代码中。 –
@ Trev.Drumm我的不好。我有错误的顺序发生器表达式。它现在应该工作 – weirdev