반복문에는 while과 for 2가지 조건문이 있다.
둘의 차이는 while은 종료시점을 모를 때 (=사용자마다 다를 때, 가변길이가 다를 때) 사용
for문은 종료시점을 알고 있을 때, 가변길이를 알고 있을 때 사용
1. for 반복문
- 특징: 지정된 횟수만큼 또는 특정 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 순차적으로 반복할 때 사용됩니다.
- 구문:
for 변수 in 시퀀스: # 반복할 코드
- 설명: 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 하나씩 변수에 대입하면서 반복문을 실행합니다.
예시:
# 리스트의 각 요소를 출력
my_list = [1, 2, 3, 4]
for num in my_list:
print(num)
- 출력:
1
2
3
4
2. while 반복문
- 특징: 반복문이 실행될 조건이 참일 때 계속 실행됩니다. 조건이 거짓이 될 때까지 반복합니다.
- 구문:
while 조건: # 반복할 코드
- 설명: 조건이 True인 동안 반복문이 실행됩니다. 조건이 False가 되면 반복문을 종료합니다.
예시:
# 1부터 5까지 출력
i = 1
while i <= 5:
print(i)
i += 1 # i를 1씩 증가시켜 반복을 종료할 조건을 만듬
- 출력:
1
2
3
4
5
3. for와 while의 차이점
- for 반복문은 반복할 횟수나 시퀀스가 정해져 있을 때 사용합니다. 예를 들어, 리스트나 튜플과 같은 반복 가능한 객체에 대해 반복할 때 유용합니다.
- while 반복문은 반복 조건이 주어지면 조건이 True인 동안 반복을 계속합니다. 따라서 반복 횟수를 모를 때 유용하게 사용됩니다.
4. 반복문에서 자주 사용하는 키워드
- break: 반복문을 강제로 종료할 때 사용합니다.
- continue: 현재 반복을 건너뛰고 다음 반복으로 넘어갈 때 사용합니다.
- else: 반복문이 정상적으로 끝났을 때 실행되는 코드 블록을 정의할 수 있습니다. (for나 while이 끝난 후 조건이 False일 때 실행)
예시:
# break 예시: 5를 만나면 반복문 종료
for i in range(1, 10):
if i == 5:
break
print(i)
- 출력:
1
2
3
4
# continue 예시: 5를 만나면 출력하지 않고 건너뜀
for i in range(1, 10):
if i == 5:
continue
print(i)
- 출력:
1
2
3
4
6
7
8
9
반복문은 프로그램에서 효율적인 작업 처리를 위해 매우 중요하며, 다양한 조건을 설정하여 유연하게 사용할 수 있습니다.
[while문]
# while
tree = 0
while tree < 10:
tree = tree + 1
print("나무를 %d번 찍었습니다." % tree)
if tree == 10:
print("나무 넘어갑니다.")
count = 0
while count < 10:
count += 1 #파이썬은 증감연산자가 없다. / 대신 복합대입연산자가 있다.
print(count)
#0부터 99까지 출력
count = -1
while count < 99:
count += 1
print(count)
count = 0
while count < 100:
print(count) #순서만 바꿔도 달라짐
count += 1
count = 0
while count < 99:
print(count)
count += 1
# 0부터 99
count = 0
while count < 100:
print(count)
count += 1
print("="*100)
# 1부터 100
count = 0
while count < 100:
count += 1
print(count)
# 1부터 100 중에 짝수만 출력하기
#1
count = 0
while count < 100:
if count%2 == 0:
print(count)
count += 2
#2
count = 0
while count < 100:
if count%2 == 0:
print(count)
count += 1
# 1과 2가 왜 같은값을 반환하는지 고민해보자
# 마지막줄에 1씩 늘리든, 2씩 늘리든
# 어차피 if문에서 나누기2 했을 때 0이어야 출력이 되기 때문에 상관없다.
# 다만 3부터는 값이 달라져서 쓰면 안됨.
#홀수찾기
count = 0
while count < 100:
if count%2 == 1: # 홀수는 나누기2 했을 때, 나머지가 1이어야함
print(count)
count += 1
[for문]
형식: for 변수 in 리스트/튜플/문자열
for i in range(1, 11): #range는 범위 함수
print(i) #i는 뭐고, range는 뭘까???????????
#range
print(range(1, 11)) #range 안에 범위를 보고싶으면 list함수 사용
print(list(range(1, 11)))
#인자(Argument) = (시작, 끝, 범위)
print(list(range(10))) #디폴트: 0부터 10까지 1단위로 반환 (이게 인자의 기본형식)
print(list(range(1, 10))) #= (시작, 끝)
print(list(range(1, 10, 2))) #슬라이싱과 같음 =(시작, 끝, 범위)
#1부터100까지 출력하는 for문 3가지
for i in range(101):
print(i)
for i in range(0, 101):
print(i)
for i in range(0, 101, 1):
print(i)
#for문으로 1부터100까지 짝수만 반환
for i in range(100):
if i % 2 == 0:
i += 2
print(i)
for i in range(1, 101):
if i % 2 == 0:
print(i)
for i in range(1, 101, 1):
if i % 2 == 0:
print(i)
for i in range(2, 101, 2):
print(i)
for i in range(1, 51):
print(i * 2)
#continue 와 break
for i in range(1, 101):
if i % 2 == 1:
continue #참이면 돌아가고, 거짓이면 다음꺼 실행
print(i)
print("=")
count = 0
while True:
count += 1
if count == 100:
break
print(count)
# 메뉴를 제대로 고를 때 까지 되물어보기
# 맞게 넣으면 다음꺼
menu = ["콜라", "물", "포카리"]
switch = True
while switch: #종료시점을 모를 때
user_input = input("메뉴를 골라주세요.: ")
for i in menu: #메뉴에는 메뉴가 들어있다. #메뉴를 누르면
if user_input in menu: #손님이 메뉴를 맞게 고르면
switch = False #switch를 '거짓'으로 치환하고
break #for문을 끝내고 while로 돌아가라.
print(input("돈을 넣어주세요.: "))
#이중반복문
# for i in range(10):
# for j in range(10):
# print(i, j)
#구구단 2단
two = 2
for i in range(2, 11, 1):
print(f'{two}x{i}={two*i}') #이거는 내가 만든거
#2단의 규칙
# 2는 고정, 뒤에 수가 1~9로 바뀜
# 정답은 2와 뒤의 수의 곱
# 1~9를 반복
for i in range(1, 10): #print(2, i, 2*i) #고정적으로 2를 할당
print(f"{2} x {i} = {2*i}")
#이거는 교수님이 알려주신거
# 2단~9단 만들기 + 효율적으로
for i in range(1, 10):
for j in range(2, 10):
print(f"{j} x {i} = {j*i:>2}", end="\t") #end문이 끝날때마다 tab을 써라
print() #줄바꿈 하기 위해 여기다 프린트
별찍기..
# 별찍기
# 별 5개
count = 0
star = "*"
while count < 5:
count += 1
print(star)
for i in range(0, 5):
print('*')
= for i in range(5)
# 별 100개를 가로
for i in range(10):
print("*", end="")
for i in range(7): #0부터 세니까 6이어도 0,1,2,3,4,5,6 < 총 7개 맞음
print("*" * i)
num = 10 #범위를 변수로 잡아두면 나중에 유지보수가 쉬움
for i in range(1, num):
print("*"*i) # i 만큼 * 곱하기
for i in range(6, 0, -1): #범위가 6부터 1씩 작아짐
print("*" * i)
star = "*"
for i in range(6, 0, -1):
print(i * " ", star)
star += "*"
*
**
***
****
*****
******
# 트리 만들기
num = 7
for i in range(num):
print(" "*(num) + "*"*(2*i-1))
num -= 1
*
***
*****
*******
*********
***********
# 다이아몬드
for i in range(1, num):
print(" " * (num - i) + "*"*(2*i -1))
for i in range(num, 0, -1):
print(" " * (num - i) + "*"*(2*i -1))
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
# 띄어쓰기 5개 / 별 1개
# 띄어쓰기 4개 / 별 3개
# 띄어쓰기 3개 / 별 5개
# 띄어쓰기 2개 / 별 7개
# 별의 규칙은 2씩 커진다. i*2-1 (i=1 > 2*2-1=3)
반대는 range 범위만 바꾸면됨
'일지' 카테고리의 다른 글
DAY 6 [딕셔너리] (0) | 2025.02.25 |
---|---|
DAY 6 [리스트] (0) | 2025.02.25 |
DAY 4 (3) | 2025.02.21 |
DAY 3 (4) | 2025.02.20 |
DAY 1 (1) | 2025.02.18 |