Python/공부-ing

[Python]자료구조: 반복문

ari950505 2021. 12. 12. 18:55

 

반복문

특정 실행 반복

 

반복문을 사용하는 이유:

프로그래밍이 간결, 유지보수 용이-> 효율적.

 

횟수에 의한 반복

정해놓은 반복 횟수에 따라 반복 실행

횟수에 의한 반복은 주로 for문 사용

횟수 지정-> 횟수만큼 반복 실행 (range,len 등)

대량 메일 또는 문자 발송, 인사말 반복, mp3 반복 재생.

#문자열 반복문 , 횟수 증가 'Hello Python! loop' * 5

for h in range(5):
    print('Hello Python!', end = '')
    print('loop')


구구단 for문

for i in range(1,10):
	result = 5 * i	
	print(‘{}x{}={}’.format(5,i,result))

pass

나중에 코딩

for k in range(100):
    pass

코드블록, 들여쓰기

반복문/조건문 작성 시, 들여쓰기, 코드블록(코드블록이 상위개념.) 를 통해 for문/조건식 코드를 인식

 

조건에 의한 반복

조건 지정 -> 조건에 만족할 때까지 반복 실행. while문

 

반복 범위 설정(range()함수)

for i in range(0,11,2) -> 0부터 10까지 2씩 증가하면서 반복

시작 매개변수 생략: 시작이 0인 경우 생략 가능함. 0부터 10까지 1씩 증가(암묵적)

 

#n1~n2사이에서 2씩 증가하는 반복문

n1 = int(input())
n2 = int(input())
for i in range(n1,n2+1):
	print(i)

 

조건에 의한 반복

조건에 만족하면 반복 실행. 그렇지 않으면 중단.

조건에 의한 반복은 주로 while문 사용.

매일 아침 기상알람, 타이머

n = 0
while n < 10:
    print('Hello')
    print('Python')
    n += 1

#자연수 50 전까지 2의 배수 혹은 3의 배수 혹은 2와3의 배수도 아닌 수 판단. 

n = 1
while n < 50:
	if n % 2 == 0:
		print('{}은 2의 배수이다'.format(n))
	elif n % 3 == 0:
		print('{}은 3의 배수이다'.format(n))
	else:
		print('{}은 2의 배수도, 3의 배수도 아니다'.format(n))
	n += 1
endNum = 10
n = 0

while n <= endNum:
    print(n)
    n += 1

n = 1
while n < 10:
    result = 5 * n
    print('{} * {} = {}'.format(5,n,result))
    n += 1
#while문을 이용해 사용자가 입력한 구구단 출력.

gugu = int(input())
n = 1
while n < 101:
    result = gugu * n
    print('')
sum = 0 
n = 1 
while n < 11:
    n += 1 #(무한반복에 빠지지 않기위해 )
print('sum :{}'.format(sum))

while문이 적합한 경우

조건에 의한 반복은 while문이 더 적합.

for문은 횟수반복

#7의 배수 합 구하기
sum = 0
maxInt = 0

for i in range(1,101):
    if i % 7 ==0 and sum <= 50:
        sum += i
        maxInt = i
    print('i : {}'.format(i))
print('7의 배수의 합이 50이상인 최초의 정수 : {}'.format(maxInt))
sum = 0
maxInt = 0

while n <=100 and sum <= 50:
    n += 1

    if n % 5 ==0:
        sum += n 
        maxInt = n
    print('n : {}')
round = 0
thick = 30 

while thick >= 20:
    round += 1
    thick -= 0.15



rounds = rounds - 1     
print('앞으로 구를 수 있는 횟수:{}'.format(rounds))

무한루프

무한 반복 실행: 반복문을 빠져나올 수 없는 경우

while문에서 조건식의 결과가 항상 True인 경우

n = 1
while n < 10:
    print('HI~')
    n +=1

 

논리형 데이터 사용

조건식에 논리형 데이터를 사용해서 무한 반복 실행

flag=True
n = 0
s = 0
while flag:
  n += 1
  s += n
  print(n,',',s)
  if s > 100:
    flag = False
sum = 0
num = 0
while sum < 1000:
    num += 1
    sum += num
    print ('{}까지의 수의 합은 {}입니다'.format(num,sum))
import random
sum = 0
date = 1 
flag = True

while flag:
    patientCount = random.randint(50,100)
    sum += patientCount
    date += 1 
    print ('날짜 : {}, 하루 환자 수: {}, 누적 환자 수: {}'.format(date,patientCount,sum))

    if sum >= 10000:
        flag = False

continue 키워드

반복 실행 중 continue 시 실행 생략, 다음 반복 실행문으로 넘어감.

for i in range(100):
  if i % 2 == 0:
    continue
  print(i) #(2의 배수가 아닌 수)

 

else 키워드

else의 실행문은 반복문이 종료된 후 실행.

 

break 키워드

반복 실행 중 break 만나면 반복문 빠져나온다.

sum = 1
searchNum = 0
for i in range(1,11):
	sum *= i
	if sum > 50:
		searchNum = i
		break
print('sum: {}, searchNum: {}'.format(sum,searchNum))

 

 

중첩 반복문

반복문안에 또 다른 반복문 선언

for i in range(10,0,-1):
	for j in range(i):
		print('*', end='')
	print()
    
for i in range(2,10):
  for j in range(1,10):
    result = i*j
  print('{} * {} = {}'.format(i, j , result))

 

endNum = 10
n = 0

while n <= endNum:
    print(n)
    n += 1

n = 1
while n < 10:
    result = 7 * n
    print('{} * {} = {}'.format(7,n,result))
    n += 1

중첩 반복문 주의사항

너무 많은 반복문을 중첩하는 것은 코드를 보기 어렵고, 다량 연산으로 시스템 과부화가 걸릴 수 있기에 주의해야 한다.

(2개 적절.)