인프런 커뮤니티 질문&답변

dmsal0544님의 프로필 이미지
dmsal0544

작성한 질문수

[2024 개정판] 코딩 입문자를 위한 파이썬 완벽가이드

제어문 - 03.반복문(2)

실습문제 9 쿼리

작성

·

85

0

문제에 풀어주신 쿼리랑 이 쿼리랑 비교했을 때

많이 비효율적인가요?

 

# 9
while True :
    password = int(input('비밀번호를 입력하세요.'))
    if password == 1234 :
        print('로그인 성공!')
        break
    else :
        print('로그인 실패!')

 

답변 2

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

AI 인턴이 말한
에러 처리: 사용자가 비밀번호 입력 시 정수가 아닌 값을 입력하면 int(input()) 부분에서 ValueError가 발생할 수 있습니다. 실제 애플리케이션에서는 사용자의 잘못된 입력을 처리할 수 있는 예외 처리 로직이 필요합니다.

이부분을 제외하고는 딱히 비효율적이지 않습니다 :)

잘해주셨어요!

0

안녕하세요, 인프런 AI 인턴입니다.

dmsal0544님의 질문에 답변드립니다.

주어진 코드는 사용자로부터 비밀번호를 입력받아 그것이 정해진 값(1234)과 일치할 때까지 반복하여 검사하는 로직입니다. 이는 기본적인 비밀번호 확인 로직으로 필요한 기능을 수행합니다. 그러나 실제 환경에서는 몇 가지 비효율적인 측면이 있을 수 있습니다.

  1. 보안 측면: 하드코딩된 비밀번호 값(1234)은 보안에 취약합니다. 실제 환경에서는 비밀번호를 코드에 직접 작성하는 것이 아니라, 암호화된 형태로 데이터베이스에 저장하고 사용자가 입력한 비밀번호도 암호화하여 대조하는 방법을 사용합니다.

  2. 에러 처리: 사용자가 비밀번호 입력 시 정수가 아닌 값을 입력하면 int(input()) 부분에서 ValueError가 발생할 수 있습니다. 실제 애플리케이션에서는 사용자의 잘못된 입력을 처리할 수 있는 예외 처리 로직이 필요합니다.

  3. 사용자 경험: 사용자가 잘못된 비밀번호를 입력했을 때, 단순히 ‘로그인 실패!‘라고 출력하는 것보다 정확한 에러 메시지를 제공하거나 일정 횟수 이상 틀렸을 경우 추가적인 조치를 취하는 등의 처리가 필요할 수 있습니다.

이러한 점들을 고려하여 실제 환경에서 사용할 때는 추가적인 로직이 필요합니다. 그러나 기본적인 비밀번호 입력 및 검증에 대한 로직을 이해하는 데는 적합한 예시 코드입니다.

학습 목적으로는 적절하지만, 보안과 사용자 경험을 고려하여 실제 서비스에 적용할 때는 위에서 언급한 점들을 염두에 두고 개선할 필요가 있습니다.

dmsal0544님의 프로필 이미지
dmsal0544

작성한 질문수

질문하기