如何在函数的for循环中使用多个条件?

问题描述

我还是python新手,刚刚开始学习。给出的任务是查找给定文本中的标点符号,元音和常量的数量。但是,每当我运行代码时,它只会给我一个0

def getInfo(text):

    pun = [".","," ","\'","\"","!"]
    vowels = ["a","e","i","o","u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in text:
        if char in pun:
           count += 1
        return count
    
        if char.lower() in vowels:
           count2 += 1
        return count2
        
        if (not char.lower() in vowels) and (not char.lower() in pun):      
            count3 += 1
        return count3

解决方法

程序到达返回时,它将退出循环。

def getInfo(text):

    pun = [".","," ","'",'"',"!"]
    vowels = ["a","e","i","o","u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in text:
        if char in pun:
            count += 1

        if char.lower() in vowels:
            count2 += 1

        if (not char.lower() in vowels) and (not char.lower() in pun):
            count3 += 1
    return "count: {0},count2: {1},count3: {2}".format(count,count2,count3)

print(getInfo("We are in 2020."))

输出:

count: 4,count2: 4,count3: 7
,

您正在检查标点符号后重新调整值,其余的将被忽略。因此您得到0。您的代码可用于标点符号检查。

,

返回应该在循环之外。

应该是:

def getInfo(text):

    pun = [".","\'","\"","u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in list(text):
        if char in pun:
           count += 1
   
        if char.lower() in vowels:
           count2 += 1
        
        if (not char.lower() in vowels) and (not char.lower() in pun):      
            count3 += 1
    return (count,count3)

getInfo('myname.is hello world!')

# (4,6,12)
,

您正在使用return关键字,也就是说,下面的所有代码都不会运行,并且该函数将返回变量count

请确认。