Frage

Ich bin ziemlich neu in Python und habe immer noch Probleme, Daten anzuzeigen, die ich so habe, wie ich es will. Ich habe diesen Code, der das häufigste Zeichen in einer Zeichenfolge bestimmt. Wie ich es jedoch als solche druckt: ('A', 3).

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

Ich wollte nur einen Einblick, wie man diesen Code zu etwas Ähnlichem manipuliert kann:

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

Offensichtlich würde es sagen: "In Ihrer Saite ist das häufigste Zeichen (Zeichen), das (Anzahl) Mal aufgetreten ist."

Ich benutze Python 2.7 und habe versucht, die zu verwenden pprint Aber ich habe nicht wirklich verstanden, wie ich das in meinen vorhandenen Code integrieren kann.

Bearbeiten: Grundsätzlich frage ich, wie ich das häufigste Zeichen in einer Zeichenfolge codieren kann, und das Drucken auf eine Weise wie "In Ihrer Zeichenfolge ist das häufigste Zeichen (Zeichen), das (Anzahl) Mal aufgetreten ist. "

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob dies das ist, was Sie wollen, aber dies wird den häufigsten Charakter drucken, der mit der Anzahl der Vorkommen gefolgt ist:

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)

Dies gibt ein Tupel des häufigsten Charakters und der Anzahl der Vorkommen zurück.

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

Beispiel:

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)

Ausgabe ist:

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

Andere Tipps

Es gibt wirklich nichts für pprint hier zu tun. In diesem Modul geht es darum, die Art und Weise anzupassen, wie Kollektionen ausgedruckt werden-einbezogene Unterobjekte, die Bestellung der Reihenfolge, in der Wörterbuchschlüssel oder festgelegte Elemente angezeigt werden usw. Sie versuchen nicht, eine Sammlung zu drucken, drucken Sie einfach einige Informationen darüber aus .

Das erste, was Sie tun möchten, ist, die Sammlung in der Nähe zu halten, anstatt sie für jede Druckanweisung wieder aufzubauen:

counter = collections.Counter(stringToData)

Als nächstes müssen Sie herausfinden, wie Sie die von Ihnen gewünschten Daten herausholen können. Sie wissen bereits, wie man ein Wertepaar findet:

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

Die andere Sache, nach der Sie gefragt haben, ist die Anzahl von Vokalen und Konsonanten. Dafür möchten Sie so etwas tun:

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)

Und jetzt müssen Sie sie nur ausdrucken, indem Sie eine Art Formatierung verwenden, von denen Sie bereits wissen, wie Sie es tun:

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))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top