Python 函数计算字符串中的小写和大写字母

Python 函数计算字符串中的小写和大写字母,python,Python,我编写了一个函数,它接受一个字符串,并返回该字符串中小写字母和大写字母的计数。该程序适用于单个单词,但一旦我在两个单词之间添加两个包含“空格”的单词,就会把事情搞砸。空间也很重要。 你的想法是什么 def myfunc(s): s = str(s) upperl = 0 lowerl = 0 for i in s: if i == i.lower(): lowerl += 1 if i == i.upper

我编写了一个函数,它接受一个字符串,并返回该字符串中小写字母和大写字母的计数。该程序适用于单个单词,但一旦我在两个单词之间添加两个包含“空格”的单词,就会把事情搞砸。空间也很重要。 你的想法是什么

def myfunc(s):
    s = str(s)

    upperl = 0
    lowerl = 0
    for i in s:
        if i == i.lower():
            lowerl += 1
        if i == i.upper():
            upperl += 1
        if i == ' ':
            continue
    return upperl,lowerl

x = myfunc('hello G')
print (x)
从“hello G”这个词中,我们期望大写字母和小写字母 计数为
1,5
,但两个单词之间的空格使其成为
2,6

from collections import Counter

def count_cases(strng):
    counts = Counter(strng)
    upper = 0
    lower = 0
    for char, count in counts.items():
        if char.isupper():
            upper += count
        elif char.islower():
            lower += count
    return (upper, lower)

编辑:删除
字符串
模块。使用内部
islower
isupper
方法。

问题在于
'=''.upper()
'=''.lower()
都是正确的,并且您没有检查当前处理的是字母数字字符还是其他字符。相反,您可以检查您使用的是小写字母还是大写字母

试试这个:

def calculate_case_count(string: str):
    string = str(string)
    upper_letter_count = 0
    lower_letter_count = 0
    for letter in string:
        if letter.islower():
            lower_letter_count += 1
        elif letter.isupper():
            upper_letter_count += 1
    return upper_letter_count, lower_letter_count


result = calculate_case_count('hello    G ')
print(result) # (1, 5)

在这里使用正则表达式将是更干净的解决方案

重新导入
def计数字母(文本):
n_lower=len(关于findall(“[a-z]”,文本))
n_upper=len(关于findall(“[A-Z]”,文本))
返回n_较低,n_较高
打印(计数字母箱(“你好山羊”))
##结果:(7,2)

可能的重复:(注意,这个解决方案解决了空间问题)我想说,这里不需要使用regex,使用内置的
str
类的方法来实现这一点。它绝不比简单地将这些
str
方法映射到字符串,然后取
sum
(我能想到的最简单的解决方案)更干净。是的,它看起来这种情况没有必要,但它有一个好处,您可以类似地将它扩展到计数数字或其他特殊字符