아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
매끈한상괭이152
매끈한상괭이15221.05.29

간단한 파이썬 코딩 여쭙고자합니다!

안녕하세요?

조건에 맞게 코딩한것 같은데

왜 Valid Password 라고 안뜨는지 모르겠습니다 ㅠㅠㅠㅠㅠ

무엇이 문제이고 어떻게 코딩해야되는지

답변 부탁드립니다!!

감사합니다.

55글자 더 채워주세요.
답변의 개수2개의 답변이 있어요!
  • 아래 소스코드 다운로드 : https://github.com/sigmak/exercise4_01/tree/2021-05-29-python

    [수정 소스코드]

    # -- coding: utf-8 --

    """

    Created on Sat May 29 13:12:21 2021

    @author: raven90

    """

    #a. 패스워드는 최소한 8자리이상, 8자리 미만이면 False 반환

    #b. 패스워드는 영문자와 숫자로 구성, 하지만 영문자로만 또는 숫자로만 구성되었으면 False

    #c. 패스워드는 최소한 2개의 숫자를 가지고 있어야 함.

    #d. 영문자, 숫자를 제외한 다른 문자가 있으면 False 반환.

    #총 5번의 패스워드 유효성 검사를 진행, 6번 이상 시도하면 프로그램 종료

    #유효한 패스워드를 입력하면 프로그램 을 종료

    # 조건에 맞지 않는 경우는 그에 따라 적절한 error message를 출력, 순서는 상관없음

    y = 0

    def pchk(x):

    # global y # 전역변수를 지역에서 사용

    ret = True

    digit_Cnt=0

    alpha_Cnt=0

    etc_Cnt=0

    total_Cnt = 0

    for ch in x:

    if ch.encode().isdigit()==True :

    digit_Cnt += 1

    elif ch.encode().isalpha() == True:

    alpha_Cnt += 1

    else:

    etc_Cnt += 1

    if etc_Cnt>0 :

    print('error : 영문자 숫자 이외의 문자가 포함되어 있음')

    ret = False

    else:

    totalCnt = digitCnt + alpha_Cnt

    if total_Cnt<8 :

    print('error! 8글자 이상이어야함')

    ret = False

    elif alpha_Cnt == 0:

    print('error : 패스워드가 영문자로만 구성되어 있음')

    ret = False

    elif digit_Cnt == 0:

    print('error : 패스워드가 숫자로만 구성되어 있음')

    ret = False

    elif digit_Cnt <2 :

    print ('error : 최소한 2개의 숫자를 포함하고 있지 않음')

    ret = False

    return ret

    y = 0

    while True:

    y += 1 # 누적 횟수

    if y>5:

    print('error : 패스워드 5회 시도를 초과해서 프로그램 종료')

    break

    x = input('Enter Password:')

    ret = pchk(x)

    if ret == True:

    print('Valid Password')

    break

    else :

    print('inValid Password')

    [출력결과 캡쳐]


  • 탈퇴한 사용자
    탈퇴한 사용자21.05.29

    안녕하세요.

    샘플 소스입니다. 정규식 포함

    import re def validPwd(pwd): if len(pwd) < 8: print('8자리 이상만 가능합니다.') return False if not re.search('[0-9]+', pwd) or not re.search('[a-z]+', pwd, re.I): print('영문과 숫자가 포함되어 있어야 합니다.') return False if not re.search('.*[0-9].*[0-9].*', pwd): print('최소 2개의 숫자가 포함되어 있어야 합니다.') return False return True cnt = 1 while cnt < 6: pwd = input('Enter password :') if validPwd(pwd): print('사용 가능한 비밀번호 입니다.') break cnt += 1

    정규식 미포함

    def validPwd(pwd): if len(pwd) < 8: print('8자리 이상만 가능합니다.') return False alphaCnt = 0 digitCnt = 0 for str in pwd: if str.isalpha(): alphaCnt += 1 elif str.isdigit(): digitCnt += 1 if alphaCnt == 0 or digitCnt == 0: print('영문과 숫자가 포함되어 있어야 합니다.') return False if digitCnt < 2: print('최소 2개의 숫자가 포함되어 있어야 합니다.') return False return True cnt = 1 while cnt < 6: pwd = input('Enter password :') if validPwd(pwd): print('사용 가능한 비밀번호 입니다.') break cnt += 1