我正在尝试解决此家庭作业问题:
问题1:“编写一个程序,要求用户提供名词列表(用空格分隔),并通过计算以“ 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')
。任何帮助将不胜感激,谢谢。
答案 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)