Post

python 공부 2024.04.04

알고리즘

  • 무식하게 짜면 컴터가 안돌아갔음 옛날엔 하드웨어가 좋지 못해서..

  • 개발자가 알고리즘을 왜 알아야하냐면 문제해결능력을 올려줄 수 있음

숫자의합구하기

1
2
3
4
5
6
7
8
9
10
11
12
# 숫자의 합 구하기
n = int(input())
# 그냥 리스트로 받으면 한글자씩 나눠진다
numbers = list(input())
# 모두 더할 변수를 하나 만들고 0으로 초기화 시킨다 
sum = 0
# n을 활용하여서 각 range에 n을 둠 그리고 numbers의 배열을 i로 출력함
for i in range(n):
    # 각 sum에 그 배열의 값을 int로 만들고 그걸 더해줌
    sum += int(numbers[i])
# 마지막으로 sum을 출력시켜줌
print(sum)


구간합구하기
2024-04-04py1 2024-04-04py2

연속된 자연수의 합 구하기

2024-04-04py3 2024-04-04py4
2024-04-04py5 2024-04-04py6

어려웠다 ㅜ.ㅜ 풀긴 풀었는데 비효율적인 코드가 탄생함
n이 <= 10,000,000을 못봤다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = int(input())

# 만약 n이 15이고 (7 + 8, 4 + 5 + 6, 1 + 2 + 3 + 4) 가지수는 3개이다.
# 만약 n이 10이면 1 + 2 + 3 + 4 임 .. 한 번 되고 나면 마지막 수부터 다시 되는 수 까지 가나?�
# N에 대하여 연속된 자연수의 합으로 나타낼 수 있는
# 모든 경우의 수를 찾는 것을 요구하고 있습니다.
# a = (2 * N / n - (n - 1)) / 2 ||| a가 int이고 > 0보다 크다면 count ? 
result = 0
# 시간 복잡도 없이 걍 깡으로 해보면 연속된 자연수로 ? 더해서 내가 입력한 값이 나오면 count + 1
# 근데 입력수가 크면 시간이 너무 느려짐 개똥이 됨 
for i in range(1, n+1):
    num = 0
    for j in range(i, n):
        num += j
        if num == n:
            result += 1
            break
print(result)
  • gpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def find_consecutive_sums(n):
    count = 0  # 연속된 자연수의 합으로 나타낼 수 있는 경우의 수를 저장할 변수 count를 초기화합니다.
    
    # 연속된 자연수의 합으로 n을 나타낼 수 있는 경우를 찾습니다.
    # 연속된 자연수의 길이는 1부터 n의 제곱근까지로 제한합니다.
    for length in range(1, int(n**0.5) + 1):
        # 등차수열의 첫째 항을 계산합니다.
        a = (2 * n / length - (length - 1)) / 2
        
        # 만약 첫째 항이 자연수이고, 양수인 경우에는 연속된 자연수의 합으로 n을 나타낼 수 있습니다.
        if a.is_integer() and a > 0:
            count += 1  # 경우의 수를 증가시킵니다.
    
    return count  # 모든 경우의 수를 찾은 후에 그 값을 반환합니다.

# 사용자로부터 숫자를 입력받습니다.
n = int(input("숫자입력: "))

# 함수를 호출하여 주어진 숫자를 연속된 자연수의 합으로 나타낼 수 있는 경우의 수를 찾습니다.
result = find_consecutive_sums(n)

# 결과를 출력합니다.
print(result)
  • 투포인터
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
n = int(input())  # 사용자로부터 숫자를 입력받습니다.

count = 1  # 연속된 자연수의 합으로 n을 나타내는 경우의 수를 세는 변수입니다. 초기값은 1로 설정합니다.
startIndex = 1  # 연속된 자연수의 시작 인덱스를 나타내는 변수입니다. 초기값은 1로 설정합니다.
endIndex = 1  # 연속된 자연수의 끝 인덱스를 나타내는 변수입니다. 초기값은 1로 설정합니다.
sum_ = 1  # 연속된 자연수의 합을 나타내는 변수입니다. 초기값은 1로 설정합니다.

# endIndex가 n과 같아질 때까지 반복합니다.
while endIndex != n:
    if sum_ == n:  # 만약 현재까지의 합이 n과 같다면,
        count += 1  # 경우의 수를 하나 증가시킵니다.
        endIndex += 1  # endIndex를 한 칸 앞으로 이동합니다.
        sum_ += endIndex  # 새로운 endIndex를 합에 더합니다.
        
    elif sum_ > n:  # 만약 현재까지의 합이 n보다 크다면,
        sum_ -= startIndex  # startIndex를 합에서 빼고,
        startIndex += 1  # startIndex를 한 칸 앞으로 이동합니다.
        
    else:  # 그 외의 경우에는,
        endIndex += 1  # endIndex를 한 칸 앞으로 이동하고,
        sum_ += endIndex  # 새로운 endIndex를 합에 더합니다.

# 최종적으로 구한 경우의 수를 출력합니다.
print(count)

풀이 링크

배열과 리스트

리스트 > 메모리 > 배열의 값은 인덱스를 참조할 수 있다. (포인터 개념)

파이썬 라이브러리 (xlrd, xlwt, pandas)

  • “엑셀 파일 복사하기(xlrd와 xlwt)”
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
28
# 엑셀 파일을 다루기 위한 xlrd와 xlwt 라이브러리를 불러옵니다.
import xlrd
import xlwt

# xlrd를 사용하여 기존에 있는 엑셀 파일('singer.xls')을 엽니다.
workbook = xlrd.open_workbook('C:\Users\user123\Desktop\learn-py\basic\source\Excel')


# xlwt를 사용하여 새로운 엑셀 파일을 만들 준비를 합니다.
outWorkbook = xlwt.Workbook() 

# workbook.sheets() 메서드로 열린 엑셀 파일 내의 모든 시트를 가져옵니다.
wsheetlist = workbook.sheets()
for worksheet in wsheetlist:  # 열린 엑셀 파일의 각 시트에 대해 반복합니다.
    # outWorkbook에 현재 시트와 같은 이름의 새 시트를 추가합니다.
    outSheet = outWorkbook.add_sheet(worksheet.name)
    
    # 각 시트의 행(row)에 대해 반복합니다.
    for row in range(worksheet.nrows):
        # 각 행의 열(col)에 대해 반복합니다.
        for col in range(worksheet.ncols):
            # 현재 시트의 셀 값을 읽어와서 새 시트의 같은 위치에 씁니다.
            outSheet.write(row, col, worksheet.cell_value(row, col))

# 새로운 엑셀 파일을 'outSinger1.xls'라는 이름으로 저장합니다.
outWorkbook.save('C:/Users/user123/Desktop/learn-py/basic/')
# 파일 저장이 완료되었다는 메시지를 출력합니다.
print("Save. ok!")  
  • “판다스로 위의 기능 구현”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pandas as pd

# 파일 경로를 지정합니다.
input_file = 'c:/CookAnalysis/Excel/singer.xls'
output_file = 'c:/CookAnalysis/Excel/outSinger1.xlsx'

# pandas의 read_excel 함수를 사용하여 Excel 파일을 읽습니다.
# sheet_name=None은 모든 시트를 읽어서 사전(dict) 형태로 저장합니다.
xls = pd.read_excel(input_file, sheet_name=None)

# pandas의 ExcelWriter를 사용하여 새로운 Excel 파일을 생성합니다.
with pd.ExcelWriter(output_file) as writer:
    # xls 사전에 저장된 각 시트를 반복하며 새로운 Excel 파일에 씁니다.
    for sheet_name, df in xls.items():
        # DataFrame을 시트로 쓰기: 시트 이름은 원본 파일의 시트 이름과 동일합니다.
        df.to_excel(writer, sheet_name=sheet_name, index=False)

# 파일이 저장되었다는 메시지를 출력합니다.
print("Save. ok!")
  • “셀 파일의 각 시트를 CSV 파일로 변환하기”
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
# 필요한 라이브러리를 불러옵니다. xlrd는 Excel 파일을 읽기 위해, csv는 CSV 파일을 쓰기 위해 사용됩니다.
import xlrd
import csv

# xlrd를 사용하여 원하는 Excel 파일을 엽니다.
workbook = xlrd.open_workbook('C:/Users/user123/Desktop/learn-py/basic/source/Excel/singer.xls')

