我可以使用函数 'count()' 来查找密码中大写字母的数量吗? (PYTHON)

Am I able to use the function 'count()' to find the amount of upper cases in a password? (PYTHON)

当我输入下面的代码时,它显示:

TypeError: must be str, not list

这是否意味着我无法使用函数 count() 或是否有其他方法可以对它进行编程?

password = "CheeseMakesMeHappy"
uppercase =["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"]
print (password.count(uppercase))

只需遍历密码中的每个字符并检查它是否为大写字符。 例如:

password = "FoOoObA"
print(len([c for c in password if c.isupper()]))
>> 4

另一种方法是使用集合和位掩码来计算唯一大写字符的数量。

password = "CheeseMakesMeHappy"
uppercase = set(["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"])
print(len(set(password)&uppercase))
>> 3

然而,set 解决方案将只计算唯一字符,但在密码强度计量的情况下,这可能不是一个坏主意。

问题是方法 count() 需要一个字符串对象。现在,通过这一行 (password.count(uppercase)),您实际上是在将一个 Array 对象传递给您的函数。请参阅 zeraien 的回答以获得好的解决方案。