如何计算给定单词列表中的复数单词的数量以找到分数

时间:2018-10-15 15:08:08

标签: python string python-3.x input fractions

我正在尝试解决此家庭作业问题:

问题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 :(得分:0)

将与用户输入相同,请使用.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])

答案 1 :(得分:0)

您可以通过简单的列表理解来做到这一点:

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()会将输入字符串分割为空格(' ')。

答案 2 :(得分:0)

在@Billthelizard后面暗示这似乎是最简单的解决方案:

plurals = noun.count('s ')

答案 3 :(得分:0)

谢谢大家! @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)