파이썬 코딩 도와주세요
본문
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))
문제 해결에 조금이나마 도움이 되셨기를 기원합니다 :)
그럼 오늘도 좋은 하루 되세요~ ^-^
!-->!-->!-->
num = str(input("하나의 이진수를 입력하세요: "))
try :
print(int(num,2))
except :
print("이진수를 입력하세요!")
l=len(num)
for i in range(l):
if( num[i]!='0' and num[i]!='1')
print('이진수가 아닙니다')
exit
답변을 작성하시기 전에 로그인 해주세요.