2017-11-11 159 views
0

所以我創建一個單詞和字母計數程序,並且我有倒數字的單詞。字數應該允許用戶輸入他們想要的行數,然後在完成後按回車鍵,然後程序會告訴列表中有多少單詞。我現在試圖在程序上建立字母計數。我遇到問題,因爲他們不在功能?我儘量保持簡單,不要使用函數,因爲我感到困惑。在我的代碼中,它告訴我有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) + "") 

回答

1

在文字計數代碼,您使用的是可變content它保存所有用戶的列表的列表輸入線。在您的字母計數代碼中,您使用變量line,這是用戶輸入的最後一行。由於該行必須是「。」離開它,不具有任何字母循環從而你總是返回0,從單詞列表應用你的信計數技術將每個單詞,如:

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

這似乎並沒有給我一個完整的字母數。我不再得到一個零返回,但它就像不是所有的字母都被計算在代碼中。 –

+0

@ Trev.Drumm我的不好。我有錯誤的順序發生器表達式。它現在應該工作 – weirdev

-1

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上。 –