본문 바로가기

정보교과서

[고등학교 정보교과서] 3-3-5. 배열 #2 - 씨마스

고등학교 정보교과서 3. 문제 해결과 프로그래밍 (3) 프로그래밍 Programming ⑤ 배열 Array(List) #2 - 씨마스

고등학교 정보교과서 3. 문제 해결과 프로그래밍 (3) 프로그래밍 Programming ⑤ 배열 Array(List) #2 - 씨마스

 


 

리스트 내포(=리스트 내장, 지능형 리스트)

리스트를 생성할 때 for, in, if의 키워드를 사용하여 생성하면 규칙적인 요소를 쉽게 할당할 수 있습니다.

list = [_ for _ in range(3)]	# 0부터 2까지 수(0, 1, 2)
list = [_ for _ in range(5) if _ % 2 == 0]	# 0부터 4까지 수 중 2로 나눈 나머지가 0인 수(0, 2, 4)
list = [_ for _ in 'hello']	# 'hello' 문자열을 한 글자씩 (h, e, l, l, o)
list = [_ ** 2 for _ in range(5)]	# 0부터 4까지 수의 제곱(0, 1, 4, 9, 16)

 

리스트 내장 메소드

메소드명 설명 예시
append 리스트에 요소 추가 list.append()
sort 리스트 요소 오름/내림차순 정렬 list.sort() 오름차순
list.sort(reverse=True) 내림차
reverse 리스트 요소 역순으로 변경 list.reverse()
count 리스트에서 특정 값 개수 구하기 list.count("Mars")
index 리스트에서 특정 요소의 인덱스 구하기 list.index("Jupiter")

 


 

구구단 중 7단을 1차원 배열에 저장하는 프로그램

구구단 7단 저장 프로그램 실행결과

전체 코드 보기

더보기
# 구구단 7단을 1차원 배열에 저장하는 프로그램

print('============ 구구단 7단 저장 프로그램 ============')
# 리스트 내포
gugu = [7 * _ for _ in range(1, 10)]
print('리스트 내포\t\t:', gugu)

# 리스트 내장 메소드
gugu = []
for i in range(1, 10) :
    gugu.append(7 * i)
print('리스트 내장 메소드\t:', gugu)

 

128의 모든 약수 구하는 프로그램

128 약수 구하기 프로그램 실행결과

전체 코드 보기

더보기
# 128 약수 구하기 프로그램

print('============ 128 약수 구하기 프로그램 ============')

# 리스트 내포
div = [i for i in range(1, 129) if 128 % i == 0]
print('리스트 내포\t\t:', div)

# 리스트 내장 메소드
div = []
for i in range(1, 129) :
    if 128 % i == 0 :
        div.append(i)
print('리스트 내장 메소드\t:', div)

미키마우스 그리기 프로그램

0, 1로 이루어진 텍스트 파일을 행렬로 읽어 0은 흰 점, 1은 검은 점으로 표시하여 출력해 봅시다.

mickey.txt

더보기
000011111000000
000111111100000
000111111101110
000111111101111
000011111011111
000001111111111
000010100111111
000100000011110
000101010011100
110101010011100
111110000110100
110000000000100
010000000101100
001100001011000
000011111110000

0, 1로 이루어진 15 * 15 행렬을 읽어 2차원 배열로 저장한 후 화면에 표시합니다.

미키마우스 그리기 프로그램 실행결과

전체 코드 보기

더보기
# mickty 그리기

from turtle import *

speed("fastest")

radius = 10

f = open("resources/mickey.txt")
s = f.read().split("\n")

# 그림그리기 시작
penup()

for row in range(len(s)) :
    for col in range(len(s[row])) :
        goto(col * radius, - row * radius)

        if s[row][col] == "1" :
            color("black")
        else :
            color("white")
        
        dot(radius)

exitonclick()   # 화면 클릭시 종료

 

암호 해독 프로그램

암호 해독 프로그램 실행결과

pass.txt

더보기
qwerty
uiopas
dfghjk
xcvbnm

암호

130504231234

전체 코드 보기

더보기
# 암호 해독 프로그램

print('============ 암호 해독 프로그램 ============')

f = open("resources/pass.txt")
s = f.read().split("\n")

pwTable = []

for i in range(len(s)) :
    pwTable.append(list(s[i]))

pw = input('암호문 > ')
org = ''

for i in range(0, len(pw), 2) :
    r = int(pw[i])
    c = int(pw[i + 1])
    org += pwTable[r][c]

print('원문 :', org)

 

나선형으로 숫자 채우기

나선형으로 숫자 채우기 실행결과

전체 코드 보기

더보기
print('============ 나선형으로 숫자 채우기 프로그램 ============')

# 빈 배열 5*5 생성
nums = [[None] * 5 for _ in range(5)]

d, r, c, n = -1, 0, -1, 0

for i in range(5, 0, -1) :
    d *= -1
    for j in range(i) :
        c += d
        n += 1
        nums[r][c] = n
    
    for j in range(i - 1) :
        r += d
        n += 1
        nums[r][c] = n

# 결과 출력
for i in range(5) :
    for j in range(5) :
        print(nums[i][j], end = '\t')
    print()
728x90