[Python] Chapter9 반복문 for

4 분 소요

Chapter9 반복문 for

for

  • 반복 ( 은 동일한 문장을 여러 번 반복시키는 구조
  • 컴퓨터는 인간과 다르게 반복적인 작업을 실수 없이 빠르게 할 수 있으며 , 이것이 컴퓨터의 가장 큰 장점
  • 만약 1000 번의 같은 명령어를 반복해야 한다면 다음과 같이 작성 해야함
  • 파이썬에서는 2 가지 형태의 반복문 지원
    • for 문 정해진 횟수만큼 반복
    • while 문 어떤 조건이 만족되는 동안 반복
  • for 문 형식

    for a in iterable

    iterable : string, list, range( ) 등 셀 수 있는 데이터 모임 순서열 형식 데이터 a : iterable 의 원소 값을 갖는 변수 for 문 iterable 의 모든 원소값을 차례로 a 로 참조 하여 , for 내의 명령을 반복 수행 .

  • 수행 순서 ① 예약어 in 다음에 지정되어 있는 iterable object 에서 차례로 데이터를 참조 ② 참조한 데이터를 예약어 for 다음에 명시한 변수 a 에 저장함 ③ 코드 블록을 수행 . iterable object 에서 참조할 더 이상의 원소가 없으면 반복을 종료

    for 문과 리스트

L = [1, 3, 6]
for x in L :
    print (x, end="") # 출력 : 1 3 6
print ("")

for 문과 문자열

  • 문자열에 대한 반복
for char in "Seoul" :
    print(char, end='#')
① 변수 char 에 첫번째 문자 S” 할당
② 출력문 실행
③ 문자열에 있는 문자들이 차례로 변수 char 에 할당되어 출력문 실행을 반복
④ 마지막 문자 "l" 까지 할당하여 반복코드를 수행 후 for 문을 종료
  • 문자열을 입력 받아 모음을 전부 없애는 코드
s = input(' 문자열을 입력하시오 :')
vowels = " aeiouAEIOU"
result = ""
for letter in s:
    if letter not in vowels:
        result += letter
print(result)
  • 문자열을 입력 받아 자음과 모음의 개수를 집계하는 코드
string = input(' 문자열을 영어로 입력하시오 :')
vowels = 0
consonants = 0
if len (string) > 0 :# 빈 문자열이 입력된 경우 검사
    for char in string :
        if char.isalpha () :# 영어 대소문자인 경우만
            if char in ' aeiouAEIOU ':
                vowels += 1
            else:
                consonants += 1
                print(" 모음의 개수 ",vowels)
                print(" 자음의 개수 ",consonants)
else :
    print (" 빈 문자열입니다")  

for 문과 range()

  • range() 함수
    • object type 이 range 인 일련의 정수 sequence 를 생성 하는 함수 .
    • 함수 단독으로는 사용이 어려우며 , 주로 for loop 와 함께 사용
    • range(start, end, step)
    • start 부터 end 1 까지 step 씩 증가 하면서 sequence 생성
    • 슬라이싱에서의 start, end, step 가 같은 의미
      range (5)# sequence 0, 1, 2, 3, 4
      range (1, 6)# sequence 1, 2, 3, 4, 5
      range (4, 10, 2)# sequence 4, 6, 8
      range (5, 1, 2)# sequence 5, 3, 1
      range (9, 0)# empty sequence(9 > 0) 이므로
        
      L = [1, 3, 6]
      for i in range len (L)) :# i 0,1,2
      L[ i ] = L[i]**2 # L[i] 값이 바뀜
      print ( L) # 출력 : [1,9,36]
        
    
  • range() 함수가 생성한 sequence 를 list, tuple, set 등 다른 데이터 형으로 변환하여 사용
  • range() 함수가 생성한 sequence 를 반복문의 반복 횟수 제어에도 사용

리스트 내포 (list comprehension)

a = [1, 2, 3, 4]
result = [ ]
for num in a:
    result.append(num *3)
print(result) # [3, 6, 9,12]

continue

  • continue 명령어는 현재 loop 에서 continue 문 다음 명령어들 코드 블록 내에서 을 실행하지 않고 반복문의 처음 으로 돌아감
  • 프로그램 흐름
    • if 문을 이용해서 continue 문을 실행할 조건 체크
    • 조건이 True 이면 continue 문이 실행되어 반복문의 처음으로 돌아가고 , False 이면 코드 블록내의 나머지 명령어들을 실행
    • 조건이 True 일때 continue 문 전에 실행할 명령어가 있다면 추가 가능
  • 1 부터 20 까지의 수 중에서 3 이나 4 로 나누어지는 수를 제외한 숫자들을 차례로 출력하는 코드
for x in range(1, 21) :
    if x % 3 == 0 or x % 4 == 0 :
        continue
    print(x, end=" ")
print()

break

  • break 명령어는 현재 loop 에서 반복문을 종료하며 loop 을 빠져나옴
  • 프로그램 흐름
    • if 문을 이용해서 break 문을 실행할 조건 체크
    • 조건이 True 이면 break 문이 실행되어 loop 을 빠져 나가고 , False 이면 코드 블록 내의 나머지 명령어들을 실행
    • 조건이 True 일때 break 문 전에 실행할 명령어가 있다면 추가 가능
for v in iterable :
    statements
    if condition
        statements
        break
    ...
    statements
statements

  • 자연수 N 이 소수 (a prime number) 인지 판단하는 코드
N = int (input ("N(> 1)?"))
primeChk = True
for k in range (2, N) :
    if N % k == 0 :
        primeChk = False
        break # N-1까지 안돌아도 됨.
if primeChk == True :
    print("prime")
else :
    print("not prime")

pass

  • pass 명령어는 프로그램에 미완성 부분이 있을 때 , 이를 지금 작성하지 않고 나중에 작성하려 할 때 사용
  • 프로그램을 테스트해가며 점차적으로 작성할 때 , 또는 해당 부분을 다른 사람에게 작성을 부탁할 때 사용

      for x in range( 1, 11 ) :
          pass # 나중에 작성하고자 할 때 사용
    

Nested for loop

  • for loop 안에 또 다른 for loop 가 포함
  • loop 안에 if 문 , while 문 등 어떤 것도 올 수 있음
  • 각 코드 블럭은 확실하게 들여쓰기를 해서 구별해야 함
    • 기호를 삼각형 모양으로 출력하는 프로그램 ```python for x in range(1, 6): for y in range(x): print(“*”, end=””) print(“”) # 내부 반복문이 종료될 때마다 줄바꿈 실행

- 구구단 출력하는 프로그램
```python
for x in range(1,10) :
    for y in range(1,10) :
        print('%d*%d = %2d' % (x, y, x*y), end=' ')
print()

  • 개수를 모르는 데이터 입력 받는 파이썬 코드

    L=list( int (x) for x in input(“Numbers? “).split())

댓글남기기