首页 > 解决方案 > 尝试评估大写和小写字母的短语

问题描述

我正在尝试创建一个检查短语中大小写字母数量的函数。

这是我正在使用的代码:

def letter_counter(a):
  '''A function to sort the letters in a string'''
  print('The phrase "' + a + '" has: \n')

  upper_case = []
  lower_case = []

  string_to_list = list(a)

  for ltr in string_to_list:
    if ltr == ltr.lower():
      string_to_list.remove(ltr)
      lower_case.append(ltr)
    elif ltr == ltr.upper():
      string_to_list.remove(ltr)
      upper_case.append(ltr)
    else:
      pass

  print('Lower Case Letters: ' + str(len(lower_case)))
  print('Upper Case Letters: ' + str(len(upper_case)))


letter_counter('My name is Earl.')

这是结果

The phrase "My name is Earl." has:
Lower Case Letters: 7
Upper Case Letters: 1

我做错了什么?

标签: pythonfunctionuppercaselowercase

解决方案


你可以使用 sum,一个生成器表达式,也可以使用 str.islower 和 str.isupper:

print("Lower Case Letters", sum(1 for ch in phrase if ch.islower()))
print("Upper Case Letters", sum(1 for ch in phrase if ch.isupper()))

无论如何,如果你想让你的代码工作,你应该改变你的循环。首先,您应该避免同时在您正在经历的列表中进行删除。此外,您应该检查 ltr 是否真的是一个字母,而不是例如空格或点。

for ltr in string_to_list:
    if ltr == ltr.lower() and ltr.isalpha():
        lower_case.append(ltr)
    elif ltr == ltr.upper() and ltr.isalpha():
       upper_case.append(ltr)

推荐阅读