DAY 5 [반복문/while/for]

2025. 2. 24. 09:19·일지

반복문에는 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
'일지' 카테고리의 다른 글
  • DAY 6 [딕셔너리]
  • DAY 6 [리스트]
  • DAY 4
  • DAY 3
joo_coding
joo_coding
2025.02.18~
  • joo_coding
    주코딩일지
    joo_coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (163)
      • 일지 (19)
      • 계획표 (7)
      • 프로젝트 (6)
      • C언어 (35)
        • 연습장 (12)
      • C++ (3)
      • Python (28)
        • 연습장 (11)
      • TCP IP (4)
      • DB (2)
      • ubuntu (1)
      • Git (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어 #vscode #gcc #윈도우 #c언어윈도우 #gcc윈도우 #vscode윈도우 #c #c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
joo_coding
DAY 5 [반복문/while/for]
상단으로

티스토리툴바