<p>您还可以通过使用set操作来改进这一点。以下是执行此操作的代码的固定版本:</p>
<pre><code>import string
TotalScore = 0
passwd = set(UserPassword) # create set from UserPassword
Uppercase = set(string.ascii_uppercase)
Lowercase = set(string.ascii_lowercase)
Digits = set(string.digits)
AllowedSymbols = set("!$%^&*()-_=+")
if passwd.intersection(Uppercase):
print ("You have used at least one uppercase letter. 5 points have been awarded.")
TotalScore += 5
if passwd.intersection(Lowercase):
print ("You have used at least one lowercase letter. 5 points have been awarded.")
TotalScore += 5
if passwd.intersection(Digits):
print ("You have used at least one digit. 5 points have been awarded.")
TotalScore += 5
if passwd.intersection(AllowedSymbols):
print ("You have used at least one of the allowed symbols. 5 points have been awarded.")
TotalScore += 5
if passwd.intersection(Uppercase.union(Lowercase, Digits, AllowedSymbols)):
print ("You have used at least one of all the allowed characters. 10 point have been awarded")
TotalScore += 10
else:
print ("You haven't used any of the allowed characters so no points have been awarded.")
print ("The score for your password so far is", TotalScore)
</code></pre>