我是否能够使用函数';计数()';要查找密码中大写字母的数量?(PYTHON)

我是否能够使用函数';计数()';要查找密码中大写字母的数量?(PYTHON),python,passwords,uppercase,Python,Passwords,Uppercase,当我输入下面的代码时,它会显示: TypeError:必须是str,而不是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.coun

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

TypeError:必须是str,而不是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(大写))
,您实际上是在向函数传递数组对象。请参阅zeraien的答案,以获得一个好的解决方案。

“count()方法搜索给定字符串中的子字符串,并返回该子字符串存在的次数。”这里,您将列表作为参数提供给count函数,而不是将引发“TypeError:必须是str,而不是list”的子字符串建议:
导入字符串
,然后使用
string.ascii\u大写字母