0
votes

Fixer un nombre de mots de base en python

J'ai donc des problèmes avec mon code, mon nombre de mots est toujours égal à "4" qui n'est pas précis chaque fois que je tape dans différentes quantités de mots.

Ceci est mon code: P>

Enter your string please: ched hcdbe checbj
Your word count: 4
Your character count: 17


6 commentaires

pour i in "mot" ? Vous êtes itération sur la chaîne 'mot' , qui a 4 caractères. Reportez-vous à la variable, mot


Oh, alors je sors les citations?


Mais alors ça me dit que j'ai 17 mots quand je n'en ai que 3 alors :(


Oui c'est vrai. Notez que vous ne comptez pas les mots cependant. Vous devez diviser la chaîne pour cela. Donc plutôt quelque chose comme len (word.split ())


Alors, comment puis-je l'intégrer?


Si vous souhaitez modifier votre algorithme, vous pouvez déplacer l'incrément de comptage dans l'instruction IF, puis déplacez la déclaration d'impression en dehors de la boucle pour la boucle.


8 Réponses :


0
votes

Vous êtes en fait itération à travers le mot "Word"

Si vous souhaitez obtenir une liste de mots, vous devez utiliser le mot-clé SPLIT CODE>. P>

>>> words = 'this is a test sentence'
>>> word_list = words.split()
>>> print(len(word_list))
5


0 commentaires

0
votes

Le problème est que vous êtes itérant sur "Word" comme une chaîne, qui contient 4 caractères.

Il y a un autre problème avec le comptage de vos mots, la sortie des mots de comptage et des caractères de comptage seront les mêmes.

Voici un code fixe plus court: xxx

sortie: xxx


0 commentaires

0
votes
>>> Enter your string: foo bar
>>> 2 7

0 commentaires

0
votes

Vous êtes itération à travers chaque lettre de "mot" qui entraînera une longueur de 4. Vous souhaitez diviser votre chaîne d'entrée sur l'espace après la découpe, puis obtenez la longueur de la liste résultante.

word=raw_input("Enter your string please: ")
print("Your word count: %s", len(word.strip().split(" ")))
print("Your character count: %s", (len(word)))


0 commentaires

2
votes

Débogage strong>:

La ligne suivante n'est pas valide car vous êtes itération sur chaque élément du mot de chaîne, pas l'entrée d'utilisateur: p>

Enter your string please: hey, how're you?
Total words: 3
Total Characters: 16


0 commentaires

1
votes

"Word" est un objet de chaîne itérable, vous êtes itération à travers chaque symbole de la chaîne "Word", essayez de modifier "Word" pour Word.split () et obtenir le comptage par LEN () Méthode:

word = input("Enter your string please: ")
print("Your word count:", len(word.split()))
print("Your character count:", len(word))


0 commentaires

1
votes

Votre relevé pour la boucle pour la boucle était itération via la chaîne "Word" et non le mot de variable que vous avez enregistré en tant qu'entrée. En outre, votre déclaration IF était pour Word, au lieu d'itérateur.

word=input("Enter your string please: ")
new_word = word.lstrip(" ").rstrip(" ")
new_word += ' '
count=0
for i in new_word:
    if i == " ":
        count += 1
print(count) 
print("Your word count: ", count)
print("Your character count: ", (len(new_word.rstrip(' '))))
print("Your character count: ", (len(word)))


1 commentaires

Vous avez compliqué la logique en ajoutant un espace supplémentaire à la fin, que vous éliminez ensuite pour imprimer sa longueur. Il garantit également que le nombre serait toujours d'au moins 1, même si la chaîne était vide et que le personnage compte 0.



0
votes

Vous pouvez également obtenir une certaine valeur du comptoir dans les collections.

number of words 3
number of characters 11
number of unique words: 2
most common word: xxx
least common word: yyy


0 commentaires