티스토리 뷰

8.3 사례 연구: 회문 검사하기(Case Study: Checking Palindromes)

- 이번 섹션에서는 회문(Palindromes)을 검사하는 프로그램을 작성할 예정이다.

- 회문이란, 앞에서 부터 읽을 때나 뒤에서 부터 읽을 때나 둘 다 문장(단어)이 똑같은 문을 회문이라고 한다.

- 예를 들어, mom, dad, noon 과 같은 단어들이 있다.

 

* 회문 검사 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def main():
    s = input("Enter a string: ").strip()
    if isPalindrome(s):
        print(s," is a palindrome")
    else :
        print(s," is not a palindrome")
    
def isPalindrome(s):
    low = 0
    high = len(s) - 1
 
    while low < high :
        if s[low] != s[high]:
            return False
 
        low += 1
        high -= 1
 
    return True
 
main()
cs

 

- 첫번째 인덱스(low)와 마지막 인덱스(high)를 비교하여 차례대로 인덱스를 늘리고 줄이며 서로 비교한다.

- 두 문자가 서로 다를 시 False 반환, low >= hight가 될 때까지 두 문자가 같다면 True 반환.

- strip() 메소드를 이용하여 첫글자의 공백이나 뒷글자의 공백을 제거한다.

 

8.4 사례 연구: 16진수를 10진수로 변환하기(Case Study: Converting Hexadecimals to Decimals)

- 제곧내.

- 16진수는 수가 10이 넘어가면 문자인 알파벳으로 표기한다.

- 16진수를 10진수로 바꾸는 방법은 아래와 같다.

 

 

 * 진수 변환(16진수 → 10진수) 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def main():
    hex = input("Enter a hex number: ").strip()
    result = hexToDecimal(hex.upper())
    if result == None:
        print("Incorrect hex number")
    else:
        print(result)
 
def hexToDecimal(hex):
    decimalValue = 0
    for i in range(0,len(hex)):# 범위 주의. len(hex)-1이 아
        ch = hex[i]
        if 'A' <= ch <= 'F' or '0' < ch < '9':
            decimalValue += hexCharToDecimal(ch) * (16**(len(hex)-1-i))
 
        else:
            return None
    return decimalValue
            
    
def hexCharToDecimal(ch):
    if 'A' <= ch <= 'F':
        return 10 + ord(ch) - ord('A')
    else :
        return ord(ch) - ord('0')
 
main()
cs

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

댓글