我可以使用函数'count()'来查找密码中大写字母的数量吗? (蟒蛇)
问题描述:
当我输入下面的代码,它说:我可以使用函数'count()'来查找密码中大写字母的数量吗? (蟒蛇)
TypeError: must be str, not list
这是否意味着我不能使用功能计数()或有另一种方式,我可以编程吗?
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))
答
只需检查密码中的每个字符,并检查它是否是大写字符。 例如:
def count_upper(text):
count = 0
for c in text:
if c.isupper():
count+=1
return count
print count_upper("FoOoObA")
的另一种方法是使用几组和位掩码来计数的独特大写字符数。
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)
的set
解决方案无论如何都只能算唯一的字符,但在密码强度计量的情况下,可能不会是一个坏主意。
答
问题是方法count()
需要一个字符串对象。现在,使用这一行(password.count(uppercase))
,您正在有效地将Array对象传递给您的函数。看到zeraien的答案是一个好的解决方案。
“count()方法搜索给定字符串中的子字符串,并返回子字符串存在的次数。”这里你提供列表作为计数函数的参数而不是子字符串,它会引发“TypeError:必须是str,而不是列表 ” –
建议:'import string'然后使用'string.ascii_uppercase'。 – 2017-10-22 01:53:14