Как подсчитать количество множественных слов по заданному списку слов, чтобы найти дробь - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь выполнить эту домашнюю задачу:

Задача № 1:"Напишите программу, которая запрашивает у пользователя список существительных (разделенных пробелами) и приближаетдробь, которая является множественным числом путем подсчета дроби, оканчивающейся на «s». Ваша программа должна вывести общее количество слов и дробь, оканчивающиеся на «s». Следует учитывать, что слова разделены пробелами (и игнорировать возможность табуляциии пунктуация между словами).

  1. Сначала подсчитайте количество слов в строке, введенной пользователем ( Подсказка : подсчитайте количество пробелов). Распечатайте количество словПрежде чем перейти к следующей части, убедитесь, что это работает.
  2. Далее, игнорируя последнее слово (которое является особым случаем и может рассматриваться отдельно), подсчитайте количество слов, оканчивающихся на 's' ( Подсказка : подсчитайте количество символов "s". Проверьте, что эта часть работает, прежде чем переходить к следующему шагу.
  3. Последнее, проверьте последнее слово, чтобы убедиться, что оно заканчивается на "s"-- с тех порпоследнее слово, «s» всегда будет встречаться с одним и тем же индексом в строке. *

Задача № 2: Если мы посчитаем количество S, тоПодсчитаем все S в слове, а не только последний.Как я могу выяснить, заканчивается ли последняя буква в каждом данном слове буквой S. У меня пока есть это:

noun = input("Enter nouns: ")
print("You entered: ", noun)
words = noun.split()
print(words)
amount = len(words)
print(amount)

Не думаю, что я мог бы просто сделать words.count('s').Любая помощь будет принята с благодарностью, спасибо.

Ответы [ 4 ]

0 голосов
/ 15 октября 2018

Спасибо всем!@billthelizard @ toti08 @vash_the_stampede и @ rahlf23 ваши ответы действительно очень помогли.Используя ваши предложения, я наконец-то добрался до правильного кода.Я перечислю это ниже для всех, кто может случиться по этому вопросу.Еще раз спасибо!

noun = input("Enter nouns: ")
print("You entered: ", noun)
words = noun.split()
print(words)
amount = len(words)
print(amount)
plural = noun.count('s ')

for i in noun:
    if i[-1] == "s":
        last = 1
    else:
        last = 0

plurals = plural + last
print(plurals)

fraction = plurals / amount
print(fraction)
0 голосов
/ 15 октября 2018

Вы можете сделать это с помощью простого понимания списка:

test_input = 'apples carrots pickles tractor tree goat friends people'

plurals = [i for i in test_input.split() if i.endswith('s')]

total = len(plurals)
fraction = total/len(test_input.split())

Если вы не можете использовать endswith(), тогда вы можете использовать индексирование:

plurals = [i for i in test_input.split() if i[-1]=='s']

Обратите внимание, чтоsplit() будет разбивать входную строку по пробелам (' ') по умолчанию.

0 голосов
/ 15 октября 2018

Следуя подсказке @Billthelizard, похоже, самое простое решение в этом случае:

plurals = noun.count('s ')
0 голосов
/ 15 октября 2018

Будет работать так же с пользовательским вводом, используйте .split() и str.endswith()

data = 'cat dogs people lovers'
y = data.split()
print(len(y))
x = [i for i in y[:-1] if i.endswith('s')]
print(len(x))
if y[-1].endswith('s'):
    print(y[-1])

Без использования .endswith()

y = data.split()
print(len(y))
x = [i for i in y[:-1] if i[-1] == 's']
print(len(x))
if y[-1][-1] == 's':
    print(y[-1])
...