프로그램의 철근, 제어문

hyHA·2023년 12월 17일
0

집을 지을 때 나무, 돌, 시멘트 등의 재료와 철근 등의 집의 뼈대가 필요하다.

프로그램을 만드는 것도 집 짓기와 매우 비슷한 면이 있다. 나무, 돌, 시멘트와 같은 재료는 자료형이 되고 집의 뼈대를 이루는 철근은 제어문에 해당한다.

자료형을 바탕으로 제어문을 이용하여 프로그램의 구조를 만들어 보자.

if문 vs while문

if문과 while문은 조건이 참(True)일 때 코드 블록을 실행한다

그리고 선택적으로 실행이 필요하면 if문, 반복 작업이 필요하면 while문을 사용한다

  • if문
    • 특정 조건에 따라 코드를 선택적으로 실행할 때 사용
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket: //여러 조건 중, 참인 경우만 실행됨
...      print("택시를 타고가라")
... elif card: 
...      print("택시를 타고가라")
... else:
...      print("걸어가라")
...
택시를 타고가라
  • while문
    • 조건이 만족하는 동안 반복 작업이 필요할 때 사용
>>> treeHit = 0
>>> while treeHit < 10:  //조건이 참이면 코드가 반복적으로 실행됨
...     treeHit = treeHit +1
...     print("나무를 %d번 찍었습니다." % treeHit)
...     if treeHit == 10:
...         print("나무 넘어갑니다.")
...
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.

for문 vs while문

for문과 while문은 반복 작업이 필요할 때 사용한다

  • while문
    • 조건문이 참인 동안 while 문에 속한 문장들이 반복해서 수행
  • for 문
    • 주로 시퀀스(리스트, 튜플, 문자열 등)의 각 요소를 순회할 때 사용됨
    • 주로 반복 횟수가 명확할 때 사용
    • 문장 구조가 한눈에 들어온다는 장점이 있다
>>> test_list = ['one', 'two', 'three'] 
>>> for i in test_list: //리스트의 각 변수를 차례로 사용
...     print(i)
... 
one 
two 
three

>>> add = 0 
>>> for i in range(1, 11):  //객체의 요소를 차례로 대입
...     add = add + i 
... 
>>> print(add)
55

if의 조건부 표현식

한 줄로 작성하여 가독성을 높이고 싶을 때 사용

변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값

message = "success" if score >= 60 else "failure"

range 함수

range함수는 일정한 범위의 정수 시퀀스를 생성하는 데 사용되는 함수로, for 문과 함께 자주 사용하는 함수이다

이 함수는 입력받은 숫자에 해당하는 범위 객체(range object)를 반환하며, 이를 반복문에서 사용한다

인수가 하나일 경우

시작 숫자를 지정해 주지 않으면 range 함수는 0부터 시작한다.

>>> list(range(5))

[0, 1, 2, 3, 4]

인수가 2개일 경우

입력으로 주어지는 2개의 인수는 시작 숫자와 끝 숫자를 나타낸다.
단, 끝 숫자는 해당 범위에 포함되지 않는다는 것에 주의하자.

>>> list(range(5, 10))

[5, 6, 7, 8, 9]

인수가 3개일 경우

세 번째 인수는 숫자 사이의 거리를 말한다.

>>> list(range(1, 10, 2))

[1, 3, 5, 7, 9]

>>> list(range(0, -10, -1))

[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
profile
룰루랄라

0개의 댓글