학습 정리 - 반복문 제어, 튜플 ,모듈 (2025.01.07)

수아·2025년 1월 7일
0

학습 정리

목록 보기
6/51
post-thumbnail

회고 리스트

1. 튜플과 리스트의 차이에 대하여 설명하시오.

튜플과 리스트의 가장 큰 차이점은 수정할 수 있는가이다.
리스트는 수정 가능하고 튜플은 수정이 불가능하다.
리스트는 대괄호 [], 튜플은 소괄호 ()를 사용한다.

2. 아래의 에러가 나는 이유는?

t = (1, 2, 3)
t[0] = 'a'

소괄호 ()로 감싸여 있는 것으로 보아 t는 튜플이고 튜플은 값들이 변경 불가능(immutable)하기 때문입니다.

3. t의 데이타 타입은?

t = 1, 2, 3, 4

파이썬에서는 소괄호 () 없이도 쉼표로 구분된 값들이 있으면 자동으로 튜플로 인식된다.
t = (1, 2, 3, 4)와 동일한 튜플이다.
print(type(t))를 실행해보면 <class 'tuple'>이라고 출력된다.

4. for문을 사용해서 리스트의 음수를 출력하라.

lst = [3, -20, -3, 44]

lst = [3, -20, -3, 44]

for num in lst : 	# lst에서 요소 하나씩 가져와서 
    if num < 0 : 	# 0보다 작을 경우 출력
        print(num, end = " ")	# 출력 : -20 -3

5. for문을 사용해서 3의 배수만을 출력하라.

lst = [3, 100, 23, 44]

for num in lst : 
    if num % 3 == 0 :	# 3의 배수 
        print(num)

6. 리스트에서 20 보다 작은 3의 배수를 출력하라.

lst = [13, 21, 12, 14, 30, 18]

for num in lst : 
    if (num % 3 == 0) and (num < 20) :	# 3의 배수 and 20보다 큼
        print(num, end = " ")			# 출력 : 12 18

7. 월드컵은 4년에 한 번 개최된다. range()를 사용하여 2002~2050년까지 중 월드컵이 개최되는 연도를 출력하라.

for year in range(2002, 2051, 4) : 
    print(year)

range의 step을 1로 하고 year % 4 == 0으로 할수도 있지만
step을 4로 한 게 더 간단해보여서 저렇게 했다.

8. 99부터 0까지 1씩 감소하는 숫자들을, 한 라인에 하나씩 출력하라.

99
98
97
...
2
1
0

for i in range(99, -1, -1) : 	## 99부터 0까지 -1씩 감소
    print(i)

9. for문을 사용해서 아래와 같이 출력하라.

0.0
0.1
0.2
0.3
0.4
0.5
...
0.9

for i in range(0, 10, 1) : 
    print(i/10)

range(0, 1.0, 0.1)은 언뜻 보면 될 거 같지만 range()는 정수만 가능하기 때문에 range(0, 10, 1)의 결과를 10으로 나눠주었다.

10. 1~10까지의 숫자 중 모든 홀수의 합을 출력하는 프로그램을 for 문을 사용하여 작성하라.

odd_sum = 0

for i in range(1, 11) : 
    if i % 2 != 0 :
        odd_sum += i

print(odd_sum)		# 출력 : 25

11. 1~10까지의 숫자를 모두 곱한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.

multi = 1		# 덧셈에서는 0으로 초기화했지만 곱셈에서는 1로 초기화 해야 함

for i in range(1, 11) : 
    multi *= i
    
print(multi)

12. 아래와 같이 리스트의 데이터를 출력하라.

# 단, for문과 range문을 사용하라.
price_list = [32100, 32150, 32000, 32500]
0 32100
1 32150
2 32000
3 32500

price_list = [32100, 32150, 32000, 32500]

for i in range(len(price_list)) : 
    print(i, price_list[i])

13. 리스트를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라", "마"]
가 나 다
나 다 라
다 라 마

my_list = ["가", "나", "다", "라", "마"]

for  i in range(0, 3) : 
    for j in range (0, 3) : 
        print(my_list[i+j], end = " ")
    print()

my_list의 연속된 세 요소씩 출력하기 위해 이중 for문을 사용했다.
(구구단 출력이랑 비슷한 것 같다.)
바깥 for문은 출력 시작 인덱스를 지정하고 안쪽 for문은 그 인덱스부터 세 요소를 순차적으로 출력한다.

14. 리스트에는 6일 간의 종가 데이터가 저장되어 있다. 종가 데이터의 3일 이동 평균을 계산하고 이를 화면에 출력하라.

\# 첫 번째 줄에는 100, 200, 400의 평균값이 출력된다.
\# 두 번째 줄에는 200, 400, 800의 평균값이 출력된다.
\# 같은 방식으로 나머지 데이터의 평균을 출력한다.
my_list = [100, 200, 400, 800, 1000, 1300]
233.33333333333334
466.6666666666667
733.3333333333334
1033.3333333333333
sum = 0
for  i in range(0, 3) : 
    for j in range (0, 3) : 
        sum += my_list[i+j]
    print(sum / 3)
    sum = 0