# workbook.sheets() 메소드로 Excel 파일 내의 모든 시트를 가져옵니다.
wsheetlist = workbook.sheets()

# 가져온 모든 시트에 대해 반복문을 실행합니다.
for worksheet in wsheetlist:
    # 각 시트의 이름을 사용하여 새 CSV 파일을 생성합니다.
    # 예: 시트 이름이 'Sheet1'이면 파일 이름은 'singer_Sheet1.csv'가 됩니다.
    with open('C:/Users/user123/Desktop/learn-py/basic/source/Excel/singer_'+ worksheet.name + ".csv", "w", newline="") as outFp:
        # csv.writer 객체를 생성합니다. 이 객체는 CSV 파일에 데이터를 쓰는 데 사용됩니다.
        csvWriter = csv.writer(outFp)
        
        # 시트의 모든 행에 대해 반복문을 실행합니다.
        for row in range(worksheet.nrows):
            # 현재 행의 모든 셀 값들을 리스트로 가져옵니다.
            row_list = worksheet.row_values(row)
            # 가져온 셀 값들을 CSV 파일에 한 행으로 씁니다.
            csvWriter.writerow(row_list)

# 모든 시트의 데이터를 CSV 파일로 저장한 후 "Save, ok~" 메시지를 출력합니다.
print("Save, ok~")
  • “엑셀 파일에서 특정 조건을 충족하는 데이터 추출하기”
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 필요한 라이브러리인 xlrd와 xlwt를 임포트합니다.
import xlrd
import xlwt

# xlrd를 사용하여 기존 Excel 파일을 엽니다.
workbook = xlrd.open_workbook('C:/Users/user123/Desktop/learn-py/basic/source/Excel/singer.xls')

# xlwt를 사용하여 새로운 Excel 워크북(파일) 객체를 생성합니다.
outWorkbook = xlwt.Workbook()

# workbook.sheets() 메소드를 사용해 모든 워크시트의 리스트를 가져옵니다.
wsheetList = workbook.sheets()

# 새로운 워크북에 'ginger'라는 이름의 워크시트를 추가합니다.
outSheet = outWorkbook.add_sheet("ginger")

# 기존 워크북의 첫 번째 워크시트를 선택합니다.
worksheet = wsheetList[0]

# 첫 번째 워크시트의 모든 열 제목(첫 번째 행의 모든 셀)을 새 워크시트의 첫 번째 행에 복사합니다.
for col in range(worksheet.ncols):
    outSheet.write(0, col, worksheet.cell_value(0, col))

# 'height' 정보가 들어있는 열의 인덱스입니다. 0부터 시작하므로 5번째 열의 인덱스는 4입니다.
idx = 4

# 데이터를 쓸 새 워크시트의 시작 행 번호입니다. 0행은 열 제목을 썼으므로 데이터는 1행부터 시작합니다.
totalRow = 1

# 기존 워크북의 모든 워크시트를 순회합니다.
for worksheet in wsheetList:
    # 첫 번째 행(열 제목)을 제외한 각 행에 대해 반복합니다.
    for row in range(1, worksheet.nrows):
        # 현재 행의 'height' 열에 해당하는 셀 값을 가져옵니다.
        height = worksheet.cell_value(row, idx)
        try:
            # 'height' 값을 정수로 변환하여 165 이상인지 확인합니다.
            if int(height) >= 165:
                # 조건을 만족하는 행의 모든 셀 값을 새 워크시트에 복사합니다.
                for col in range(worksheet.ncols):
                    outSheet.write(totalRow, col, worksheet.cell_value(row, col))
                # 다음 행에 데이터를 쓰기 위해 totalRow 값을 1 증가시킵니다.
                totalRow += 1
        except ValueError:
            
            # 'height' 값이 정수로 변환될 수 없는 경우(예: 빈 셀, 문자열 등) 여기서 처리합니다.
            # 이 경우에는 아무 작업도 수행하지 않고 넘어갑니다.
            pass

# 모든 데이터 복사가 완료되면, 새 워크북을 파일로 저장합니다.
outWorkbook.save('C:/Users/user123/Desktop/learn-py/basic/source/Excel/outSinger2.xls')

