为什么括号有这么大的区别?

2024-04-23 10:01:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个代码,返回输入字符串中多次出现的不区分大小写的字母字符和数字的计数。这是我的密码:

def duplicate_count(text):
    sum_low = 0
    dic_low = []
    sum_up = 0
    dic_up = []
    sum_num = 0
    dic_num = []
    total = 0
    for i in text:
    if i.isalpha():
        if i.islower() and text.count(i) > 1 and i not in dic_low:
            dic_low.append(i)
            sum_low = sum_low + 1
        elif i.isupper() and text.count(i) > 1 and i not in dic_up:
            dic_up.append(i)
            sum_up = sum_up + 1
    elif i.isdigit() and text.count(i) > 1 and i not in dic_num:
        dic_num.append(i)
        sum_num = sum_num + 1
    total = sum_low + sum_up + sum_num
    print (total)

问题是,我注意到,当我遗漏了“if I.isalpha()”后面的括号时,这段代码可以很好地处理字母字符,但似乎忽略了数字,因此,例如,如果我传递“aabbcdeBBAA”,它将打印“4”,但如果参数是“11336”,它将打印“0”。后来我发现括号漏了,就改正了,代码开始正常工作,但我还是不明白是什么问题。没有任何回溯,所以我猜问题出在括号里。为什么会有这么大的不同?你知道吗

PS:抱歉,如果代码太奇怪了,我是编程新手,刚刚开始学习编码。 谢谢您!你知道吗


Tags: and代码textinifcountnotnum
2条回答

i.isalpha是一个对象(字符串i的方法isalpha)。它不是Null,也不对应于0""[]等错误值,因此如果检查其布尔值,则将其评估为True。你知道吗

只有通过添加(),才能调用该方法。你知道吗

一个实用提示:初学者在文件句柄方面有一个常见的错误:myfile.close不关闭文件myfile,只有myfile.close()关闭。但是第一个语句在语法上是有效的,不会引起错误。你可能只是想知道为什么你刚才写的文件是空的。。。你知道吗

如果您编写i.isalpha意味着您引用的是函数,而不是实际调用函数,则需要在call函数的末尾添加()

>>> i = 'some text'
>>> obj = i.isalpha   # just reference not actually call
>>> obj
<function str.isalpha>
>>> obj()    # adding '()' executes the function
False
>>> i.isalpha()  
False

相关问题 更多 >