Ответ:
--- Python 3.8.3 ---
import typing
from typing import Callable
from typing import AnyStr
from typing import Any
import re
import string
def StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None) -> int:
'''Подсчитывает кол-во вхождений элемента, удовлетворяющего условию, в строку или подстроку при заданном splitter'''
counter = 0
if splitter:
ToAnalyse = RawString.split(splitter)
else:
ToAnalyse = list(RawString)
for item in ToAnalyse:
if Selector(item): counter += 1
return counter
def main():
Strings = [input() for i in range(int(input()))]
for s in Strings:
Uppercase = StringCount(s, lambda p: lambda p: p.isupper())
Spaces = s.count(' ')
print(f'String: {s}\nSpaces: {Spaces}\nUppercase: {Uppercase}')
if __name__ == "__main__":
main()
<\Code>
На скриншотах приложены тесты программы.