所以我的函数必须取一个字符串列表,并返回出现在单词开头以外的位置的大写字母总数。此外,为了将此问题分解为子问题,它需要第二个函数,它接受一个单词并返回出现在该单词开头以外的位置的大写字母数。到目前为止,我有一个有效的功能,但我被告知需要做得更好,我不太清楚如何做到这一点。
<div class="content-up-down">
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
<div class="content-1"> </div>
</div>
<div class="content-left-right">
<div class="wrap-content-2">
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
<div class="content-2"> </div>
</div>
</div>
我的老师告诉我将count_strange_caps中的两个列表推导结合起来,因为它们基本上是相同的代码,并使用内部for循环中count_strange_caps的代码用于第二个函数。
def count_strange_caps(words):
if words[0].isupper():
count = abs(1 -sum(1 for c in words if c.isupper())
elif words[0].islower():
count = abs(sum(1 for c in words if c.isupper()))
return count
def total_strange_caps(words):
total_count = 0
for word in words:
if word[0].isupper():
total_count -= 1
for letter in word:
if letter.isupper():
total_count += 1
return total_count
这些是需要通过的测试类型,如果有人可以使用更基本的概念帮助我解决方案,我们将不胜感激。如果这有所不同,我就不能使用numpy。
答案 0 :(得分:0)
您可以使用str.isupper()
和sum()
来实现此目的。使用这些,count_strange_caps()
的函数定义应该是:
def count_strange_caps(word):
return sum(my_char.isupper() for my_char in word[1:]) # word[1:] to skip the first character
示例运行:
>>> count_strange_caps('HeLlo')
1
>>> count_strange_caps('HeLLo')
2
>>> count_strange_caps('heLLo')
2
此外,您的total_strange_caps()
可以使用sum()
简化为:
def total_strange_caps(words):
return sum(count_strange_caps(word) for word in words)
Sampl run:
>>> total_strange_caps(['HeLlo', 'HeLLo', 'heLLo'])
5
答案 1 :(得分:0)
您可以按如下方式使用字符串理解:
def total_strange_caps(words):
total_count = 0
for letter in words[1:]:
if letter.isupper():
total_count += 1
return total_count
print total_strange_caps("AbCdE")
输出: 2