简体   繁体   English

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

[英]Counting Numbers, Uppercase Letters, Lowercase Letters and Spaces with own Function

I know there are a lot of similar questions, but I can't seem to find the solution to my mistake.我知道有很多类似的问题,但我似乎无法找到解决我错误的方法。 So I got to define a function "processSentence" that skims the sentence and counts numbers, upper, lower cases and spaces.所以我必须定义一个 function “processSentence”,它会略读句子并计算数字、大写、小写和空格。 This is what I got so far and I'm just not getting any further.这就是我到目前为止所得到的,我只是没有进一步。

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)

You could use the string module您可以使用字符串模块

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)
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)

You had the make the numbers array as a string and the variable names and typos您将数字数组作为字符串以及变量名称和拼写错误

You don't need to use one loop for every counter, so probably this will help you to make your code more readable and easier.您不需要为每个计数器使用一个循环,因此这可能会帮助您使您的代码更具可读性和更容易。

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM