2017-11-11 16 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을 사용합니다. 그 줄은 "."이어야합니다.

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

이 나에게 전체 문자 수를 제공하지 않는 것 같습니다. 더 이상 0이 반환되지는 않지만 모든 문자가 코드에서 계산되는 것은 아닙니다. –

+0

@ Trev.Drumm 제 잘못입니다. 나는 잘못된 순서로 발전기 표현을했다. 이제 작동해야합니다 – weirdev

-1

content의 각 요소는 자신의 단일 요소 목록이 나타납니다 : 그것은 어떤 문자를 가지고 결코 루프를 떠나, 따라서 당신은 항상 0이 같은 단어 목록에서 각 단어에 편지 계산 기법을 적용 돌아갑니다. 각 요소를 꺼내 결합한 다음 문자 수를 계산하면 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

작동하지 않을 수 있습니다. 하나. 어떤 설명이 항상 도움이됩니다. –