Python

Python 06일차 수업 정리_while, for, range, 이중 for문, 기타제어문

어라연히프제 2024. 1. 31. 15:18

- 05일차 복습

- while

- for

- range()

- 이중 for문(중첩 for문)

- 기타제어문

 


- 05일차 복습

 

조건문이란 특정 조건의 만족 여부(결과)에 따라 실행하는 것

 

if문 if ~ else if ~ elif ~ else
if 조건식 :
     조건식이 참일 때 실행되는 문장
if 조건식 :
     조건식이 참일 때 실행되는 문장
else:
     조건이 거짓일 때 실행되는 문장
if 조건식1 :
     조건식1이 참일 때 실행되는 문장
elif 조건식2 :
     1이 거짓이고 2가참일 때 실행되는 문장
else:
     위 조건들이 거짓일 때 실행되는 문장

- while

반복문 : while, for, range(), 이중 forans(중첩 for문), 기타제어문

 

while문은 특정 조건을 만족하는 동안 반복해서 실행.

while True : 무한 루프. 조건신의 결과가 참 일 동안 반복 실행.

 

while 조건식 :

        (tab필수)반복할 문장

# 1) while 뒤에 조건식이 참인지 거짓인지 판별
# 2) 조건식이 참이라면 while문 안의 반복할 문장들 실행. 거짓미아면 반복문 종료
# 3) while문 안의 반복할 문장 한번쯤 실행 -> 
    print("Hello python") # 반복할 문장
    break # break문이란 반복분의 종료(즉시 탈출)
print("while문 끝") #반복할 문장 아님!, while문 바깥의 문장
더보기

Hello python 

while문 끝

 

예제> 1시에 시작해서 7시가 되면 '알람이 울리는' 프로그램 만들기

# <풀이1> 무한 반복문 사용
time = 1
while True : 
    if time < 7 :
        print(f"{time}시")
        time += 1             
    else:
        print(f"{time}시가 되었습니다 알람이 울립니다")
        break # 반복문 강제 종료
        

# <풀이2> while 조건식 사용
time = 1
while time < 7 : 
    print(f"{time}시")
    time += 1
print(f"{time}시가 되었습니다. 알람이 울립니다")
더보기

1시 

2시 

3시 

4시 

5시 

6시 

7시가 되었습니다 알람이 울립니다

 

예제>
# 1부터 10까지 입력받고 입력받은 숫자가 1 ~ 10 사이의 숫자라면 숫자 출력 반복문 탈출
# 그게 아니라면 1 ~ 10 사이의 숫자를 다시 입력해주세요 출력 다시 숫자 입력 받도록 하기

while True : 
    num = int(input("숫자 입력 : "))    # num 이라는 변수에 정수형 입력 받은 숫자 대입
    if 0 < num <= 10 :                  # num 이 1 ~ 10 사이의 값이라면
        print(f"num = {num}")           # if문 안의 문장 출력
        break                           # 반복문 탈출
    else:                               # if 문 조건이 거짓이라면 
        print("잘못된 숫자입니다. 다시 입력하세요")  #else 문 안의 문장 출력
더보기

숫자 입력 : 60 

잘못된 숫자입니다. 다시 입력하세요 

숫자 입력 : 5 

num = 5

 


- for

 

for문은 범위/횟수가 정해져 있는 동안 반복해서 실행.

 

for 변수명 in 집합:

        (tab필수)반복할 문장

 

변수명 = 카운터 변수, 집합 = 문자열, 컬렉션(리스트, 튜플, 세트, 딕셔너리), range()

str1 = "안녕하세요"
print(str1, type(str1))

# for 변수명 in 집합 :

for i in str1 : 
    print(i)

for i in "hello pyyhon" :
    print(i, end=" ")
print() # 줄바꿈

li1 = ['문자열', '문자', 1, 5.3, True]
print(li1, type(li1))
for i in li1 : 
    print(i, type(i))

tu1 = ("문자열들", "문자", 1, 5.3, True) #튜플의 패킹
print(tu1, type(tu1)) #튜플의 패킹
for i in tu1 : 
    print(i, type(i))

set1 = {'봄', '여름', '가을', '겨울'}
for i in set1 :
    print(i)
더보기

안녕하세요 <class 'str'> 

