파이썬 코드 작성


16진수 글자 하나를 입력하면 16진수인지 아닌지를 구분하는 코드를 작성하시오.

1) if~else문 사용 2) and와 or을 활용

실행결과:

ex) 16진수 한글자 입력: 8

10진수 ====> 8

16진수 한글자 입력: F

10진수 ====> 15

코드를 어떻게 작성해야 할까요...

  • 2018년 04월 14일에 작성됨

조회수 115


Hashcode banner summercoding

1 답변


좋아요
1
싫어요
채택취소하기

저번에 비슷한 질문을 올리셨는데, 이번에는 가급적 표준 라이브러리를 이용하지 않고 답변드리겠습니다.

우선 16진수 판별은 이렇게 할 수 있습니다.

def is_hex(c):
    is_numeric = ord('0') <= ord(c) <= ord('9')
    is_lowercase = ord('a') <= ord(c) <= ord('f')
    is_uppercase = ord('A') <= ord(c) <= ord('F')

    return is_numeric or is_lowercase or is_uppercase

그다음, 10진수로 바꾸는 건 이렇게 할 수 있어요.

def hex_to_dec(c):
    is_numeric = ord('0') <= ord(c) <= ord('9')
    is_lowercase = ord('a') <= ord(c) <= ord('f')
    is_uppercase = ord('A') <= ord(c) <= ord('F')

    if is_numeric:
        return ord(c) - ord('0')
    elif is_lowercase or is_uppercase:
        return ord(c.lower()) - ord('a') + 10

모두 합치려면 이렇게 하면 되죠.

def is_hex(c):
    is_numeric = ord('0') <= ord(c) <= ord('9')
    is_lowercase = ord('a') <= ord(c) <= ord('f')
    is_uppercase = ord('A') <= ord(c) <= ord('F')

    return is_numeric or is_lowercase or is_uppercase

def hex_to_dec(c):
    is_numeric = ord('0') <= ord(c) <= ord('9')
    is_lowercase = ord('a') <= ord(c) <= ord('f')
    is_uppercase = ord('A') <= ord(c) <= ord('F')

    if is_numeric:
        return ord(c) - ord('0')
    elif is_lowercase or is_uppercase:
        return ord(c.lower()) - ord('a') + 10

string = input('숫자를 입력하세요')
if is_hex(string):
    print('16진수입니다. 10진수로 {0} 입니다.'.format(hex_to_dec(string)))
else:
    print('16진수가 아닙니다.')
  • 2018년 04월 14일에 작성됨
    코딩 좀 하는 중딩입니다. 저를 프로그래머로 채용하실 생각이 있으시면 꼭 연락주세요.

  • 감사합니다!! 그런데 ord를 사용하지 않고 작성할 수 있는 방법은 없나요?    kk   2018.4.14 20:52     
  • 글쎄요... 이게 최소한으로 표준 라이브러리를 쓰는 방법같은데요.    손량   2018.4.14 23:33     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close