2015-11-15 2 views
0

это мой первый пост, и я только начинаю программировать на Python.Python подсчет символов каждой строки в словаре

Итак, для задания я должен проанализировать текст, указав количество содержащихся в нем слов, а затем, указав, сколько слов содержит n символов.

Это то, что я придумал, но мой n для количества символов ограничен ... и должен быть более элегантный способ сделать это.

Я хочу выход быть что-то вроде:

"Текст содержит:

3 слов с 4-х символов

п слов с п символов"

Я знаю "как" сделать это теоретически, но не знаю, как использовать код для этого.

  1. sort d[i] по len(d[i])

2.Store слова с одинаковой длиной в переменном

text = input("Type your text: ") 
words = text.split() 
number_of_words = len(words) 

print("Result:\nthe text contains", number_of_words, "words") 

d = {} 
i = 0 

for words in text.split(): 
    d[i] = words 
    i += 1 

n = 0 
p = 0 
q = 0 

for i in d: 
    if len(d[i]) == 1: 
     n += 1 
    elif len(d[i]) == 2: 
     p += 1 
    elif len(d[i]) == 3: 
     q += 1 

print(n, "words with 1 character") 
print(p, "words with 2 characters") 
print(q, "words with 3 characters") 
+0

Что вы имеете в виду о * подсчете символах каждой строки в словаре* ? Пример ввода и вывода? –

+0

Ввод текста. Например, вывод: «Текст содержит n слов с символами x и n слов с y символами» – user5562898

ответ

0

Я тоже новичок в Python, но согласно вашему требованию это может работать.

text = raw_input("Type your text: ") 
words = text.split() 
print words 
for i in words: 
    print 'string=',i , ', length=',len(i) 

Принимая ввод от пользователя и разделив его пробелами, то цикл по списку words и использовать LEN функцию, чтобы получить длину строки, вместо того чтобы считать их по отдельности

0

Рассмотрим встроенные функции питона sort() (см : Python docs).

Возможно, вы хотите использовать список вместо словаря для d, потому что ключ является просто индексом int.

d = text.split() 
d.sort(key=len(d[i])) 

charcount = 1 
prev_i = 0 
for i in range(len(d)): 
    if len(d[i]) > len(d[i-1]): 
     print i-prev_i, "words with %d characters" % charcount 
     prev_i = i 
     charcount += 1 
0

Надеется, что это поможет :)

text = raw_input("Type your text: ") 
words = text.split() 


print ("Result:\nthe text contains" + str(len(words)) + "words") 

# Using a list instead of a dictionary 
d = [] 

# Loop over the list, word by word 
for i in words: 
     # Exception if full stop found. Probably should filter out other characters as well to be safe. (cause user input) 
    if i.find('.')!=-1: 
     # Remove fullstops 
     q = i.replace(".", "") 
     # Add word to the end of our list 
     d.append(q) 
    else: 
     # If no punctuation encountered, just add the word 
     d.append(i) 

# test out 
print d 

# The rest seems legit enough 
0

Это простое в использовании списковых и встроенные методов списка:

text = raw_input('type:') 
type:adam sam jessica mike 
lens = [len(w) for w in text.split()] 
print [lens.count(i) for i in range(10)] 

[0, 0, 0, 1, 2, 0, 0, 1, 0, 0] 
Смежные вопросы