코딩 스쿨에 오신것을 환영합니다~~

질의응답 게시판

 
M-00023 질문입니다.
김 * 현 | 2018-12-19

def isValid(p):
    if len(p)<10:
        return False

    is_num = False
    is_upper = False

   # if len(p)<=10:
   #     i=0
   #     while i<len(p):
   #         if p[i].isupper():
   #             break
   #         else:
   #             i=i+1
   #     return True

    return is_upper and is_num

print('비밀번호는 10자리 이상, 영문 대문자를 포함하여야 합니다')

password1=input('비밀번호: ')
password2= input('비밀번호 확인: ')

while True:
    if isValid(password1) and password1 == password2:
        break
    else:
        if not isValid(password1):
            print('비밀번호가 잘못되었습니다!다시 입력해 주세요')
        else:
            print('비밀번호와 비밀번호 확인이 서로 다릅니다!다시 입력해 주세요!')

    password1 = input('비밀번호: ')
    password2 = input('비밀번호 확인: ')

print('유요한 비밀번호입니다~~~')

결과값이 '유요한비밀번호입니다' 와 '비밀번호가 잘못되었습니다!다시 입력해 주세요' 만 출력이 되고,
password1과 password2가 다를 때 출력값이 나오지 않습니다. 어떻게 수정해야 할까요? 

  • 관 * 자
  • 2018-12-19 (18:20)
다음을 참고해 주세요.

def isValid(p) : 
   if len(p) < 10 : 
      return False 

   is_num = False 
   is_upper = False 

   for ch in p : 
      if ch >= 'A' and ch <= 'Z' : 
         is_upper = True 
      if ch >= '0' and ch <= '9' : 
         is_num = True 

   return is_upper and is_num 


print('※ 비밀번호는 10자리 이상, 영문 대문자를 포함하여야 합니다.') 

password1 = input('비밀번호 : ') 
password2 = input('비밀번호 확인: ') 

while True :
    if isValid(password1) and password1 == password2 :
        break
    else :
        if not isValid(password1) :  
            print('비밀번호가 잘못되었습니다! 다시 입력해 주세요')
        else :  
            print('비밀번호와 비밀번호 확인이 서로 다릅니다! 다시 입력해 주세요!')

    password1 = input('비밀번호: ') 
    password2 = input('비밀번호 확인 : ') 

print('유효한 비밀번호입니다~~~')
  • 관 * 자
  • 2018-12-19 (18:21)
위의 프로그램 중 알파벳 대문자와 숫자를 체크하는 것은 다음과 같이 하면 됩니다.

for ch in p :  
      if ch >= 'A' and ch <= 'Z' :  
         is_upper = True  
      if ch >= '0' and ch <= '9' :  
         is_num = True