2017-05-09 1 views
0

암호가 대소 문자, 소문자 여야하며 최소 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 

이 코드는 지금 당장은 개념으로, 대문자로 인쇄하는 코드를 작성한 것입니다. 내 질문은 각 문자를 인쇄하는 대신이 문을 한 번만 인쇄하도록 프로그램을 어떻게 얻습니까?

답변

-1

("업"등을 "업"예 "업")는 간단히 print("Up")break 문을 삽입 :

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 
+0

들여 쓰기 오류가 계속 나가서 설명하자면 NameError를 얻을 수 있습니다 –

+2

이 소문자를 감지 할 수 없게됩니다 첫 번째 대문자 하나 ... –

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") 
0

당신은 이미 '위로'문을 인쇄 있는지 확인하기 위해 테스트를해야합니다. 어떤이 들어오는 경우

if not upperFlag: 
    upperFlag = True 
    print('Up') 

그리고 코드의 시작 False로 upperFlag을 설정하는 것을 잊지 마세요 또는