我编写了一个函数,该函数接受一个字符串,并返回该字符串中小写字母的数量和大写字母的数量。该程序适用于单个单词,但是一旦我在两个单词之间添加两个包含“空格”的单词,事情就变得混乱了。空格也很重要。 你有什么想法?
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
。
答案 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
模块。使用内部islower
和isupper
方法。