Post

[Python 기초] 시퀀스 자료형, 반복문

시퀀스 자료형

문자열과 리스트, 튜플 자료형을 묶어서 시퀀스 자료형이라 한다.

문자열과 리스트, 튜플의 공통점은 순서가 있는 자료형이라는 것이다.

1
2
3
a = 'once' # 문자열
b = ['t', 'w', 'i', 'c', 'e'] # 리스트
c = (1, 2, 3, 4, 5) # 튜플

인덱싱/슬라이딩

원소간에 순서가 존재하므로 인덱싱/슬라이딩이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
a = 'once'
b = ['t', 'w', 'i', 'c', 'e']

print(a[1])
# 1 인덱스
# 'n'

print(b[2:4])
# 2 이상 4 미만 인덱스 슬라이싱
# ['i', 'c']

print(a[-1])
# 뒤에서 1번째 원소 인덱싱
# 'e'

print(b[:3])
# 0 이상 3 미만 인덱스 슬라이싱
# ['t', 'w', 'i']

print(b[2:])
# 2 이상 모든 인덱스 슬라이싱
# ['i', 'c', 'e']

연습문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#dahyun의 가방 안에서 '다이아몬드'를 훔쳐볼까요?
dahyun = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '다이아몬드', '']

#이 가방에 한번 넣어봅시다!
stealBag1 = dahyun[-2]

print(stealBag1)
# 다이아몬드

#tzuyu는 가방 안 깊숙히 금을 13개 가지고 있네요! 이것들도 한번 훔쳐볼까요?
tzuyu = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '', '', '', '' ]

#이 가방에 한번 넣어봅시다!
stealBag2 = tzuyu[-13:]

print(stealBag2)
# ['금', '금', '금', '금', '금', '금', '금', '금', '금', '금', '금', '금', '금']

연습문제

  • 절사평균은 최댓값과 최솟값을 제외한 값들의 평균을 의미합니다.
  • 어떤 리스트가 주어질 때 절사평균을 구하는 함수 myMean()를 만들어봅시다.
1
2
3
4
5
6
7
8
9
10
def myMean(array):
    array.sort()
    newArray = array[1:len(array)-1]
    print(newArray, len(array)-1)
    return sum(newArray) / len(newArray)

ans = myMean([1, 2, 3, 4, 5])
print(ans)
# 5(max), 1(min) 을 제외한 2, 3, 4의 평균
# 3.0

시퀀스 연산

연결 연산 (+)

+ 연산자로 같은 자료형의 시퀀스를 이어 붙일 수 있다.

1
2
3
c = ['t', 'w', 'i'] + ['c', 'e']
print(c)
# ['t', 'w', 'i', 'c', 'e']

반복 연산

* 연산자로 시퀀스를 반복할 수 있다.

1
2
3
d = 'shy'
print(d * 3)
# 'shyshyshy'

원소 조회 (in)

in 연산자로 시퀀스 내에 특정 원소가 있는지 조회 가능하다.

1
2
3
4
a = 'once'
b = ['t', 'w', 'i', 'c', 'e']
print('o' in a) # true
print('o' in b) # false

파이썬 내장함수

입출력 함수 (input/print)

input()print() 함수로 입출력이 가능하다.

input() 함수를 실행하면 터미널을 통해 사용자가 컴퓨터로 입력이 가능하다.

입력을 실행하면 문자열 타입으로 들어오기 때문에 숫자형으로 변형하려면 int() 함수를 사용한다.

1
num = int(input())

형 변환

자료형을 변환하는 함수이다.

1
2
3
4
int(var) # 숫자(정수)
float(var) # 숫자(실수)
str(var) # 문자열
list(var) # 리스트

원소 길이 출력 (len)

len(sequence) 함수로 시퀀스 내의 원소 길이 확인이 가능하다.

1
2
3
4
a = 'once'
b = ['t', 'w', 'i', 'c', 'e']
print(len(a)) # 4
print(len(b)) # 5

최대, 최소 원소 출력 (max/min)

max(sequence), min(sequence) 함수로 시퀀스 내의 최댓값/최솟값을 출력한다.

1
2
print(max(1, 2, 3, 4, 5)) # 5
print(min([1, 2, 3, 4, 5])) # 1

숫자 원소의 합 출력 (sum)

sum(sequence) 함수로 시퀀스 내의 숫자 원소들의 총 합을 구할 수 있다.

1
print(sum(1, 2, 3, 4, 5)) # 15

반복문

for-in

시퀀스의 원소를 하나씩 변수에 넣어가면서 반복문 실행

연습문제

1
2
3
4
5
6
7
8
9
10
## 변수 mix에 있는 "쌀"의 개수를 세봅시다.
mix = "쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰"

len = 0
for i in mix :
    if i == '' :
        len = len + 1

print(len)
# 300

시퀀스 생성 (range)

  • range(a, b) : a 이상 b 미만의 연속되는 숫자 시퀀스를 만들어 줌
  • range(a) : 0이상 a미만의 연속되는 숫자 시퀀스를 만들어 줌
1
2
3
4
5
6
7
a = range(2, 4)
print(a)
# [2, 3]

b = range(5)
print(b)
# [0, 1, 2, 3, 4]

for-range

1
2
3
4
5
count = 0
for i in range(10) :
    count = count + 1
print(count)
# 10

연습문제

1
2
3
#for-range()를 이용해서 19단을 전부 출력해봅시다!
for i in range(19) :
    print('19 *', i+1, '=', 19*(i+1))

while

while() 안의 조건이 true이면 반복

if문으로 조건을 걸어서 break 시킬 수 있다.

1
2
3
4
5
6
7
8
9
10
i = 5
while i > 0 :
    print(i)
    if i == 2 :
        break
    i = i - 1
# 5
# 4
# 3
# 2

연습문제

  • 숫자 입력을 1개 받습니다.
  • 입력받은 숫자 층만큼의 계단 별자리를 출력합니다.
  • 예를 들어, 3을 입력하면 다음과 같은 3층의 계단 별자리가 나와야합니다.
1
2
3
*
**
***
1
2
3
4
5
i = 0
num = int(input())
while i <= num :
    print('*' * i)
    i = i + 1

연습문제

  • while문을 이용해서, 0을 입력할 때 까지 입력을 받습니다.

  • 0을 입력받았으면, 0을 입력한 바로 이전까지의 수들의 평균을 구합니다.

1
2
3
4
5
6
7
8
num = int(input())
total = 0
count = 0
while num != 0 :
    total = total + num
    count = count + 1
    num = int(input()) # 입력 값 갱신
print(total / count)
This post is licensed under CC BY 4.0 by the author.