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

2024-09-30 01:20:06 发布

您现在位置: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)

从“hellog”这个词中,我们期望大写字母和小写字母 算作1,5,但两个单词之间的空格使之成为2,6。你知道吗


Tags: 函数字符串程序ifdef空间大写字母myfunc
3条回答
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方法。你知道吗

在这里使用regex将是一个更干净的解决方案

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)

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

相关问题 更多 >

    热门问题