- for 반복문 : 범위와 함께 사용하기
count_down = list( range(10, 0, -1) ) count_down += ['fire'] for count in count_down: print(count) 10 9 8 7 6 5 4 3 2 1
- for count in range(0, 5): print(count, 'Hello World!') - 0 Hello World! - 1 Hello World! - 2 Hello World! - 3 Hello World! - 4 Hello World!
- for 반복문 : 리스트와 범위 조합하기위 코드 셀에서 리스트 names의 첫 번째 요소, 인덱스로는 0번 인덱스에 해당하는 문자열 '구숙정'에 대해서만 특별한 처리를 하고 싶습니다. 리스트 names의 요소 개수는 4개네요. 다른 말로 리스트 `names'의 길이는 4군요.
- Quiz
- names = ['구숙정', '장만옥', '매염방', '관지림', '왕조현', '원결영' ] for i in range(len(names)): if i % 2 == 0: print(names[i] + ' 안녕하세요') else: print(names[i] + ' 반갑습니다') - 구숙정 안녕하세요 - 장만옥 반갑습니다 - 매염방 안녕하세요 - 관지림 반갑습니다 - 왕조현 안녕하세요 - 원결영 반갑습니다
- names = ['구숙정', '장만옥', '매염방', '관지림'] for i in range(4): if i == 0: print(names[i]+' ^^') # 특별한 처리 else: print(names[i]) - 구숙정 ^^ - 장만옥 - 매염방 - 관지림
- names = ['구숙정', '장만옥', '매염방', '관지림'] for name in names: print(name) - 구숙정 - 장만옥 - 매염방 - 관지림
- for 반복문 : 반대로 반복하기
- for i in range(4, -1, -1 ): print(i) - 4 - 3 - 2 - 1 - 0
- 중첩 반복문으로 피라미드 만들기
for n in range(1, 6): for x in range(5-n): print(' ', end='') for x in range(n): print('*', end='') print() * ** *** **** *****
- Quiz
- # 13, 1, 13 # 12, 3, 12 # 11, 5, 11 # 10, 7, 10 # 9, 9, 9 # 8, 11, 8 # 7, 13, 7 # 6, 15, 6 # 5, 17, 5 # 4, 19, 4 # 3, 21, 3 # 2, 23, 2 # 1, 25, 1 # 0, 27, 0 # 마지막 라인에서 '*'개수는 27개 # 줄 수는 14 개 output = '' for y in range(1, 15): # 1번 줄에서부터 14번 줄까지 for x in reversed( range(14 - y) ): # 공백(' ')의 개수는 13, 12, 11, 10, ... 0 output += ' ' for x in range(2*y-1): # 별('*')의 개수는 1, 3, 5, 7, 9, ... , 27 output += '*' output += '\\n' print(output) --------또 다른 코드---------- # 교재 - 혼자 공부하는 파이썬에 있는 코드드 output ='' for i in range(1, 15): for j in range(14, i, -1): output +=' ' for k in range(0, 2*i - 1): output += '*' output += '\\n' print(output)
- 다음과 같은 출력되도록 코드를 완성하시오.
- Quiz
- for y in range(1, 6): # [1, 2, 3, 4, 5] output = '' for x in range(y): # 0,.., y-1 output += '*' print(output) * ** *** **** *****
- while 반복문
while conditon: print('.')
- while 반복문 : for 반복문처럼 사용하기
- count = 0 # 조건(condition), count < 10가 만족하면 무한히 반복 수행합니다. while count < 10: print('{}번째 작업 중입니다.'.format(count)) count += 1 # count = count + 1 print('종료') 0번째 작업 중입니다. 1번째 작업 중입니다. 2번째 작업 중입니다. 3번째 작업 중입니다. 4번째 작업 중입니다. 5번째 작업 중입니다. 6번째 작업 중입니다. 7번째 작업 중입니다. 8번째 작업 중입니다. 9번째 작업 중입니다. 종료
- while 반복문 : 상태를 기반으로 사용하기
아래 코드 셀에 보인 lst에서 값이 3인 요소가 몇개 있는지 모릅니다. 물론 lst의 내용을 확인하는 코드가 적절히 들어간다면 눈으로 확인할 수 있습니다. 만약 요소의 개수가 10,000개쯤 되고 요소의 값은 1, 2, 3 중에 하나라고 가정해 보겠습니다. 값이 3인 요소가 그 안에 몇개 있는지 눈으로 파악하기는 어렵습니다.그래서 우리는 다음과 같이 문제를 해결하려고 합니다. lst에서 값이 3인 요소를 찾아 지우기를 lst에 3이 보이지 않을 때까지 반복 수행하게 코드를 작성해보려고 합니다. (3이 lst 안에 있으면 삭제)lst = [1, 2, 3, 3, 4, 5] lst.remove(3) print(lst) [1, 2, 3, 4, 5]
- import random random.seed(73) lst = [] lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) print('작업 전!') print(lst) while 3 in lst: lst.remove(3) print('작업 끝!') print(lst) 작업 전! [2, 1, 3, 2, 3, 1, 2, 3] 작업 끝! [2, 1, 2, 1, 2]
- import random lst = [] lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) lst += random.sample([1, 2, 3], 2) print(lst) [1, 2, 1, 2, 3, 1, 3, 1]
- lst에서 값이 3인 요소를 모두 지우려고 합니다. lst.remove(3)을 실행하면 어떨까요?
- while 반복문 : 시간을 기반으로 반복하기
위 코드를 실행시킨 시점은 1970년 1월 1일 0시 0분 0초 이후 1677844665.6011834이만큼의 초가 흘렀다는 뜻입니다. 유닉스 타임과 while문을 조합하여 반복 동작을 특정 시간 동안만 하도록 코딩할 수 있습니다import time time.time() 1693895675.469955
- import time count = 0 target_time = time.time() + 1 while time.time() < target_time: count += 1 print(count) print( format(count, ',')+'[번]' ) # 처음(?!) 만나는format() 함수 # print(count + '[번]') 3987820 3,987,820[번]
- 유닉스 타임(Unix Time)이란 세계 표준시(UTC)로 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타내는 것을 말합니다.
- while 반복문 : break 키워드 / continue 키워드
- 예제 1
import random random.seed(16) while True: dice = random.randint(1, 6) if dice == 6: print('{}이 출력되어 게임을 멈춤니다.'.format(dice)) break; else: print('{}이 나왔네요. 6이 나올 때까지 다시 시도합니다'.format(dice)) print('종료') 3이 나왔네요. 6이 나올 때까지 다시 시도합니다 4이 나왔네요. 6이 나올 때까지 다시 시도합니다 4이 나왔네요. 6이 나올 때까지 다시 시도합니다 3이 나왔네요. 6이 나올 때까지 다시 시도합니다 4이 나왔네요. 6이 나올 때까지 다시 시도합니다 2이 나왔네요. 6이 나올 때까지 다시 시도합니다 4이 나왔네요. 6이 나올 때까지 다시 시도합니다 1이 나왔네요. 6이 나올 때까지 다시 시도합니다 4이 나왔네요. 6이 나올 때까지 다시 시도합니다 6이 출력되어 게임을 멈춤니다. 종료
- 주사위를 던져서 숫자를 확인할 겁니다. 주사위를 던져서 숫자 확인 반복적으로 하는데, 6이 나오면 반복 잡업을 멈추게 하겠습니다. 이 때 break문을 사용합니다.
- 예제 2
i = 0 while True: print('{}번째 청소를 시작합니다.'.format(i+1)) print('{}번째 청소 중입니다.'.format(i+1)) print('{}번째 청소를 마쳤습니다.'.format(i+1)) a_u_ok = input('청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : ') if a_u_ok in ['y', 'Y']: print('청소를 종료합니다.') break i += 1 1번째 청소를 시작합니다. 1번째 청소 중입니다. 1번째 청소를 마쳤습니다. 청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : n 2번째 청소를 시작합니다. 2번째 청소 중입니다. 2번째 청소를 마쳤습니다. 청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : n 3번째 청소를 시작합니다. 3번째 청소 중입니다. 3번째 청소를 마쳤습니다. 청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : y 청소를 종료합니다. ------- 다른 코드 ------- i = 0 tag = False while tag == False: print('{}번째 청소를 시작합니다.'.format(i+1)) print('{}번째 청소 중입니다.'.format(i+1)) print('{}번째 청소를 마쳤습니다.'.format(i+1)) a_u_ok = input('청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : ') if a_u_ok in ['y', 'Y']: tag = True print('청소를 종료합니다.') i += 1 1번째 청소를 시작합니다. 1번째 청소 중입니다. 1번째 청소를 마쳤습니다. 청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : n 2번째 청소를 시작합니다. 2번째 청소 중입니다. 2번째 청소를 마쳤습니다. 청소 상태가 마음에 드시나요. 청소를 종료할까요?(y/n) : y 청소를 종료합니다.
- 로봇에게 청소를 시킬 겁니다. 청소 상태가 마음에 들 때까지 시킬 겁니다. 한 번이고 두 번이고 제가 만족할 때까지요.
- Quiz
fish_length = [14, 15.5, 13.5, 23.5, 28.5, 26.0, 12, 32, 29, 14.5] fish_weight = [100, 150, 140, 250, 300, 280, 80, 315, 220, 90] count = 0 print('물고기는 총 {} 마리입니다.'.format( len(fish_length) ), end='\\n\\n') for idx in range( len(fish_length) ): if fish_length[idx] < 23.0: continue # codes..... # 위 continue 아래에 있는 코드(codes....)는 무의미 else: print('길이가 {}[cm]이고 무게가 {}[g]이군요'.format(fish_length[idx], fish_weight[idx])) print('이 물고기 손질을 마쳤습니다.', end='\\n\\n') count += 1 print(f'총 {count}마리 손질했습니다.') 물고기는 총 10 마리입니다. 길이가 23.5[cm]이고 무게가 250[g]이군요 이 물고기 손질을 마쳤습니다. 길이가 28.5[cm]이고 무게가 300[g]이군요 이 물고기 손질을 마쳤습니다. 길이가 26.0[cm]이고 무게가 280[g]이군요 이 물고기 손질을 마쳤습니다. 길이가 32[cm]이고 무게가 315[g]이군요 이 물고기 손질을 마쳤습니다. 길이가 29[cm]이고 무게가 220[g]이군요 이 물고기 손질을 마쳤습니다. 총 5마리 손질했습니다.
- 물통에 물고기가 담겨 있습니다. 크고 작은 물고기가 썩여 있습니다. 이 중에서 길이가 23cm 이상인 녀석만 회로 먹기 위해 손질하겠습니다. 물고기의 길이와 무게를 측정하여 길이는 리스트 fish_length에 저장했고 무게는 리스트 fish_weight에 저장했습니다. 길이 단위는 [cm]입니다. 무게 단위는 [g]입니다.손질한 생선은 몇 마리인가요?
- 예제 1
- 아래 코드에서 condition이 참(True)라면 print('.')를 멈추지 않고 계속 반복 수행합니다. 멈주지 않고 무한히 반복 수행하는 것을 무한 루프라고 합니다.