# 저장이 완료되었다는 메시지를 출력합니다.
print("Excel file has been saved successfully.")
  • “xlwt와 csv를 사용하여 CSV 파일을 Excel로 변환하는 방법”
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
28
29
30
31
32
33
import xlwt  # xlwt 라이브러리를 불러와 Excel 파일을 생성할 수 있게 합니다.
import csv  # CSV 파일을 읽고 쓰기 위한 csv 라이브러리를 불러옵니다.
import os  # 파일 경로를 다루기 위한 os 라이브러리를 불러옵니다.

# CSV 파일 경로 리스트입니다. 이 파일들을 읽어서 Excel 파일로 변환할 겁니다.
csv_f_list = [
    "C:/Users/user123/Desktop/learn-py/basic/source/CSV/singerA.csv",
    "C:/Users/user123/Desktop/learn-py/basic/source/CSV/singerB.csv"
]

out_work_book = xlwt.Workbook()  # 새로운 Excel 워크북(파일) 객체를 생성합니다.

# 리스트에 있는 모든 CSV 파일에 대해 반복 작업을 합니다.
for csv_f_name in csv_f_list:
    row_count = 0  # 각 CSV 파일의 행을 세기 위한 카운터입니다.
    with open(csv_f_name, "r") as inFp:  # CSV 파일을 읽기 모드로 엽니다.
        csv_r = csv.reader(inFp)  # csv.reader를 사용해 파일을 읽습니다.
        header_list = next(csv_r)  # 첫 번째 행(헤더)을 읽습니다.
        out_sheet = out_work_book.add_sheet(os.path.basename(csv_f_name))  # CSV 파일명을 기반으로 새 시트를 생성합니다.
        for col in range(len(header_list)):  # 헤더의 각 열에 대해 반복합니다.
            out_sheet.write(row_count, col, header_list[col])  # 헤더를 새 시트의 첫 행에 씁니다.
        for row_list in csv_r:  # CSV 파일의 나머지 행들에 대해 반복합니다.
            row_count += 1  # 행 카운터를 1 증가시킵니다.

            for col in range(len(row_list)):  # 현재 행의 각 열에 대해 반복합니다.
                if row_list[col].isnumeric():  # 열의 값이 숫자인 경우
                    out_sheet.write(row_count, col, float(row_list[col]))  # 숫자로 씁니다.
                else:  # 열의 값이 숫자가 아닌 경우
                    out_sheet.write(row_count, col, row_list[col])  # 문자열로 씁니다.

# 모든 CSV 파일의 데이터를 새 Excel 파일에 썼으면, 파일을 저장합니다.
out_work_book.save('C:/Users/user123/Desktop/learn-py/basic/source/Excel/SingerCSV.xls')
print('save ok')  # 저장이 완료되었다는 메시지를 출력합니다.
  • “tkinter로 이미지 파일의 픽셀 데이터 추출하는 방법”
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
from tkinter import *  # tkinter 라이브러리를 불러옵니다. GUI 관련 작업을 할 때 사용해요.

window = Tk()  # 새 창을 만듭니다. 지금은 보이지 않아도 괜찮아요.
photo = PhotoImage(file='C:/Users/user123/Desktop/learn-py/basic/source/GIF/pic7.gif')  # 이미지 파일을 불러와서 'photo'에 저장합니다.

h = photo.height()  # 'photo' 이미지의 높이를 가져와서 'h'에 저장합니다.
w = photo.width()  # 'photo' 이미지의 너비를 가져와서 'w'에 저장합니다.
print('이미지 크기 : ', h, 'x',w)  # 이미지의 크기(높이와 너비)를 출력합니다.

# RGB 값들을 저장할 리스트를 만듭니다. w x h 크기의 2차원 리스트입니다.
photoR = [[0 for _ in range(h)] for _ in range(w)]  # 빨강색 값들을 저장할 곳입니다.
photoG = [[0 for _ in range(h)] for _ in range(w)]  # 초록색 값들을 저장할 곳입니다.
photoB = [[0 for _ in range(h)] for _ in range(w)]  # 파란색 값들을 저장할 곳입니다.

