딕셔너리를 이용한 로그인 오류. 숫자 비밀번호 일치여부가 제대로 되지 않음.

조회수 1657회

딕셔너리를 이용한 로그인 프로그램을 만들고 싶어서 회원에 맞는 비밀번호를 적고, 이름이 들어가 있는지, 그 회원의 비밀번호가 일치한 지 확인하는 프로그램을 만들었어요.

딕셔너리 안에 이름의 유무는 확인이 되는데, 회원 이름과 비밀번호를 일치하는 과정에서 무언가 잘못된 거 같아요. 비밀번호가 일치하는 지 제대로 확인되게 도와주실 수 있나요?

member={"A":4534,"B":2121,"C":1223,"D":2342,"E":8845}

print("회원 전용 창입니다.")
        while(True):
            name=input("본인의 이름을 입력하세요 : ")
            if name in member:
                password=input("비밀번호를 입력해주세요 : ")
                if password==(member[name]):
                    print(name,"님 환영합니다")
                    print("회원님의 남은 시간은 %d 개월 입니다"%day[name])
                    break

                else:
                    print("비밀번호가 맞지 않습니다")
            else:
                print(name,"님은 저희 회원이 아니십니다")
본인의 이름을 입력하세요 : A
비밀번호를 입력해주세요 : 4534
비밀번호가 맞지 않습니다
본인의 이름을 입력하세요 : ㅇㄴㄹㅇ
ㅇㄴㄹㅇ 님은 저희 회원이 아니십니다

1 답변

  • 파이썬에서 input으로 입력을 받을 경우 해당 값은 문자열로 저장됩니다.

    그리고 문자열과 정수에 == 연산을 수행할 경우 무조건 False를 반환합니다.

    따라서 입력받은 비밀번호를 정수로 바꿔주도록 코드를 수정하면 됩니다.

    member={"A":4534,"B":2121,"C":1223,"D":2342,"E":8845}
    
    print("회원 전용 창입니다.")
            while(True):
                name=input("본인의 이름을 입력하세요 : ")
                if name in member:
                    password= int(input("비밀번호를 입력해주세요 : "))
                    if password == member[name]:
                        print(name,"님 환영합니다")
                        print("회원님의 남은 시간은 %d 개월 입니다"%day[name])
                        break
    
                    else:
                        print("비밀번호가 맞지 않습니다")
                else:
                    print(name,"님은 저희 회원이 아니십니다")
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)