파이썬 코딩 도와주세요

파이썬 코딩 도와주세요

QA

파이썬 코딩 도와주세요

본문

num=str(input('하나의 이진수를 입력하세요: '))
d=0
p=1
i=(len(num))-1
 
for i in range(i+1):
    d=int(num[i])*p+d
    p=p*2
    i=i-1
str1= '이진수 %s을 십진법으로 표현한 값 = %d' %(num,d)
print(str1)

 

이 상태에서 num 에 이진수가 아닌 예를 들어 12345가 들어가면 '이진수가 아닙니다'

이진수가 맞다면, 위에 이진수를 변환하는 코드가 실행되게 해주실수 있으실까요?

너무 어렵습니다..

이 질문에 댓글 쓰기 :

답변 3

안녕하세요?

 

우선 2진수 여부 판단은 문자열이 iterable하다는 점을 활용하여 다음과 같이 처리할 수 있겠네요 ^^

 


def isBinary(num):
    for i in num: # 변수 num이 문자열이어야 합니다.
        if i not in ('0', '1'):
            return False
    return True

 

 

한편 2진수 -> 10진수 변환은 int(value, base)를 활용하면 다음과 같이 간단히 처리할 수도 있겠네요 :)

 


num_10 = int(num_2, 2)

 

 

위 두 사항을 반영하여 이진수가 아니면 오류임을 표시한 후에 다시 입력을 받을 수 있도록

 

최종적인 스크립트를 작성하면 다음과 같습니다 ^^

 


def isBinary(num):
    for i in num:
        if i not in ('0', '1'):
            print('이진수가 아닙니다')
            return False
    return True
 
while True:
    num = str(input('하나의 이진수를 입력하세요: ')) # 입력받은 수를 문자열로 변환합니다.
    if isBinary(num):
        break
print(int(num, 2))

 

 

문제 해결에 조금이나마 도움이 되셨기를 기원합니다 :)

 

그럼 오늘도 좋은 하루 되세요~ ^-^

답변을 작성하시기 전에 로그인 해주세요.
전체 123,163 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT