Chapter 06. 반복문

이성욱·2024년 4월 29일

반복문

반복문과 자동화

반복적이고 지루한 작업은 컴퓨터를 이용하여 자동화하여야 한다. 동일한 작업을 오류 없이 반복하는 것은 컴퓨터가 아주 잘 할 수 있는 일이다.

반복구조

  1. 무한루프
  2. 특정 회수 만큼 반복 : 변수 하나 사용
    1) 변수초기값 : 시작값
    2) 값비교(조건) : 끝값
    3) 변수의 증가/감소 : 조건을 끝내기 위한 문장
  3. 반복 회수가 정해지지 않은 반복
    프로그래머가 몇번 반복할지는 모르는 경우
    프로그램 실행하는 실행자가 판단

while 문

문법적으로 if문과 유사
어떤 조건이 만족되는 동안, 반복을 계속하는 구조
특정 회수 만큼 반복도 가능

1. 무한루프

n = 10
while n<20:
	print("Hello")

2. 특정 회수 만큼 반복

n=1
while n<=3:
	print("Hello")
    n+=1

3. 반복 회수가 정해지지 않은 반복

total=0
num=-999
count = 0
while num!=0:
    num = int(input("정수 입력(0 입력 시 프로그램 종료): "))
    total = total + num
    count += 1
print(f"총합: {total}")
if count>1:
    print(f"평균: {total/(count-1)}")
##string = ""
##while string != "exit":
##    string = input("문장입력:")
##    print(string,len(string)) # len() 문자열의 길이를 알 수 있다.

1 -> 3

string = ""
while True:
    string = input("문장입력:")
    if string == "exit":
        break
    print(string,len(string))
total=0
count = 0
while True:
    num = int(input("정수 입력(0 입력 시 프로그램 종료): "))
    if num == 0:
        break
    total = total + num
    count += 1
print(f"총합: {total}")
if count>1:
    print(f"평균: {total/count}")

for 문

정해진 회수만큼 반복하는 구조

시퀀스란?

순서를 나타내는 자료형들
리스트, 문자열, 튜플(tuple), range함수

리스트를 이용한 for문의 반복

for n in [10,"A",30,3.14,999]:
    print("Hello",n)

abc = [1,2,3,4]
for m in abc:
    print("World",m)

range() 함수

세 가지 형태의 range() 함수

  • range(a) : 괄호안에 하나의 정수가 들어감
    : 0부터 a 전까지 정수가 발생
for m in range(5): # [0.1.2.3.4]
    print("World",m)
  • range(a,b) : 괄호안에 두 개의 정수가 들어감
    : a 부터 b 전까지 정수가 발생
for m in range(0,5): # [0.1.2.3.4]
    print("World",m)

for n in range(3,8): # [3.4.5.6.7]
    print("Hello",n)
  • range(a,b,c) : 괄호안에 세개의 정수가 들어감
    : a 부터 b 전까지 c만큼 증가/감소 하면서 정수가 발생
for x in range(3,9,2): # [3,5,7]
    print("Good",x)

for z in range(10,1,-1):
    print(z, end=" ")
print()


while

print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello") # Hello * 5


# 1. 무한루프
n = 10
while n<20:
    print("n은 20보다 작다")


# 2. 특정 회수 만큼 반복
n = 1 # 시작값
while n<=3: # 조건 : 끝값
    print("Hello")
    n += 1 # 증감


# 예제 1
n = 1
hap = 0
while n<=100:
    hap+=n
    n = n+1
print("1~100합 =",hap)

# 예제 2
n = 1
hap = 0
while n<=100:
    if n%3 == 0:
        hap+=n
    n = n+1
print("1~100 3의 배수의 합  =",hap)


# 3. 회수가 정해지지 않은 반복
total=0
num=-999
count = 0
while num!=0:
    num = int(input("정수 입력(0 입력 시 프로그램 종료): "))
    total = total + num
    count += 1
