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
8 Réponses :
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
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. P >
Voici un code fixe plus court: p> sortie: p>
>>> Enter your string: foo bar >>> 2 7
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)))
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
"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))
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)))
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.
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
pour i in "mot" code>? Vous êtes itération sur la chaîne
'mot' code>, qui a 4 caractères. Reportez-vous à la variable,
mot code>
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 ()) code>
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.