【问题标题】:Trying to evaluate a phrase for upper case and lower case letters [duplicate]试图评估大写和小写字母的短语[重复]
【发布时间】:2021-06-03 11:59:27
【问题描述】:

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

这是我正在使用的代码:

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

我做错了什么?

【问题讨论】:

  • 您还可以使用str.isupper()为自己节省一些打字和复杂性
  • 点赞sum(c.isupper() for c in a)

标签: python function uppercase lowercase


【解决方案1】:

你可以使用 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)

【讨论】:

  • 感谢您的解决方案。但是您没有回答为什么当前代码有问题的问题。
猜你喜欢
  • 2019-01-17
  • 2016-05-03
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
相关资源
最近更新 更多