print(f"총합: {total}")
if count>1:
    print(f"평균: {total/(count-1)}")



string = ""
while string != "exit":
    string = input("문장입력:")
    print(string,len(string)) # len() 문자열의 길이를 알 수 있다.

# 1 -> 3 으로 바꾸기
string = ""
while True:
    string = input("문장입력:")
    if string == "exit":
        break
    print(string,len(string))



total=0
count = 0
while True:
    num = int(input("정수 입력(0 입력 시 프로그램 종료): "))
    if num == 0:
        break
    total = total + num
    count += 1
print(f"총합: {total}")
if count>1:
    print(f"평균: {total/count}")

6ex1

print("** 합 구하기 **")
stnum = int(input("시작점: "))
endnum = int(input("끝점: "))
num = stnum
hap = 0

while num <= endnum:
    hap+=num
    num+=1

print(f"{stnum}부터 {endnum}까지의 합은 : {hap}")

6ex2

import random

num = random.randint(1,20)

print("** 숫자 맞추기 게임 **")
print("컴퓨터가 1~20 중 하나를 선택")
print("당신이 맞추세요")

while True:
    usernum = int(input("당신이 생각하는 숫자는?"))
    if usernum > num:
        print(f"틀렸습니다. {usernum}보다 작은 수 입니다.")
    elif usernum < num:
        print(f"틀렸습니다. {usernum}보다 큰 수 입니다.")
    else:
        print("축하합니다. 정답입니다.")
        break

for

for n in [10,"A",30,3.14,999]:
    print("Hello",n)

abc = [1,2,3,4]
for m in abc:
    print("World",m)


for m in range(5): # [0.1.2.3.4]
    print("World",m)

for m in range(0,5): # [0.1.2.3.4]
    print("World",m)

for n in range(3,8): # [3.4.5.6.7]
    print("Hello",n)

for x in range(3,9,2): # [3,5,7]
    print("Good",x)


for x in range(5,10):
    print(x, end=" ")
print()

for y in range(5,10,2):
    print(y, end=" ")
print()

for z in range(10,1,-1):
    print(z, end=" ")
print()

# 걍 참고
print(list(range(5)))

n = int(input("1~n 까지의 합을 구할 거임. n값: "))
hap = 0

for x in range(1,n+1):
    hap = hap + x

print("1~%d 까지의 합 = %d"%(n, hap))



m = int(input("1~m 까지의 곱을 구할 거임. m값: "))
gop = 1

for x in range(1,n+1):
    gop = gop * x

print("1~%d 까지의 곱 = %d"%(n, gop))

6ex3

print("** 순차 합을 구하는 프로그램 **")

stnum = int(input("어디서부터의 합을 구할까요? "))
endnum = int(input("어디까지의 합을 구할까요? "))
result = 0

for x in range(stnum, endnum+1):
    result += x

print(f"{stnum}부터 {endnum}까지의 합은 {result}입니다.")

6ex4

print("** 간단한 구구단 프로그램 **")
n = int(input("몇 단을 할까요? "))
m = int(input("몇 까지 곱셈을 할까요?"))

for i in range(m):
    print(f"{n} * {i+1} = {n*(i+1)}",end="")
    if i<m-1:
        print(",",end =" ")
    else:
        print()

##dan = int(input("몇 단?"))
##num = int(input("몇까지 곱셈?"))
##
##for i in range(1,m+1):
##    print("%d * %d = %d"%(dan,i,dan*i),end="")
##    if i!=num:
##        print(", ",end="")
##
##print()


# 다섯개마다 줄 바꾸기
print("** 간단한 구구단 프로그램 **")
n = int(input("몇 단을 할까요? "))
m = int(input("몇 까지 곱셈을 할까요?"))

for i in range(m):
    print(f"{n} * {i+1} = {n*(i+1)}",end="")
    if (i+1)%5==0:
        print()
    elif i<m-1:
        print(",",end =" ")
    else:
        print()

0개의 댓글