1. 왜 반복문이 중요한가
반복적으로 수행하는 번거로운 작업을 손쉽게 해결해줌
for i in range(5):
print("###########################")
2. 반복의 종류
횟수 제어 반복(for 문): 보통 횟수를 정해 놓고 반복한다
조건 제어 반복(while문): 특정한 조건이 만족되면 계속 반복한다
for t in range(10):
print(t)
3. 횟수를 정해놓고 반복시키자
리스트 [....]
매번 반복될 때마다 변수 i는 리스트의 원소 값이 차례로 대입됨
4. for - in 다음에는 리스트나 문자열도 올 수 있다
bts = ['V', 'J-Hope', 'RM', 'Jungkook', 'Jin', 'Jimin', 'Suga']
for i in bts:
print(i)
5. for문과 찰떡 궁합인 range() 함수
list()로 range() 함수가 생성하는 정수들을 볼 수 있음
range() 함수는 연속적인 값들을 생성하는 일을 함
range() 함수는 range 형의 자료형을 반환함
6. range() 함수는 숫자를 생성하는 공장이다
range(start, stop, step)
import turtle
t = turtle.Turtle()
t.shape('turtle')
for i in range(6):
t.left(60)
t.circle(50)
turtle.done()
import turtle
t = turtle.Turtle()
t.shape('turtle')
for i in range(3):
t.forward(100)
t.left(120)
t.penup()
t.forward(200)
t.pendown()
for i in range(4):
t.forward(100)
t.left(90)
t.penup()
t.forward(200)
t.pendown()
for i in range(6):
t.forward(100)
t.left(60)
turtle.done()
import turtle
t = turtle.Turtle()
t.shape('turtle')
user = int(turtle.textinput(" ", "몇각형을 원하시나요?"))
for i in range(user):
t.forward(100)
t.left(360/user)
turtle.done()
import turtle
t = turtle.Turtle()
t.shape('turtle')
n = int(turtle.textinput(" ", "몇각형을 원하시나요?"))
side = int(turtle.textinput(" ", "한 변의 길이를 얼마로 할까요?"))
for i in range(n):
t.forward(side)
t.left(360/n)
turtle.done()
import random
import turtle
t = turtle.Turtle()
t.shape('turtle')
number = random.randint(1, 100)
for i in range(number):
angle = random.randint(-180, 180)
t.left(angle)
t.forward(100)
turtle.done()
n = int(input("정수를 입력하시오: "))
value = 1
for i in range(1, n+1):
value = value * i
print(n,"!은 ",value," 이다.", sep="")
sep을 이용하여 변수 출력 사이의 공백 제거
7. 조건에 따라 반복해서 실행하는 while 문
while 조건식:
PW = "pythonisfun"
user = input("암호를 입력하시오: ")
while user != PW:
user = input("암호를 입력하시오: ")
print("** 로그인 성공 **")
그냥 처음부터 user 을 공백으로 설정하고 조건문에 pythonisfun을 넣어서 while문이 실행되게 해도 됨
8. 일정한 횟수 반복에 while 사용하기
근데 굳이?
n = int(input("원하는 단은: "))
count = 1
while count <= 9 :
print(n, "*", count, "=", n * count)
count += 1
n = 1
while n <= 9:
count = 1
while count <= 9 :
print(n, "*", count, "=", n * count)
count += 1
n += 1
print("")
import turtle
t = turtle.Turtle()
for i in range(18):
t.forward(100)
t.right(140)
turtle.done()
각 각도마다 몇 번 움직이면 다시 제자리(360)로 오는지를 생각해보면 몇 개의 각이 나오는지 알 수 있음
예를들어서 136도를 꺾는 친구는 다시 제자리인 360도에 돌아오기 위해서는 그 둘의 최소공배수를 구하면 됨
import turtle
t = turtle.Turtle()
t.shape('turtle')
count = 1
while count < 11:
t.forward(50)
if count % 2 != 0:
t.right(144)
elif count % 2 == 0:
t.left(72)
count += 1
import turtle
t = turtle.Turtle()
t.speed(0)
t.width(3)
length = 10
while length < 500:
t.forward(length)
t.right(89)
length += 5
turtle.done()
answer = "yes"
sum = 0
while answer == "yes":
num = input("숫자를 입력하시오: ")
num = int(num)
sum += num
answer = input("계속?(yes/no): ")
print("합계는 : ",sum)
import random
choice = random.randint(1, 100)
user = 0
count = 0
print("1부터 100까지의 숫자를 맞추시오")
for i in range(10): #시도횟수를 10번으로 제한
user = int(input("숫자를 입력하시오: "))
if user < choice:
print("높음!")
elif user > choice:
print("낮음!")
count += 1
print("축하합니다. 총 시도횟수 = ", count)
import random
while True:
a = random.randint(1, 100)
b = random.randint(1, 100)
print(a, " + ", b, " = ", end = " ") #역시 input()안에 변수는 못 써 넣는 거 같다 end는 추가할 문자 sep은 구분할 문자
answer = int(input())
if answer == a + b:
print("잘했어요!!")
else:
print("정답은 ", a + b," 입니다. 다음번에는 잘할 수 있죠?")
for i in ["호밀빵", "위트", "화이트"]:
for j in ["미트볼", "소시지", "닭가슴살"]:
for k in ["양상추", "토마토", "오이"]:
for l in ["허니 머스타드", "칠리"]:
print(i,"+", j, "+", k, "+" , l,)
이렇게 4중 루프를 사용하게 되면 들여쓰기 레벨이 증가하게 되고 루프제어 변수도 4개가 필요해서 코드를 읽기 매우 어려워짐
9. 무한 루프와 break로 빠져나가기
break는 루프를 강제적으로 빠져나올 때 사용하는 문장임
user = input("단어를 입력하세요 : ")
for i in user:
if i == "a":
break;
elif i == "i":
break;
elif i == "u":
break;
elif i == "e":
break;
elif i == "o":
break;
else:
print(i, end = "")
user = input("단어를 입력하세요 : ")
for i in user:
if i in["a", "i", "u", "e", "o"]:
break;
else:
print(i, end = "")
10. 루프를 제어하는 고급기법: continue와 break
continue는 아래의 문장만 건너뜀
그러나 break와 continue는 너무 많이 사용되면 제어의 흐름에 일관성이 없어 프로그램을 이해하기 어려워짐
11. 출력을 예쁘게 만드는 포메팅
format()메소드
{}는 플레이스홀더로 format() 메소드의 인자로 들어오는 값이 출력되는 위치를 지정하는 역할을 함
'I like {} and {}'.format('python', 'java')
>> i like python and java
0, 1, 2 등의 인덱스를 이용해서 인자값을 지정할 수도 있음
플레이스 홀더에 n:a.bf 형식의 값을 넣어 마침표 앞에 전체 필드의 폭을 지정할 수도 있으며 소수점 아래의 자리도 출력이 가능함
{0:10.3f} >> 전체 필드 10칸 소수점 아래 3칸 f는 부동소수점 d는 정수
요약
1. for 반복문을 사용하면 list 안의 원소 값이 차례대로 대입됨
2. range(start, stop, step) 함수는 연속적인 값들을 생성하는 역할을 함, range형의 자료형을 반환함
3. continue는 아래의 문장만 건너 뜀
4. {}(플레이스홀더)와 format() 메소드를 이용하여 포메팅을 할 수 있음
5. end는 뒤에 어떤 문자를 추가할 것인가, sep은 구분자를 어떤 걸로 할 것인가
'코딩의 기록' 카테고리의 다른 글
따라하며 배우는 파이썬과 데이터과학 -6. 함수로 일처리를 짜임새있게 하자 (0) | 2025.01.13 |
---|---|
따라하며 배우는 파이썬과 데이터과학 5장 심화문제 (0) | 2025.01.09 |
따라하며 배우는 파이썬과 데이터 과학 3장 심화문제 (0) | 2024.12.02 |
따라하며 배우는 파이썬과 데이터과학 - 3. 연산자로 계산을 해 보자 (1) | 2024.11.29 |
따라하며 배우는 파이썬과 데이터과학 2장 심화문제 (0) | 2024.11.26 |