print(photoR, photoG, photoB)
# 이미지의 모든 픽셀에 대해 반복합니다.
for i in range(w):  # 이미지의 모든 '열'에 대해 반복합니다.
    for k in range(h):  # 각 '열'의 모든 '행'에 대해 반복합니다.
        r, g, b = photo.get(i, k)  # (i, k) 위치의 픽셀에서 RGB 값을 가져옵니다.
        photoR[i][k] = r  # 빨강색 값을 'photoR'에 저장합니다.
        photoG[i][k] = g  # 초록색 값을 'photoG'에 저장합니다.
        photoB[i][k] = b  # 파란색 값을 'photoB'에 저장합니다.
        
# [50][50] 위치의 RGB 값을 출력합니다. 이 위치의 빨강, 초록, 파란색 값을 알려줍니다.
print('[50][50] 위치의 RGB 값: ', photoR[50][50], photoG[50][50], photoB[50][50])
  • “tkinter를 사용하여 이미지 파일에서 RGB 값을 추출하고 엑셀 파일로 저장”
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# tkinter 라이브러리를 불러옵니다. 이 라이브러리는 그래픽 사용자 인터페이스(GUI)를 개발하는데 사용됩니다.
from tkinter import *  

# xlsxwriter 라이브러리를 불러옵니다. 이 라이브러리는 엑셀 파일을 생성하고 편집하는데 사용됩니다.
import xlsxwriter

# 새로운 창을 생성합니다. 이 창은 현재는 화면에 보이지 않습니다.
window = Tk()  

# 이미지 파일을 불러와 'photo'라는 변수에 저장합니다.
photo = PhotoImage(file='C:/Users/user123/Desktop/learn-py/basic/source/GIF/pic7.gif')  

# 이미지의 높이를 가져와서 변수 'h'에 저장합니다.
h = photo.height()  

# 이미지의 너비를 가져와서 변수 'w'에 저장합니다.
w = photo.width()  

# 이미지의 크기(높이와 너비)를 출력합니다.
print('이미지 크기 : ', h, 'x',w)  

# 빨간색, 초록색, 파란색 값을 저장할 2차원 리스트를 생성합니다.
photoR = [[0 for _ in range(h)] for _ in range(w)]  # 빨강색 값을 저장할 리스트입니다.
photoG = [[0 for _ in range(h)] for _ in range(w)]  # 초록색 값을 저장할 리스트입니다.
photoB = [[0 for _ in range(h)] for _ in range(w)]  # 파란색 값을 저장할 리스트입니다.

# 모든 픽셀에 대해 반복합니다.
for i in range(w):  # 모든 열에 대해 반복합니다.
    for k in range(h):  # 각 열의 모든 행에 대해 반복합니다.
        # (i, k) 위치의 픽셀에서 빨간, 초록, 파란 색상 값을 가져옵니다.
        r, g, b = photo.get(i, k)  
        # 각 색상 값을 해당하는 리스트에 저장합니다.
        photoR[i][k] = r  
        photoG[i][k] = g  
        photoB[i][k] = b  

# [50][50] 위치의 RGB 값을 출력합니다.
print('[50][50] 위치의 RGB 값: ', photoR[50][50], photoG[50][50], photoB[50][50])

# 엑셀 파일을 생성하고 시트를 추가합니다.
workbook = xlsxwriter.Workbook('C:/Users/user123/Desktop/learn-py/basic/source/Excel/pic7.xlsx')
worksheetR = workbook.add_worksheet('photoR')  # 빨간색 시트 생성
worksheetG = workbook.add_worksheet('photoG')  # 초록색 시트 생성
worksheetB = workbook.add_worksheet('photoB')  # 파란색 시트 생성

# 각 시트에 RGB 값을 작성합니다.
for i in range(w):
    for k in range(h):
        worksheetR.write(i, k, photoR[i][k])  # 빨간색 시트에 데이터 작성
        worksheetG.write(i, k, photoG[i][k])  # 초록색 시트에 데이터 작성
        worksheetB.write(i, k, photoB[i][k])  # 파란색 시트에 데이터 작성

# 엑셀 파일을 닫습니다.
workbook.close()
print('저장 완료')

# 이 숫자를 변경하면 이게 그림이 됨 
  • “RGB 값을 16진수로 표현하여 이미지 색상 표현”
1
2
3
4
5
6
7
8
9
10
11
12
13
# 이미지 색상 표현

hexR = hex(15)
hexG = hex(12)
hexB = hex(3)

