Question

Je suis assez nouveau dans Python et j'ai encore du mal à afficher des données que j'ai comme je veux. J'ai ce code qui détermine le caractère le plus fréquent d'une chaîne. Cependant, comment je l'ai imprime comme tel: ('A', 3).

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

Je voulais juste un aperçu de la façon de manipuler ce code à quelque chose de similaire à ceci:

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

De toute évidence, cela dirait: "Dans votre chaîne, le caractère le plus fréquent est (caractère), qui s'est produit (nombre) fois."

J'utilise Python 2.7 et j'ai essayé d'utiliser le pprint Mais je n'ai pas vraiment compris comment incorporer cela dans mon code existant.

Edit: Fondamentalement, ce que je demande, c'est comment je peux coder pour trouver le caractère le plus fréquent dans une chaîne et l'imprimer d'une manière telle que "dans votre chaîne, le caractère le plus fréquent est (caractère), qui s'est produit (nombre) fois. "

Était-ce utile?

La solution

Je ne sais pas si c'est ce que vous voulez, mais cela imprimera le personnage le plus fréquent suivi avec le nombre d'occurrences:

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)

Cela renvoie un tuple du caractère le plus fréquent et du nombre d'occurrences.

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

Exemple:

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)

La sortie est:

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

Autres conseils

Il n'y a vraiment rien pour pprint faire ici. Ce module concerne la personnalisation de la façon dont les collections sont imprimées: les sous-objets d'indépendance, de contrôler l'ordre dans lequel les clés du dictionnaire ou les éléments définissent s'afficher, etc. Vous n'essayez pas du tout d'une collection, il suffit d'imprimer des informations à ce sujet .

La première chose que vous voulez faire est de garder la collection autour au lieu de la reconstruire pour chaque déclaration d'impression:

counter = collections.Counter(stringToData)

Ensuite, vous devez comprendre comment en tirer les données que vous souhaitez. Vous savez déjà comment trouver une paire de valeurs:

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

L'autre chose dont vous avez demandé est le nombre de voyelles et de consonnes. Pour cela, vous voudrez faire quelque chose comme ceci:

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)

Et maintenant, il vous suffit de les imprimer en utilisant une sorte de formatage, que vous savez déjà faire:

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))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top