안 녕 하 세 요 h e l l o   p y y h o n 

['문자열', '문자', 1, 5.3, True] <class 'list'> 

문자열 <class 'str'> 

문자 <class 'str'> 

1 <class 'int'> 

5.3 <class 'float'> 

True <class 'bool'> 

('문자열들', '문자', 1, 5.3, True) <class 'tuple'> 

문자열들 <class 'str'> 

문자 <class 'str'> 

1 <class 'int'> 

5.3 <class 'float'> 

True <class 'bool'> 

여름 봄 가을 겨울

 

for과 튜플의 패킹 & 언패킹 사용하는 법

li2 = [(1, 2), (3, 4), (6, 6)]  # 리스트 안에 튜플
print(li2, type(li2))

for i in li2:
    print(i, type(i))

# 튜플의 언패킹
for i,j in li2:
    print(f"i : {i}, j : {j}")
더보기

[(1, 2), (3, 4), (6, 6)] <class 'list'> 

(1, 2) <class 'tuple'> 

(3, 4) <class 'tuple'> 

(6, 6) <class 'tuple'> 

i : 1, j : 2

i : 3, j : 4

i : 6, j : 6

 


- range()

 

range()란 내가 필요한 만큼 어디부터 어디까지 하면 만들어주는 기능을 가진 함수 == 연속된 정수형

 

range(시작값, 종료값, 스텝값) == 슬라이싱

ex) range( 1, 10, 2) => 1, 3, 5, 7, 9

 

range(시작값, 종료값) == range(2, 8) => 2 ~ 7 

 

range(종료값) == range(7) => 0 ~ 6

 

종료값은 -1만큼 가져온다. 

 

for과 range()

for i in range(시작값, 종료값, 스텝값):

i라는 변수에 시작값 부터 종료값(-1)까지 범위동안 스텝값 만큼 반복하며 증가하는 int값을 담는다. 

for i in range(1, 20) : # 1 ~ 19
  print(i, end=' ')
print() #줄바꿈

for i in range(1, 30, 3) :
    print(i , end=" ")
print()

for i in range(5) : # "안녕!" 5번 출력
    print("안녕!")

 

 

예제> 3단 구구단 만들기

# 3단 구구단 만들기 / 3은 변하지 않고 곱해지는 숫자는 1~9

# 단수 저장할 변수 선언
dan = 3
for i in range(1, 10) :
    print(f"{dan} x {i} = {dan*i}")

 

 

<실습> 틀렸었음

# <실습>
# 1에서 10까지의 숫자 합 구하기
# for 문 사용
# 출력결과 "합 : 55"

# 쓰앵님 답

# 1 ~ 10까지의 정수를 더한 값을 저장할 변수 선언
sum = 0

for i in range(1, 11):
    # print(i)
    sum += i # sum = sum + i # 0 + 1 
    #print(sum)
print(f"합 : {sum}")

 

 


- 이중 for문(중첩 for문)

 

for문 안에 for문 : 하나의 for문 내에서 또 다른 for문을 사용

 

for 변수1 in 집합 :

       for 변수2 in 집합 :

                실행할 코드

# 이중 for문(중첩 for문)
for i in range(3) : # 바깥 for 문 0 ~ 2
  for j in range(3) : #안쪽 for 문 0~ 2
      print(f"i : {i}, j , {j}")

 

이것으로 구구단 만들기도 가능

for i in range(2, 10):
    for j in range(1, 10):
        print(f"{i} x {j} = {i*j}")

'''
쓰앵님 답
# 바깥쪽 for문 단수표현
# 안쪽 for문 곱해주는 숫자

for dan in range(2, 10) :
    print(f"======{dan}단======")  #단끼리 정리하여 표현
    for i in range(1, 10):
        print(f"{dan} x {i} = {dan * i}")
        '''

 

 


- 기타제어문

break문 처리 흐름을 강제적으로 종료하고 그 블록에서 나가는 구문
continue문 블록 내의 처리를 건너뛰고 블록 앞부분 위치로 돌아가서 다음 처리를 계속하는 구문
바로 다음 순번의 loop(반복)를 실행/수행함 (ex. 369게임)
pass문 실행할 코드가 딱히 없으면 다음 행동을 계속 진행하게 하는 기능

 

 

2024.01.31