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

时间:2019-09-01 09:19:05

标签: 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():
            upperl += 1
        if i == ' ':
            continue
    return upperl,lowerl

x = myfunc('hello G')
print (x)

从单词“ hello G”开始,我们期望大写字母和小写字母 算作1,5,但两个单词之间的空格使之成为2,6

3 个答案:

答案 0 :(得分:0)

问题是' ' == ' '.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)

答案 1 :(得分:0)

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

import re

def count_letter_cases(text):
    n_lower = len(re.findall("[a-z]", text))
    n_upper = len(re.findall("[A-Z]", text))
    return n_lower, n_upper

print(count_letter_cases("Hello Goat"))
## Result: (7,2)

答案 2 :(得分:-1)

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)

编辑:已删除string模块。使用内部islowerisupper方法。