hexStr = '#'
if len(hexR[2:]) < 2:
    hexStr += '0' + hexR[2:]
else:
    hexStr += '0' + hexR[2:]

print(hexStr.upper())
  • “이미지 파일의 RGB 값을 추출하여 Excel로 시각화”
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# tkinter 라이브러리를 불러옵니다. 이 라이브러리는 그래픽 사용자 인터페이스(GUI)를 개발하는데 사용됩니다.
from tkinter import *  

# xlsxwriter 라이브러리를 불러옵니다. 이 라이브러리는 엑셀 파일을 생성하고 편집하는데 사용됩니다.
import xlsxwriter

# 새로운 창을 생성합니다. 이 창은 현재는 화면에 보이지 않습니다.
window = Tk()  

# 이미지 파일을 불러와 'photo'라는 변수에 저장합니다.
photo = PhotoImage(file='C:/Users/user123/Desktop/learn-py/basic/source/GIF/pic7.gif')  

# 이미지의 높이를 가져와서 변수 'h'에 저장합니다.
h = photo.height()  

# 이미지의 너비를 가져와서 변수 'w'에 저장합니다.
w = photo.width()  

# 이미지의 크기(높이와 너비)를 출력합니다.
print('이미지 크기 : ', h, 'x',w)  

# 빨간색, 초록색, 파란색 값을 저장할 2차원 리스트를 생성합니다.
photoR = [[0 for _ in range(h)] for _ in range(w)]  # 빨강색 값을 저장할 리스트입니다.
photoG = [[0 for _ in range(h)] for _ in range(w)]  # 초록색 값을 저장할 리스트입니다.
photoB = [[0 for _ in range(h)] for _ in range(w)]  # 파란색 값을 저장할 리스트입니다.

# 모든 픽셀에 대해 반복합니다.
for i in range(w):  # 모든 열에 대해 반복합니다.
    for k in range(h):  # 각 열의 모든 행에 대해 반복합니다.
        # (i, k) 위치의 픽셀에서 빨간, 초록, 파란 색상 값을 가져옵니다.
        r, g, b = photo.get(i, k)  
        # 각 색상 값을 해당하는 리스트에 저장합니다.
        photoR[i][k] = r  
        photoG[i][k] = g  
        photoB[i][k] = b  

# [50][50] 위치의 RGB 값을 출력합니다.
print('[50][50] 위치의 RGB 값: ', photoR[50][50], photoG[50][50], photoB[50][50])

# 엑셀 파일을 생성하고, 저장 경로를 지정합니다.
workbook = xlsxwriter.Workbook('C:/Users/user123/Desktop/learn-py/basic/source/Excel/picture06_art.xlsx')

# 엑셀 시트를 추가하고 이름을 'photoRGB'로 지정합니다.
worksheet = workbook.add_worksheet('photoRGB')

# 엑셀 시트의 열 너비를 설정합니다.
worksheet.set_column(0, w - 1, 1.0)

# 엑셀 시트의 행 높이를 설정합니다.
for i in range(h):
    worksheet.set_row(i, 9.5)

# 이미지의 모든 픽셀에 대해 반복합니다.
for i in range(w):
    for k in range(h):
        # 각 픽셀의 빨간색, 초록색, 파란색 값을 16진수로 변환합니다.
        hexR = format(photoR[i][k], '02x')  # 빨간색 값을 16진수로 변환합니다.
        hexG = format(photoG[i][k], '02x')  # 초록색 값을 16진수로 변환합니다.
        hexB = format(photoB[i][k], '02x')  # 파란색 값을 16진수로 변환합니다.
        
        # 셀의 배경색을 RGB 값으로 설정합니다.
        cell_format = workbook.add_format()
        cell_format.set_bg_color('#' + hexR + hexG + hexB)  # RGB 값을 조합하여 배경색을 설정합니다.
        
        # 엑셀 시트에 빈 값을 셀에 쓰면서 배경색을 설정합니다.
        worksheet.write(k, i, "", cell_format)

# 엑셀 파일을 닫아 저장합니다.
workbook.close()

# 작업이 완료되면 "저장 완료" 메시지를 출력합니다.
print("저장 완료")
This post is licensed under CC BY 4.0 by the author.