Engineering Note

[Python] 반복문 본문

Programming Language/Python

[Python] 반복문

Software Engineer Kim 2021. 5. 12. 09:45

반복문 (for, while)

  • for에서 반복문을 쓰기전에 range함수를 알아야한다.
    • range함수는 순차적으로 정수 리스트를 만든다.
    • a = range(10) #순차적으로 정수 리스트를 만든다. print(list(a))
    • 여기서 주의해야할 점은 0부터 9까지 순차적 정수 리스트를 만든다는 것이다.
    • range로 순차적 정수리스트를 만들고 a에 저장하고 a를 list형으로 변환하여 출력하면 아래의 첫 번째 줄처럼 출력결과가 나온다.
    • list 형으로 변환하지 않고 a를 출력하면 두 번째 줄 처럼 결과가 출력된다.
    • 출력결과

  • range에 정수하나가 아니라 정수 두개를 ,(콤마)를 사이에 두고 입력하면 ex)range(1,10) 첫번째 정수이상 두번째 정수미만의 범위의 리스트가 형성된다.

  • range함수와 for문을 이용하여 반복문을 쉽게 구현할 수 있다.
  • 아래문장을 실행하면 i에 1부터 9가 저장되면서 1~9까지 출력된다.
  • for i in range(1,10): print(i)
  • for문 응용
    • 아래 문장은 10부터 1씩 감소하면서 0이되면 반복문을 종료한다.
    • for i in range(10,0,-1): print(i)
    • while문은 간단하다. 그리고 여기서도 if문과 동일하게 :콜론을 찍고 들여쓰기 문법만 주의하면 쉽게 반복문을 구현 가능하다.
      • 아래의 코드는 while 반복문을 활용해 1,10까지 출력하는 코드이다.
      • i = 1 while i<=10: print(i) i = i+1
  • 반복문을 종료시키는 break문, if문을 활용해 특정 조건이 되면 반복문을 종료 시키도록 코드를 구현할 수 있다.
    • while에서 True조건이면 항상 참이기 때문에 무한 반복이 실행되므로 if break;를 이용해 i가 10이 되면 종료하도록
      • i가 1부터 1씩증가하면서 1부터 10 까지 출력하고 i가 10이 되면 종료하는 코드
      • i = 1 while True: print(i) if(i == 10): break i += 1
  • continue 반복문의 끝으로 이동하는 코드, 반복문에 속하는 모든 문장을 건너 띄고 반복문 맨아래 로 넘어간다.
    • 아래 코드는 i가 1부터 10까지 반복문에 속하는 실행문을 수행하는데 i&2==0인조건 즉 i가 짝수인 조건일 때는 반복문에 속하는 아래문장들 print 함수 2개를 모두 건너띄고 다음 조건으로 넘어간다.
for i in range(1,11): 
    if(i%2 == 0): 
        continue 
     print(i) 
     print(i)
  • Python에는 다른 프로그래밍언어와 다르게 for... else: 구문이 있다. 이 문장을 활용하면 C언어에서 마지막 for의 조건문이 만족하지 않았을 경우 반복문을 빠져나올때 어떤문장이 실행될지 가독성을 높이는 코드를 작성할 수 있고, for문이 마지막까지 수행되었는지 확인 할 수 있다.
  • 아래 처럼 코드를 구성하면 i가 0부터 1씩 증가하면서 2가되면 "loop break"를 출력하고 반복문을 종료하게 된다.하지만 아래처럼 코드를 구성하면 range의 범위에서 반복문이 모두 실행되고 마지막에 "loop end"를 출력하게된다.
`for i in range(4): 
    if(i == 5): 
        print("loop break") 
        break 
    else: 
        print("loop end")`

```python
for i in range(4): 
    if(i == 2): 
        print("loop break") 
        break 
    else: 
        print("loop end")`

중첩 반복문 (2중 for문)

아래 문장은 i가 0일때 j가 0부터4까지,
다시 i가 1일때 j가 0부터 4까지,
다시 i가 2일때 j가 0부터 4까지
...
j가 4일때 j가 0부터 4까지 실행 문장을 반복하는 코드이다.

print함수에서 sep= ''는 문자'i'과, 정수데이터 i를 출력 할때 두 데이터 사이에 구분을 ''(공백없이)로 해주겠다는 뜻이고, end = " "에 의미는 print함수는 출력을 하고 자동으로 줄바꿈을 하는데 end = " "로 줄바꿈 대신 print함수 수행 마지막에 end에 해당하는 문자를 출력하라는 뜻이다.
그리고 마지막 인자가 없이 적은 print()는 i가 바뀌기전에(j for문이 끝나고 나서) 줄바꿈을 해주어 다음 i에 실행시 문장들을 구분해주기 위함이다.

 for i in range(5):
    print('i:',i,sep='',end = ' ')
    for j in range(5):
        print('j:',j, sep = '',  end = " ")
    print()

아래 코드는 첫 번째 줄에는 별을 하나 두 번째 줄에는 별을 두개... N번째줄에는 별울 N번 찍도록 하는 코드인데 여기서는 N이 5인 경우이다.
두 가지 방식으로 코드를 구현하였다. 첫 번째는 2중 for문으로 i가 0부터 4까지 일때 j는 0부터 j = i +1까지 반복문을 수행하도록 코드를 구현하였고
두 번째 코드는 for문 하나로 i가 0부터 4까지 일때 (i+1) 문자열을 반복하여 출력하도록 문자열 연산을 사용하여 코드를 구성하였다.

for i in range(5):
    for j in range(i+1):
        print("*",end= "")
    print()
for i in range(5):

    print("*"*(i+1),end= "")
    print()
'''

출력 결과

'Programming Language > Python' 카테고리의 다른 글

[Python] 파이썬 함수 매개변수  (0) 2021.05.16
[Python] del 함수와 remove 함수  (0) 2021.05.14
[Python] 조건문  (0) 2021.05.12
[Python] 변수입력과 연산자  (0) 2021.05.11
[Python] 변수와 출력함수  (0) 2021.05.11
Comments