13번 문제랑 비슷하다고 생각하면 된다.
my_list의 연속된 세 요소씩 합을 계산하여 평균값을 출력한다.
바깥 for문은 계산 시작 인덱스를 안쪽 for문은 해당 인덱스부터 세 요소를 더하는 역할을 하며 마지막에 평균을 구해 출력합니다.
평균을 출력하고 그 다음 for문을 위해 sum = 0으로 값을 바꿔주는 게 중요하다.

15. 아래 표에서 하나의 행을 하나의 리스트로, 총 3개의 리스트를 갖는 이차원 리스트 apart를 정의하라.

101호 102호
201호 202호
301호 302호

apart = [["101호", "102호"], ["103호", "104호"], ["105호", "106호"]]

16. 아래 표에서 하나의 열을 하나의 리스트로, 총 2개의 리스트를 갖는 이차원 리스트 stock을 정의하라.

시가 종가
100 80
200 210
300 330

stock = [[100, 200, 300], [80, 210, 330]]

17. 모듈에 대하여 설명하시오.

모듈은 관련된 함수, 클래스, 변수 등을 하나의 파일에 모은 코드 파일이다.
모듈을 사용하면 다른 프로그램에서 재사용할 수 있도록 코드의 기능을 분리하고, 유지보수와 관리가 용이해진다.

  • import 모듈_이름
    : 전체 모듈을 가져와서, 모듈 내의 모든 함수와 클래스를 모듈명.함수명 형식으로 사용한다.
import math

result = math.sqrt(16)		#math 모듈의 sqrt 함수 사용
print(result) 				# 출력: 4.0
  • from 모듈이름 import 모듈함수
    : 모듈 내에서 특정 함수나 클래스만 선택적으로 가져와서, 직접 사용할 수 있다.
from math import sqrt

result = sqrt(16)		# 직접 함수 사용
print(result) 			# 출력: 4.0

두 가지 경우가 있으니 헷갈리지 않게 조심해야 한다.
import만 있는 경우엔 import 뒤에 모듈 이름이 오지만 from import에서는 from 뒤에 모듈 이름이 온다.

from 모듈_이름 import 모듈_함수의 경우 변수와 함수를 자유롭게 사용할 수 있지만
import 모듈_이름의 경우엔 변수와 함수에 꼭 모듈_이름.을 붙여줘야한다.

솔직히

18. 아래의 에러가 발생하는 이유에 대해 설명하라.

hello()
def hello():
    print("Hi")

함수를 정의하기 전에 호출했기 때문이다.
아래와 같이 함수를 정의한 뒤 호출하면 에러가 발생하지 않는다.

def hello():
    print("Hi")
    
hello()

19. 아래 코드의 실행 결과를 예측하라.

def message() :
    print("A")
    print("B")
message()
print("C")
message()

A
B
C
A
B

처음 message()로 A B가 출력된 후 print("C")의 결과로 C가 출력된다.
그 다음 message()로 마지막 A B가 출력되기 때문에 실행 결과는 위와 같을 것이다.

20. 아래가 에러가 나는 이유와 수정을 하시오.

print(sep = ' _ ', 1, 2, 3, , end = ' m^^m ')

파라미터를 지정한 경우에는 제일 뒤로 빼야 한다.

print(1, 2, 3, sep = ' _ ', end = ' m^^m ')

반복문 제어

오늘은 continue와 break를 배웠다.
while True : 한 후 break 사용하는 걸 좋아해서 break 배울 때 좋았다...
이유는 모르겠다... 저게 그냥 좋아....

  • continue
    : 반복문 내에서 현재 반복을 건너뛰고 다음 반복으로 넘어간다.
    : 주로 특정 조건을 건너뛰고 싶을 때 유용하게 사용됩니다.
for i in range(5):
    if i == 3:
        continue 	# i가 3일 때는 그 아래 코드 실행을 건너뛰고 다음 반복으로
    print(i)		# 출력 : 0 1 2 4
  • break
    : 반복문을 실행하다가 break를 만나면 현재 반복문을 즉시 종료하고 반복문 밖으로 빠져나간다.
    : 주로 원하는 조건을 만족했을 때 반복문을 중단하고 싶을 때 사용한다.
for i in range(5):
    if i == 3:
        break 		# i가 3일 때 반복문 종료
    print(i)		# 출력 : 0 1 2

튜플은 리스트와 유사하지만 데이터 갱신및 삭제가 불가능하다.
모듈은 from 과 import 두개의 문법용어가 있다.
함수 호출시 이름을 지정해 값을 전달 할수 있다.

0개의 댓글