파이썬 코딩 도와주세요 채택완료
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하다는 점을 활용하여 다음과 같이 처리할 수 있겠네요 ^^
</p>
<p>def isBinary(num):
for i in num: # 변수 num이 문자열이어야 합니다.
if i not in ('0', '1'):
return False
return True</p>
<p>
한편 2진수 -> 10진수 변환은 int(value, base)를 활용하면 다음과 같이 간단히 처리할 수도 있겠네요 :)
</p>
<p>num_10 = int(num_2, 2)</p>
<p>
위 두 사항을 반영하여 이진수가 아니면 오류임을 표시한 후에 다시 입력을 받을 수 있도록
최종적인 스크립트를 작성하면 다음과 같습니다 ^^
</p>
<p>def isBinary(num):
for i in num:
if i not in ('0', '1'):</p>
<p> print('이진수가 아닙니다')
return False
return True</p>
<p> </p>
<p>while True:
num = str(input('하나의 이진수를 입력하세요: ')) # 입력받은 수를 문자열로 변환합니다.
if isBinary(num):
break</p>
<p>print(int(num, 2))</p>
<p>
문제 해결에 조금이나마 도움이 되셨기를 기원합니다 :)
그럼 오늘도 좋은 하루 되세요~ ^-^
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>num = str(input("하나의 이진수를 입력하세요: "))</p>
<p>try :</p>
<p> print(int(num,2))</p>
<p>except :</p>
<p> print("이진수를 입력하세요!")</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인