Исправление основного количества слов в Python - PullRequest
0 голосов
/ 21 марта 2019

Так что у меня проблемы с моим кодом, мой счетчик слов всегда равен «4», что является неточным, когда я набираю разное количество слов.

Это мой код:

word=raw_input("Enter your string please: ")
count=0
for i in "word":
    count += 1
    if word == " ":
        print(count) 
print "Your word count:", count
print "Your character count:", (len(word))

Пример вывода:

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

Мой счетчик символов работает отлично, это просто количество слов.Я запутался в том, что мне нужно исправить.Помощь будет принята с благодарностью!

Ответы [ 8 ]

2 голосов
/ 21 марта 2019

Отладка :

Следующая строка недопустима, поскольку вы перебираете каждый элемент в строковом слове, а не пользовательский ввод:

for i in "word":

Должно было быть :

for i in word:

Полное исправление (Использование двух отдельных переменных для подсчета слов и символов):

word= input("Enter your string please: ")
charCount = 0
wordCount = 0
for i in word:
    charCount += 1
    if i == ' ':
        wordCount += 2
print("Your character count:", charCount)
print("Your word count:", wordCount)

Сейчас, более короткий путь :

Использование str.format() и len():

word = input("Enter your string please: ")

print("Total words: {}".format(len(word.split())))
print("Total Characters: {}".format(len(word)))

ВЫХОД :

Enter your string please: hey, how're you?
Total words: 3
Total Characters: 16
1 голос
/ 21 марта 2019

ваш оператор для цикла for выполнял итерацию по строке «word», а не по переменному слову, которое вы сохранили в качестве ввода.Кроме того, ваш оператор if был для слова, а не итератор.

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 голос
/ 21 марта 2019

«слово» - это итеративный строковый объект, вы перебираете каждый символ строки «слово», пытаетесь изменить «слово» для word.split () и получаете счет методом len ():

word = input("Enter your string please: ")
print("Your word count:", len(word.split()))
print("Your character count:", len(word))
0 голосов
/ 21 марта 2019

Вы также можете получить некоторое значение из счетчика в коллекциях.

from collections import Counter

my_string = "xxx yyy xxx"
c = Counter(my_string.split(' '))

print("number of words:", len(my_string.split(' ')))
print("number of characters:", len(my_string))
print("number of unique words:",len(c))
print("most common word:" , c.most_common()[0][0])
print("least common word:", c.most_common()[-1][0])

Дает:

number of words 3
number of characters 11
number of unique words: 2
most common word: xxx
least common word: yyy
0 голосов
/ 21 марта 2019

Вы перебираете каждую букву слова, что приводит к длине 4. Вы хотите разбить входную строку на пробел после обрезки, а затем получить длину полученного списка.

word=raw_input("Enter your string please: ")
print("Your word count: %s", len(word.strip().split(" ")))
print("Your character count: %s", (len(word)))
0 голосов
/ 21 марта 2019
inp = raw_input("Enter your string: ")

word_count = len(inp.split())
chr_count = len(inp)

print(word_count, chr_count)

Пример:

>>> Enter your string: foo bar
>>> 2 7
0 голосов
/ 21 марта 2019

Проблема в том, что вы перебираете слово в виде строки, содержащей 4 символа.

Существует еще одна проблема с подсчетом ваших слов, вывод количества слов и символов будет одинаковым.

Вот более короткий фиксированный код:

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

выход:

Enter your string please: This is a Test
Your word count: 4
Your character count: 14
0 голосов
/ 21 марта 2019

Вы на самом деле перебираете слово "слово"

если вы хотите получить список слов, вы должны использовать ключевое слово split.

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