한번 풀어 본 연습문제


python_chapter_10.py


"""

# Q1) range 함수와 유사한 frange 함수를 만들어라. frange는 실수 리스트를 리턴한다.

# frange의 기본 시작 값은 0.0이고, 기본 단계 값은 0.25 이다.

# frange(5.0), frange(1.0, 5.0), frange(1.0, 3.0, 0.1) 등이 동작하도록 하라.


def frange(val, basic=0.0, step=0.25):

    l=[]


    if val < basic:

        start=val

        stop=basic

    else:

        start=basic

        stop=val


    while start < stop:

        l.append(start)

        start+=step

    return l


if __name__=='__main__':

    print frange(2)

    print frange(1.0, 2.0)

    print frange(1.0, 3.0, 0.5)

"""



"""

# Q2) 조합 논리 회로 1비틑 덧셈기 adder를 시뮬레이션 하고자 한다. adder는 두 개의

# 0 또는 1의 값을 가지는 인수를 받고 두 개의 값을 리턴한다. 리턴 값은 덧셈 결과를

# 두 자리로 한 결과이다. adder(0,0) 의 결과는 (0,0)이고 adder(1,1)은 (1,0)이다. 

# adder(0,1)이나 adder(1,0)은 (0,1)의 결과를 낳는다. 이 adder 함수를 작성하라. 


def adder(n1, n2):

    if (not n1) and (not n2):

        return (0,0)


    elif n1 and n2:

        return (1,0)


    else:

        return (0,1)


if __name__=='__main__':

    print adder(0,0)

    print adder(1,1)

    print adder(1,0)

    print adder(0,1)

"""



"""

# Q3) 함수 sum을 정의하라. 이 함수는 임의의 개수의 인수를 받아서 그 합을 계산한다.

# 예를 들면 sum()은 0을, sum(1,2)은 3을 sum(1,5,7,2,3)은 18을 리턴한다. (가변 인수)


def sum(*args):

    return reduce(lambda x, y: x+y, args, 0)


if __name__=='__main__':

    print sum(*range(0,101))

"""


"""

# Q4)이미지 파일을 작게 표시하기 위한 썸네일이라는 작은 이미지 파일들이 있다.

#        이 파일들은 원래의 이미지 파일에 _thumb란 이름이 추가로 붙는다.

#        예를 들면 a.jpg의 썸네일 파일은 a_thumb.jpg 이다.

#        이미지 파일 이름들이 리스트에 담겨 있을 때,

#        filter를 이용하여 여기서 일반 이미지 파일만 혹은 썸네일 파일만 골라 내어라.


imgList = ['a_thumb.jpg', 'toto', 'ajaj.jpg', 'haha.jjj']


def ImgFileFilter(img):

    return filter(lambda x: (x.find('.jpg') > 0) or (x.find('_thumb') > 0), img)


if __name__=="__main__":

    print ImgFileFilter(imgList)

"""


"""

# Q5) 주어진 문자열(예: 'as soon as possible')에서 각 단어의 첫 글자를 취해서

# 하나의 단어를 만들어라. (split, map, join 이용)


def MakeChar(string):

    tmpList = map(lambda x: x[0], string.split())

    return ''.join(tmpList)


if __name__=='__main__':

    print MakeChar('as soon as possible')

"""  


"""

# Q6) data.txt 파일에 다음과 같은 내용이 저장되어 있다. 이들을 읽어 리스트 x에

# [1,4,7], 리스트 y에 [2,5,8], 리스트 z에 [3,6,9]가 저장되도록 map 함수를 이용하여

# 작성하라. (리스트 안의 숫자는 모두 정수형이어야 한다.)


def NumList(f):

    strList = f.readlines() # readlines는 리스트로 리턴

    x = map(lambda i: int(i[0]), strList)

    y = map(lambda i: int(i[2]), strList)

    z = map(lambda i: int(i[4]), strList)

    return x,y,z


if __name__=='__main__':

    import os

    os.chdir(os.getenv('HOME') + '/Desktop')

    f = open('data.txt', 'r')

    x, y, z = NumList(f)

    print 'x =',x

    print 'y =',y

    print 'z =',z

"""


"""

# Q7) N! (팩토리얼) 을 계산하는 함수 fact를 재귀적 함수로 만들어라. 


def fact(num):

    if num==1:

        return 1

    return num * fact(num-1)


if __name__=='__main__':

    print fact(5)

"""


"""

# Q8) 리스트의 구조를 변경하지 말고 리스트의 값을 바꾸는 함수를 작성하고 시험하라.

# 예를 들어, [3,2[3,[3],[4]]] 에서 3을 5로 바꾼다면 [5,2,[5,[5],[4]]] 결과가

# 나와야 한다. (재귀적 프로그래밍)


def ChangeValue(listVal):

    for i in range(len(listVal)):

        if listVal[i] == 3:

            listVal[i] = 5


        if type(listVal[i]) == type([]):

            ChangeValue(listVal[i])


if __name__=="__main__":

    tmpList = [3,2,[3,[3],[4]]]

    ChangeValue(tmpList)

    print tmpList

"""


'Programming > Python' 카테고리의 다른 글

모듈의 실행 ( __name__ == '__main__' )  (0) 2013.05.01
Module  (0) 2013.05.01
함수 객체의 속성  (0) 2013.04.28
함수적 프로그래밍 - reduce 내장 함수  (0) 2013.04.28
함수적 프로그래밍 - filter 내장 함수  (0) 2013.04.28
Posted by scii
: