Python 03일차 프로그래밍



  • Category : Python
  • Tag : Python


** 3일차 (빅데이터 수집 시스템 개발) **

복습 퀴즈

  • (1) 3 ~ 1000 까지의 숫자를 랜덤하게 100개 발생시켜서, 배열에 저장한 후 합계 내기
  • (2) 위 1번에서 소수를 찾아서 출력하고, 소수의 합계를 내기
  • (3) <심화> 위 2번에서 찾은 소수를 '각 소수부터 1씩 감소시켜 1까지 합계'를 출력하고, 모든 합계도 출력
    • 예) 배열의 수가 13, 14, 333, 9, 7 ….. 이라면

        13+12+...+2+1 = 합계1 출력
        7 + 6 + ...+2+1 = 합계2 출력
        ....
        합계1 + 합계2 + .... = 총합 출력
      
  • (4) <심화> 3~5 크기의 랜덤한 3차원 배열 (예 : 4x3x5)을 생성하고, 해당 배열의 총 개수에 해당하는 가장 큰 소수 부터 저장하라.

    • 예) 4x3x5=60 이므로, 배열의[0][0][0] 번째에는 60번째 소수 (2, 3, 5, 7 ….. 60번째소수)

        배열의[0][0][1] 번째에는   59번째 소수 (2, 3, 5, 7 .... 59번째소수) 
      
       ....
      
        배열의 [3][2][4] 번째에는  첫번재 소수(2)를 저장한다.
      

** 3일차 미션 **

미션1 : Linux 환경에서 2일차 미션을 진짜 파일로 처리하기 –> 대신 Windows Server에서 해도 됨..

RAW 이미지 파일을 선택해서 처리 
미션 1-1. 이미지에 모두 100을 더한다.
미션 1-2. 이미지를 반전한다. 0--> 255, 1 --> 254....
미션 1-3. 이미지를 2진화 시킨다. 127 기준 ( 0 과 255만 있는 배열) 
미션 1-4. 이미지를 2진화 시킨다. 평균값 기준
미션 1-5<심화>. 이미지를 2진화 시킨다. 중위수 기준 
미션 1-6. 이미지를 좌우 미러링 한다.
미션 1-7<심화>. 이미지를 2배 축소한다
미션 1-8<심화>. 이미지를 2배 확대한다
미션 1-9<심화>. 이미지를 90도 회전한다.
미션 1-10<심화*2> 이미지를 45도 회전한다.

/root/PythcarmProject/PythonProject/images/……..

filename = “images/~~”

03일차. 13-01 함수

## 함수 선언부
def  plus (n1, n2, n3=0) :
    global myValue
    retVal1, retVal2 = 0,0
    myValue += 100
    print(myValue)
    return retVal1, retVal2

## 전역 변수부
num1 ,num2 = 100, 200
hap, sub = 0, 0
myValue = 1234

## 메인 코드부
if  __name__ == '__main__' :
    hap, _ = plus(num1, num2, 500)
    print(hap,)

03일차. 13-02 텍스트 파일 처리

# 파일열기 --> 파일 읽기/쓰기 --> 파일 닫기
rfp = open('c:/windows/win.ini', 'r') # 1
wfp = open('win2.txt','w')
while True :
    line = rfp.readline()
    if (line is None or line == '') :
        break
    wfp.writelines(line)

rfp.close() # 3
wfp.close()
print('ok')

03일차. 13-03 바이너리 파일처리

rfp = open('C:/images/Etc_Raw(squre)/512/LENNA512.RAW', 'rb') # 512x512 크기

# 1. 이미지 크기 알아내기
height = 512
width = 512

# 2. 메모리 할당 (배열)
image = []
tmp = []
for _ in range(height) :
    tmp = []
    for _ in range(width) :
        tmp.append(0)
    image.append(tmp)

# 3. 파일 --> 메모리
for i in range(height) :
    for k in range(width) :
        image[i][k] = int(ord(rfp.read(1)))
print(image[111][111])
rfp.close()

03일차. 텍스트 포토샵 1

### 함수 선언부
def malloc(h, w) :
    retImage = []
    tmp = []
    for _ in range(h):
        tmp = []
        for _ in range(w):
            tmp.append(0)
        retImage.append(tmp)
    return  retImage

def openImage() :
    global image, height, width, filename
    rfp = open(filename, 'rb')
    for i in range(height):
        for k in range(width):
            image[i][k] = int(ord(rfp.read(1)))
    rfp.close()

def displayImage() :
    global image, height, width, filename
    print()
    for i in range(10):
        for k in range(10):
            print("%3d" % (image[i][k]), end=' ')
        print()

### 영상처리 함수 모음 ###
def addImage() :
    global image, height, width, filename
    value = int(input('밝게할 값-->'))
    for i in range(height) :
        for k in range(width) :
            image[i][k] += value
    displayImage()

### 전역 변수부
image=[] ; height, width=0,0;
filename = 'C:/images/Etc_Raw(squre)/512/'

## 메인 코드부
if  __name__ == '__main__' :

    ## 파일 선택
    tmpFname = input('파일명-->')
    filename += tmpFname + ".raw"

    ## 파일의 높이x폭
    height = width = 512

    ## 메모리 할당
    image = malloc(height,width)

    ## 파일 --> 메모리 로딩
    openImage()

    ## 원본 이미지 보기
    displayImage()

    ### 메뉴 선택하기 ###
    menu = -1
    while menu!=0 :
        print("영상처리 : (1)밝게 (2)어둡게 (0)종료" )
        menu = int(input('입력-->'))
        if menu==1 :
            addImage()
        elif menu==2 :
            pass
        elif menu ==0 :
            print('프로그램 끝!')
            break

03일차. 텍스트 포토샵2 - GUI로 파일 선택

### 함수 선언부
def malloc(h, w) :
    retImage = []
    tmp = []
    for _ in range(h):
        tmp = []
        for _ in range(w):
            tmp.append(0)
        retImage.append(tmp)
    return  retImage

def openImage() :
    global image, height, width, filename
    rfp = open(filename, 'rb')
    for i in range(height):
        for k in range(width):
            image[i][k] = int(ord(rfp.read(1)))
    rfp.close()

def displayImage() :
    global image, height, width, filename
    print()
    for i in range(10):
        for k in range(10):
            print("%3d" % (image[i][k]), end=' ')
        print()

### 영상처리 함수 모음 ###
def addImage() :
    global image, height, width, filename
    value = int(input('밝게할 값-->'))
    for i in range(height) :
        for k in range(width) :
            image[i][k] += value
    displayImage()

### 전역 변수부
image=[] ; height, width=0,0;
filename = 'C:/images/Etc_Raw(squre)/512/'

## 메인 코드부
if  __name__ == '__main__' :
    ## 파일 선택
    # tmpFname = input('파일명-->')
    # filename += tmpFname + ".raw"
    from tkinter.filedialog  import *
    filename = askopenfilename(parent=None,
        filetypes = (('RAW File','*.raw'), ('All File', '*.*')))

    ## 파일의 높이x폭
    #height = width = 512
    import math
    fsize = os.path.getsize(filename)
    height = width = int(math.sqrt(fsize))

    ## 메모리 할당
    image = malloc(height,width)

    ## 파일 --> 메모리 로딩
    openImage()

    ## 원본 이미지 보기
    displayImage()

    ### 메뉴 선택하기 ###
    menu = -1
    while menu!=0 :
        print("영상처리 : (1)밝게 (2)어둡게 (0)종료" )
        menu = int(input('입력-->'))
        if menu==1 :
            addImage()
        elif menu==2 :
            pass
        elif menu ==0 :
            print('프로그램 끝!')
            break

Share this post