Вопрос

Я довольно новичок в Python, и у меня все еще есть проблемы с отображением данных, которые у меня есть, как я хочу. У меня есть этот код, который определяет наиболее частый символ в строке. Однако, как это у меня печатает как таковой: ('A', 3).

stringToData = raw_input("Please enter your string: ")
import collections
print (collections.Counter(stringToData).most_common(1)[0])

Я просто хотел некоторое представление о том, как манипулировать этим кодом чем -то подобным:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons)

Очевидно, что это скажет: «В вашей строке наиболее частым символом является (символом), который произошел (число) раз».

Я использую Python 2.7, и я попытался использовать pprint Но я не очень понял, как включить это в свой существующий код.

РЕДАКТИРОВАТЬ: В основном, я спрашиваю, как я могу кодировать, обнаружив наиболее частый символ в строке и печатать его таким образом, как «В вашей строке наиболее частым символом является (символ), который произошел (число) раз. "

Это было полезно?

Решение

Я не уверен, что это то, что вы хотите, но это будет печатать наиболее частые символы, за которым следует количество случаев:

import collections

char, num = collections.Counter(stringToData).most_common(1)[0]
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num)

Это возвращает кортеж с наиболее частым характером и количеством случаев.

collections.Counter(stringToData).most_common(1)[0]
#output: for example: ('f', 5)

Пример:

stringToData = "aaa bbb ffffffff eeeee"
char, num = collections.Counter(stringToData).most_common(1)[0]
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num)

Вывод:

In your string, the most frequent character is f, which occurred 8 times

Другие советы

На самом деле ничего для pprint делать здесь. Этот модуль предназначен для настройки того, как напечатаны коллекции,-индикация субъектов, управление порядок, в котором отображаются клавиши словаря или элементы установки и т. Д. Вы вообще не пытаетесь печатать коллекцию, просто распечатайте некоторую информацию об этом Анкет

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

counter = collections.Counter(stringToData)

Далее вы должны выяснить, как получить из них нужные данные. Вы уже знаете, как найти одну пару значений:

letter, count = counter.most_common(1)[0]

Другая вещь, о которой вы спрашивали, - это количество гласных и согласных. Для этого вы захотите сделать что -то вроде этого:

all_vowel = set('aeiouyAEIOUY')
all_consonants = set(string.ascii_letters) - all_vowels
vowels = sum(count for letter, count in counter.iteritems()
             if letter in all_vowels)
cons = sum(count for letter, count in counter.iteritems()
           if letter in all_consonants)

И теперь вам просто нужно распечатать их, используя какой -то форматирование, которое вы уже знаете, как это сделать:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons)
print ("In your string, the most frequent character is %s, which occurred %s times."
       % (letter, count))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top