我在python中创建一个区分大小写的密码程序,其中密码必须包含大写字母,小写字母且最少必须为8个字符。这是代码:
password = input("Please enter a password:")
upperFlag = False
lowerFlag = False
while len(password) < 8:
try:
password = input("Password not long enough")
except:
print("Error")
for char in password:
if char == char.upper():
upperFlag = True
print("Up")
elif char == char.lower():
lowerFlag = True
代码现在只是一个概念,这就是为什么我编写代码来打印大写字母。我的问题是如何让程序只打印一次这个语句,而不是打印每个字符? (例如“向上”,“向上”,“向上”等)
答案 0 :(得分:2)
由于您无论如何都要设置标记,如果设置了标记,只需在末尾打印。
for char in password:
if char.isupper():
upperFlag = True
else:
lowerFlag = True
if upperFlag:
print("Up")
或者不是显式循环,你可以使用这样的理解:
if any(char.isupper() for char in password):
print("Up")
答案 1 :(得分:0)
您必须先进行测试,看看您是否已经打印过&#39; Up&#39;言。
if not upperFlag:
upperFlag = True
print('Up')
并且不要忘记在代码开头将upperFlag设置为False,否则您将获得NameError
答案 2 :(得分:-1)
只需在break
之后插入print("Up")
语句:
password = input("Please enter a password:")
upperFlag = False
lowerFlag = False
while len(password) < 8:
try:
password = input("Password not long enough")
except:
print("Error")
for char in password:
if char == char.upper():
upperFlag = True
print("Up")
break #<-- insert break here
elif char == char.lower():
lowerFlag = True