16진수를 10진수로 바꾸는 코드를 짜는
조회수 1322회
파이썬으로 16진수를 입력받아 10진수로 바꾸는 프로그램을 짜고 있습니다
def hexaToDecimal(hexaString):
decimalNum = 0
length = len(hexaString)
for num in range(0,length):
x=hexaString[num]
if 'a'<=x<='f' or 'A'<=x<='F' or '0'<x<='9':
decimalNum = decimalNum + chToHexa(x) * (16**(length-1))
length = length -1
(중략)
def chToHexa(x):
if x=='A' or 'a':
return 10
elif x=='B' or 'b':
return 11
elif x=='C' or 'c':
return 12
elif x=='D' or 'd':
return 13
elif x=='E' or "e":
return 14
elif x=='F' or 'f':
return 15
else:
return x
```
chToHexa는 입력받은 16진수에 알파벳이 있을 경우 숫자로 고쳐주기 위한 코드인데
어떤 숫자, 알파벳을 넣어도 chToHexa에서 10이라는 값만 return 됩니다
코드를 고치기는 했지만 왜 숫자가 10만 return되었는지 궁금합니다
(미리보기와 다르게 밑에 글이 코드 써놓은 칸에 같이 뜨네요..ㅠ)
2 답변
-
def chToHexa(x): if x=='A' or 'a': return 10 elif x=='B' or 'b': return 11 elif x=='C' or 'c': return 12 elif x=='D' or 'd': return 13 elif x=='E' or "e": return 14 elif x=='F' or 'f': return 15 else: return x
에서
if x=='A' or 'a':
가 아니라if x=='A' or x=='a':
처럼 조건을 주어야합니다.뒤의
or 'a'
는 항상 참 입니다. -
댓글 입력