1. 문자열 제거 및 추출

 

실습)주어진 리스트 에서 a번째에서 b개를 취하여 주는 프로그램 짜시오 

    - ex) abcdefg  2  3  à  bcd 

    - 입력은 s=list(input(“대상 문자열 입력”)) 

             a=int(input(시작 지점 입력”)) 

             b=int(input(취할 갯수 입력”)) 

   - 결과는 result 리스트에 저장 

   - 출력은 print(결과 문자열은 {0} 입니다”.format(result))   # str(result) 

   - 1) 슬라이싱, append, + 연산자 사용 

           - 교재 3 4, 6page,  5 10page 참조 

     2) 완성후에 invalid parameter a & b 체크 항목 추가 할 것 

- 결과 리스트 만들기 전에 잘못 된 a와 b를 별도로 체크 할  

- a b 1이상인 값이 들어 온다는 전제하에 체크 할 것. 

import sys
s=list(input())
lenthOfS = len(s)
a=int(input())
b=int(input())
if (a and b <=0):
    print("1보다 작은 값을 입력하였습니다.")
    sys.exit(0)
midstr = s[a-1:len(s)]
result = s[a-1:a-1+b]
print("결과 문자열은 {0} 입니다".format(result))

실행결과

abcdefg
2
2
결과 문자열은 ['b', 'c'] 입니다


2. revsqueeze (문자 제거 후 순서 뒤바꾸기)

 

실습) 주어진 리스트에서 또 다른 주어진 리스트를 제거하고 역순화 시킨 리스트를 만들어 주는 함수 revsqueeze(s, t) 를 만드시오 

    - ex) abcabc  b  à  caca 

    - 메인 루틴에서 

        - 입력은 s=list(input(“대상 문자열 입력”)) 

                 t=list(input(“제거할 문자 입력”)) 

       - 함수 call 은 result=revsqueeze(s, t) 

- 출력은 print(“결과 리스트는 {0} 입니다”.format(result)) 

 - 함수에서 

      - 1-1) 위치 매개 변수 사용 

        1-2) 가변 위치 매개 변수 사용 

      - 2-1) 인덱스로 접근(len 함수 사용) 

        2-2) for ~ in  사용해서 접근 

     - 3) extend 메소드(또는 + 연산자, 또는 슬라이싱 연산자) 와 reverse 메소드 사용해서 해결 

 

      

def revsqueeze(s,t):
    ss="".join(map(str, s))
    tt="".join(map(str, t))
    c = s.count(tt)

    for i in range(0,c):
        d=s.index(tt)
        s.pop(d)


    s.reverse()


s=list(input("대상 문자열 입력"))
t=list(input("제거할 문자 입력"))
revsqueeze(s,t)
result=s
print("결과 리스트는 {0}입니다.".format(result))


실행결과

대상 문자열 입력abcdabcd
제거할 문자 입력b
결과 리스트는 ['d', 'c', 'a', 'd', 'c', 'a']입니다.

3. 16진수를 10진수로 출력하는 프로그램

import sys

s=input("16진수를 입력 하시오")
value = 0  # 계산 결과 저장
v = 0   # 변환된 숫자 저장
cc=list(s)
c=cc[::-1]

for index,value in enumerate(c):
    if (value>='0' and value<= '9') :
        v= ord(value)-ord('0')      #  해당되는 숫자 (10진수)  또는    v= int(c) 
    elif (value>='A' and value<='F') :
        v = ord(value)-ord('A')+10     # 해당되는 숫자 (16진수)    
    else: 
        print("16진수가 아닙니다.")
        sys.exit(0)
    if (index==0):
        value1= 16**index *v
    elif (index==1):
        value2= 16**index *v
    elif (index==2):
        value3= 16**index *v
            
value=value1+value2+value3
print(value)

hex to int

16진수 12B 입력시 
10진수 299 출력

가장 오래 고민하고.... 가장 고심이 깊었던 문제...

그만큼 지금 풀어내서 기분이 끝내준다...!!!!!

이 문제를 풀면서 기본기가 약하고 기본개념이 부족하다는 것을 많이 느꼈다.

데이터타입끼리의 비교나 특정함수는 특정데이터에만 적용되는 것... 그리고

for문으로 받은 것이 어떻게 출력되고 어떻게 활용해야하는지에 대해서 

몰라서 정말 헤매고 고민했었다.. 하지만 지금  I did it !!! 

기분 끝내준댜ㅑㅑㅑㅑㅑㅑ!!!

+ Recent posts