用自己的函数计算数字、大写字母、小写字母和空格

Counting Numbers, Uppercase Letters, Lowercase Letters and Spaces with own Function

我知道有很多类似的问题,但我似乎找不到解决我的错误的方法。 所以我必须定义一个函数“processSentence”来浏览句子并计算数字、大写、小写和空格。这是我到目前为止所得到的,我只是没有得到任何进一步的结果。

sentence = "3 big frogs decorate the christmas tree with 22 bananas"

def processSentence(sentence): 
    spaces = 0
    numbers = 0
    uppers = 0
    lowers = 0

    for character in sentence:
      if character in [0,1,2,3,4,5,6,7,8,9]:
        numbers += 1

    for character in sentence:
      if character in ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]:
        lowers += 1

    for character in sentence:
      if character in ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]:
        uppers += 1

    for character in sentence:
      if character in [" "]:
        spaces += 1

    report = f"The sentence had {numbers}, {uppers}, {lowers} and {spaces}"

    print(report)
sentence = "3 big frogs decorate the christmas tree with 22 bananas"

def processSentence(sentence):
    spaces = 0
    numbers = 0
    uppers = 0
    lowers = 0

    for character in sentence:
        if character in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
            numbers = numbers + 1

    for character in sentence:
        if character in ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
                         "u", "v", "w", "x", "y", "z"]:
            lowers = lowers + 1

    for character in sentence:
        if character in ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
                         "U", "V", "W", "X", "Y", "Z"]:
            uppers = uppers + 1

    for character in sentence:
        if character in [" "]:
            spaces = spaces + 1

    report = f"The sentence had numbers:{numbers}, Upper case:{uppers}, Lower Case:{lowers} and Spaces{spaces}"

    print(report)


processSentence(sentence)

您已将数字数组设为字符串以及变量名和拼写错误

您不需要为每个计数器都使用一个循环,因此这可能会帮助您提高代码的可读性和易用性。

sentence = "3 big frogs decorate the christmas tree with 22 bananas"

def processSentence(sentence):
    spaces = 0
    numbers = 0
    uppers = 0
    lowers = 0

    for character in sentence:
      if character in '0123456789':
        numbers += 1
      elif character.islower():
        lowers += 1
    
      elif character.isupper():
        uppers += 1

      elif character == ' ':
        spaces += 1

    report = f"The sentence had numbers:{numbers}, Upper case:{uppers}, Lower Case:{lowers} and Spaces{spaces}"

    print(report)


processSentence(sentence)

你可以使用字符串模块

import string

sentence = "3 big frogs decorate the christmas tree with 22 bananas"


def processSentence(sentence):
    # just storing the character sets, avoiding doing it in each loop of the for-cycle
    lowercase_characters = string.ascii_lowercase
    uppercase_characters = string.ascii_uppercase
    digit_characters = string.digits

    spaces = 0
    numbers = 0
    lowers = 0
    uppers = 0
    # maybe use some variable to count residual characters?
    residual = 0

    for character in sentence:
        if character in lowercase_characters:
            lowers += 1
        elif character in uppercase_characters:
            uppers += 1
        elif character in digit_characters:
            numbers += 1
        elif character == " ":
            spaces += 1
        else:
            residual += 1
        report = f"The sentence had numbers:{numbers}, Upper case:{uppers}, Lower Case:{lowers} and Spaces{spaces}"
        print(report)


if __name__ == '__main__':
    processSentence(sentence)