"Anaconda Prompt 3-1) 제어문 학습 ; 반복문 그리고 연습문제"

Anaconda Prompt 3-1) 제어문 학습 ; 반복문 그리고 연습문제

반복문 (Loop Statements)

반복문은 특정 코드 블록을 여러 번 실행합니다

for 문

  • 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 대해 반복합니다.
for item in sequence:
    # 각 항목에 대해 실행할 코드

while 문

  • 조건이 참인 동안 코드 블록을 반복 실행합니다.
while condition:
    # 조건이 참일 때 반복할 코드



연습문제 1: 구구단 출력

문제: 사용자로부터 출력할 구구단의 단을 입력받아, 해당 단의 구구단을 출력하는 프로그램을 작성하세요.

연습문제 1: 구구단 출력

연습문제 2: 리스트 요소 합계

문제: 주어진 리스트의 모든 요소의 합계를 구하는 프로그램을 작성하세요.

연습문제 2: 리스트 요소 합계

=> 설명)
이 코드는 주어진 리스트 numbers의 모든 요소의 합계를 계산하고 출력하는 프로그램입니다. 코드를 단계별로 설명해 드리겠습니다.

numbers = [1, 2, 3, 4, 5]

numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 1, 2, 3, 4, 5라는 정수들이 포함되어 있습니다.

total = 0

total이라는 변수를 0으로 초기화합니다. 이 변수는 리스트의 모든 요소의 합계를 저장하는 데 사용됩니다.

for num in numbers:
    total += num
  • for 반복문은 numbers 리스트의 각 요소를 순회합니다.
  • num 변수는 리스트의 각 요소를 순차적으로 가리킵니다.
  • total += num 구문은 totalnum의 값을 더합니다. 이 구문은 total = total + num과 동일합니다.
  • 반복문이 실행될 때마다 리스트의 각 요소가 total에 더해집니다.

반복문 실행 과정:

  1. num = 1일 때: total = total + 1 -> total = 0 + 1 -> total = 1
  2. num = 2일 때: total = total + 2 -> total = 1 + 2 -> total = 3
  3. num = 3일 때: total = total + 3 -> total = 3 + 3 -> total = 6
  4. num = 4일 때: total = total + 4 -> total = 6 + 4 -> total = 10
  5. num = 5일 때: total = total + 5 -> total = 10 + 5 -> total = 15

최종 출력
print(f"리스트의 모든 요소의 합계는 {total}입니다.")

  • print 함수는 f-string을 사용하여 메시지를 출력합니다.
  • f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다. {total} 부분은 total 변수의 값을 문자열에 삽입합니다.
  • 최종 출력은 "리스트의 모든 요소의 합계는 15입니다."가 됩니다.

요약

이 코드는 다음과 같은 작업을 수행합니다:

  1. numbers 리스트를 정의합니다.
  2. total 변수를 0으로 초기화합니다.
  3. for 반복문을 사용하여 리스트의 각 요소를 순회하면서 total에 더합니다.
  4. 리스트의 모든 요소를 더한 결과를 출력합니다.


연습문제 3: 팩토리얼 계산

문제: 사용자로부터 입력받은 정수의 팩토리얼을 계산하는 프로그램을 작성하세요. 팩토리얼은 n! = n * (n-1) * (n-2) * ... * 1로 정의됩니다.

연습문제 3: 팩토리얼 계산

=> 설명)
이 코드는 사용자가 입력한 정수의 팩토리얼을 계산하고 출력하는 프로그램입니다. 각 부분을 단계별로 설명해 드리겠습니다.

number = int(input('팩토리얼을 계산할 정수를 입력하세요: '))

  • input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
  • int() 함수는 입력된 문자열을 정수로 변환합니다.
  • 따라서, number 변수에는 사용자가 입력한 정수가 저장됩니다.

  • factorial = 1

  • factorial 변수를 1로 초기화합니다.
  • 이 변수는 팩토리얼 값을 저장하는 데 사용됩니다. 초기값을 1로 설정하는 이유는 곱셈의 항등원(곱하기 연산의 중립적인 값)이 1이기 때문입니다.


  • for i in range(1, number + 1):
        factorial *= i

    • for 반복문은 range(1, number + 1)을 사용하여 1부터 number까지(포함) 순차적으로 반복합니다.
    • range(1, number + 1)은 1부터 number까지의 정수를 생성합니다.
    • factorial *= ifactorial = factorial * i와 동일합니다. 반복문이 실행될 때마다 factorial 변수에 i 값을 곱합니다.

    반복문 실행 과정 (number가 5인 경우):

    1. i = 1일 때: factorial = 1 * 1 -> factorial = 1
    2. i = 2일 때: factorial = 1 * 2 -> factorial = 2
    3. i = 3일 때: factorial = 2 * 3 -> factorial = 6
    4. i = 4일 때: factorial = 6 * 4 -> factorial = 24
    5. i = 5일 때: factorial = 24 * 5 -> factorial = 120

    최종 출력

    print(f"{number}의 팩토리얼은 {factorial}입니다.")

    • print 함수는 f-string을 사용하여 결과를 출력합니다.
    • f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다. {number}{factorial} 부분은 각각 numberfactorial 변수의 값을 문자열에 삽입합니다.
    • 예를 들어, number가 5라면 최종 출력은 "5의 팩토리얼은 120입니다."가 됩니다.

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 사용자가 입력한 정수를 number 변수에 저장합니다.
    2. factorial 변수를 1로 초기화합니다.
    3. 1부터 number까지의 정수를 순회하면서 factorial 변수에 현재 정수 값을 곱합니다.
    4. 계산된 팩토리얼 값을 출력합니다.

    이 코드는 반복문을 사용하여 팩토리얼을 계산하는 방법을 보여줍니다. 팩토리얼은 주어진 정수까지의 모든 정수의 곱을 의미합니다.


    연습문제 4: 짝수와 홀수 구분

    문제: 1부터 100까지의 숫자를 반복문을 사용하여 순회하면서, 각 숫자가 짝수인지 홀수인지 출력하는 프로그램을 작성하세요.

    연습문제 4: 짝수와 홀수 구분

    => 설명)
    이 코드는 1부터 100까지의 숫자를 순회하면서 각 숫자가 짝수인지 홀수인지 판별하여 출력하는 프로그램입니다. 코드를 단계별로 설명해 드리겠습니다.

    for i in range(1, 101):

  • for 반복문은 range(1, 101)을 사용하여 1부터 100까지의 정수를 순회합니다.
  • range(1, 101)은 1부터 100까지의 정수를 생성합니다.
  • i는 현재 반복 중인 숫자를 가리킵니다.

  • if i % 2 == 0:

  • if 조건문은 i가 짝수인지 확인합니다.
  • i % 2i를 2로 나눈 나머지를 구합니다.
  • i % 2 == 0i가 2로 나누어떨어지는지(즉, 짝수인지) 판별합니다.
  • 만약 i % 2 == 0이 참이면, i는 짝수입니다.

  • print(f'{i}는 짝수입니다.')

  • 짝수인 경우, print 함수는 f-string을 사용하여 결과를 출력합니다.
  • f-string은 문자열 내에 변수 값을 삽입하는 기능을 제공합니다. {i} 부분은 i 변수의 값을 문자열에 삽입합니다.
  • 예를 들어, i가 2라면 출력은 "2는 짝수입니다."가 됩니다.

  • else:
        print(f'{i}는 홀수입니다.')
    • else 블록은 if 조건이 거짓일 경우 실행됩니다. 즉, i가 짝수가 아닌 경우입니다.
    • 홀수인 경우, print 함수는 f-string을 사용하여 결과를 출력합니다.
    • 예를 들어, i가 1이라면 출력은 "1는 홀수입니다."가 됩니다.

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 1부터 100까지의 숫자를 반복문을 통해 순회합니다.
    2. 각 숫자 i가 짝수인지 홀수인지 판별합니다.
    3. i가 짝수이면 "i는 짝수입니다."를 출력합니다.
    4. i가 홀수이면 "i는 홀수입니다."를 출력합니다.

    연습문제 5: 역순 출력

    문제: 사용자로부터 정수를 입력받아, 1부터 입력받은 정수까지의 숫자를 역순으로 출력하는 프로그램을 작성하세요.

    연습문제 5: 역순 출력
    => 입력값 3

    => 설명)
    이 코드는 사용자가 입력한 정수부터 1까지의 숫자를 역순으로 출력하는 프로그램입니다. 각 부분을 단계별로 설명해 드리겠습니다.

    number = int(input('정수를 입력하세요: '))

  • input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
  • int() 함수는 입력된 문자열을 정수로 변환합니다.
  • 따라서, number 변수에는 사용자가 입력한 정수가 저장됩니다.

  • for i in range(number, 0, -1):

  • for 반복문은 range(number, 0, -1)을 사용하여 number부터 1까지의 정수를 역순으로 생성합니다.
  • range(start, stop, step) 함수에서 start는 시작 값, stop은 종료 값, step은 증감 값입니다.
  • number에서 시작하여 1까지 1씩 감소하며 반복합니다. 종료 값인 0은 포함되지 않습니다.

  • print(i)
    • print() 함수는 현재 반복 중인 i 값을 출력합니다.
    • i는 반복문을 통해 매번 1씩 감소하는 값을 가집니다.

    예시 실행 과정

    사용자가 5를 입력한 경우:

    1. number = 5가 됩니다.
    2. for i in range(5, 0, -1)은 5에서 1까지의 숫자를 생성합니다.

    반복문 실행 과정:

    1. i = 5일 때: print(5)
    2. i = 4일 때: print(4)
    3. i = 3일 때: print(3)
    4. i = 2일 때: print(2)
    5. i = 1일 때: print(1)

    최종 출력

    입력된 정수가 5라면, 출력은 다음과 같습니다:

    5
    4
    3
    2
    1

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 사용자가 입력한 정수를 number 변수에 저장합니다.
    2. for 반복문을 사용하여 number부터 1까지의 숫자를 역순으로 순회합니다.
    3. 각 숫자를 출력합니다.

    이 코드는 range() 함수의 사용법과 역순으로 숫자를 순회하는 방법을 보여줍니다.


    연습문제 6: 리스트 내 특정 값 찾기

    문제: 주어진 리스트에서 특정 값을 찾고, 그 값의 인덱스를 출력하는 프로그램을 작성하세요. 만약 값이 리스트에 없다면 "값을 찾을 수 없습니다"라는 메시지를 출력하세요.

    연습문제 6: 리스트 내 특정 값 찾기

    => 설명)
    이 코드는 사용자가 입력한 값을 리스트에서 찾아, 해당 값의 인덱스를 출력하거나 값이 리스트에 없을 경우 "값을 찾을 수 없습니다"라는 메시지를 출력하는 프로그램입니다. 코드를 단계별로 설명해 드리겠습니다.

    numbers = [10, 20, 30, 40, 50]

    numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 10, 20, 30, 40, 50이라는 정수들이 포함되어 있습니다.

    value_to_find = int(input('찾고자 하는 값을 입력하세요: '))

  • input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
  • int() 함수는 입력된 문자열을 정수로 변환합니다.
  • 따라서, value_to_find 변수에는 사용자가 입력한 정수가 저장됩니다.

  • found = False

    found 변수를 False로 초기화합니다. 이 변수는 찾고자 하는 값이 리스트에 존재하는지를 나타내는 데 사용됩니다.

    for index, value in enumerate(numbers):

  • for 반복문은 enumerate(numbers)를 사용하여 리스트 numbers를 순회합니다.
  • enumerate() 함수는 리스트의 각 요소와 그 요소의 인덱스를 동시에 반환합니다.
  • index 변수는 현재 요소의 인덱스를, value 변수는 현재 요소의 값을 가리킵니다.

  • if value == value_to_find:

    if 조건문은 현재 요소 valuevalue_to_find와 같은지 확인합니다.

    print(f"{value_to_find} 값은 리스트의 인덱스 {index}에 있습니다.")
    found = True
    break

  • 값이 일치하면 print 함수는 f-string을 사용하여 결과를 출력합니다.
  • found 변수를 True로 설정합니다.
  • break 문은 반복문을 종료합니다. 찾고자 하는 값을 찾으면 더 이상 반복할 필요가 없기 때문입니다.

  • if not found:
        print("값을 찾을 수 없습니다.")

    • if not found: 조건문은 found 변수가 False인 경우에 실행됩니다. 즉, 찾고자 하는 값을 리스트에서 찾지 못한 경우입니다.
    • print("값을 찾을 수 없습니다.")는 값을 찾지 못했음을 사용자에게 알립니다.

    예시 실행 과정

    사용자가 30을 입력한 경우:

    1. value_to_find = 30
    2. for 반복문이 실행됩니다.
      • index = 0, value = 10 -> 조건 불일치
      • index = 1, value = 20 -> 조건 불일치
      • index = 2, value = 30 -> 조건 일치
        • 출력: "30 값은 리스트의 인덱스 2에 있습니다."
        • found = True
        • break로 반복문 종료
    3. if not found: 조건문은 실행되지 않음 (값을 찾았기 때문)

    최종 출력

    입력된 값이 리스트에 있는 경우:
    30 값은 리스트의 인덱스 2에 있습니다.


    입력된 값이 리스트에 없는 경우:
    값을 찾을 수 없습니다.

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 사용자로부터 찾고자 하는 값을 입력받습니다.
    2. for 반복문과 enumerate() 함수를 사용하여 리스트의 각 요소와 그 인덱스를 순회합니다.
    3. 현재 요소가 찾고자 하는 값과 일치하는지 확인합니다.
    4. 일치하면 해당 인덱스를 출력하고, 반복문을 종료합니다.
    5. 일치하는 값이 없으면 "값을 찾을 수 없습니다."를 출력합니다.

    이 코드는 리스트 내에서 특정 값을 찾고, 그 값의 인덱스를 찾는 방법을 보여줍니다.



    연습문제 7: 리스트 요소 거꾸로 출력하기

    문제: 주어진 리스트의 요소를 역순으로 출력하는 프로그램을 작성하세요.

    => 설명)
    이 코드는 주어진 리스트 numbers의 요소를 역순으로 출력하는 프로그램입니다. 각 부분을 단계별로 설명해 드리겠습니다.

    numbers = [10, 20, 30, 40, 50]

    numbers라는 리스트가 정의되어 있습니다. 이 리스트에는 10, 20, 30, 40, 50이라는 정수들이 포함되어 있습니다.

    for i in range(len(numbers) - 1, -1, -1):

  • for 반복문은 range(len(numbers) - 1, -1, -1)을 사용하여 리스트 numbers를 역순으로 순회합니다.
  • len(numbers)는 리스트 numbers의 길이(즉, 요소의 개수)를 반환합니다. 이 경우, len(numbers)는 5입니다.
  • range(start, stop, step) 함수에서 start는 시작 값, stop은 종료 값, step은 증감 값입니다.
  • startlen(numbers) - 1로, 이는 리스트의 마지막 인덱스(4)입니다.
  • stop은 -1로 설정하여, 0까지 포함되도록 합니다.
  • step은 -1로 설정하여, 인덱스를 1씩 감소시킵니다.

  •      print(numbers[i])

    print() 함수는 현재 인덱스 i에 해당하는 리스트 numbers의 요소를 출력합니다.

    예시 실행 과정

    리스트 numbers의 요소를 역순으로 순회합니다:

    1. i = 4일 때: numbers[4]는 50 -> 출력: 50
    2. i = 3일 때: numbers[3]는 40 -> 출력: 40
    3. i = 2일 때: numbers[2]는 30 -> 출력: 30
    4. i = 1일 때: numbers[1]는 20 -> 출력: 20
    5. i = 0일 때: numbers[0]는 10 -> 출력: 10

    최종 출력

    리스트의 요소가 역순으로 출력됩니다:

    50
    40
    30
    20
    10

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 리스트 numbers의 길이를 구하여 마지막 인덱스부터 첫 번째 인덱스까지의 범위를 설정합니다.
    2. for 반복문과 range() 함수를 사용하여 리스트의 인덱스를 역순으로 순회합니다.
    3. 현재 인덱스에 해당하는 리스트의 요소를 출력합니다.

    이 코드는 리스트의 요소를 역순으로 순회하는 방법을 보여주며, range() 함수의 다양한 사용법을 이해하는 데 도움이 됩니다.


    연습문제 8: 특정 범위의 합계 구하기

    문제: 사용자로부터 두 개의 정수를 입력받아, 그 범위 내에 있는 모든 정수의 합을 구하는 프로그램을 작성하세요. 두 정수 중 어느 것이 더 큰지는 미리 알 수 없습니다.

    연습문제 8: 특정 범위의 합계 구하기

    => 설명) 
    이 코드는 사용자로부터 두 개의 정수를 입력받아, 그 두 정수 사이의 모든 정수의 합을 계산하는 프로그램입니다. 각 부분을 단계별로 설명해 드리겠습니다.

    start = int(input('첫 번째 정수를 입력하세요: '))
    end = int(input('두 번째 정수를 입력하세요: '))

  • input() 함수는 사용자로부터 문자열 형태의 입력을 받습니다.
  • int() 함수는 입력된 문자열을 정수로 변환합니다.
  • 따라서, start 변수에는 첫 번째 정수가, end 변수에는 두 번째 정수가 저장됩니다.

  • if start > end:
        start, end = end, start

  • if 조건문은 start 변수가 end 변수보다 큰지 확인합니다.
  • 만약 startend보다 크다면, 두 변수를 서로 교환합니다.
  • 이를 통해 항상 startend보다 작거나 같도록 합니다.

  • total = 0

    total 변수를 0으로 초기화합니다. 이 변수는 범위 내 모든 정수의 합을 저장하는 데 사용됩니다.

    for i in range(start, end + 1):
        total += i

  • for 반복문은 range(start, end + 1)을 사용하여 start부터 end까지의 모든 정수를 순회합니다.
  • range() 함수의 start는 시작 값, end + 1은 종료 값으로, end 값까지 포함되도록 합니다.
  • 각 반복에서 현재 정수 itotal에 더합니다.

  • print(f"{start}부터 {end}까지의 합은 {total}입니다.")

  • print() 함수는 f-string을 사용하여 결과를 출력합니다.
  • start부터 end까지의 합을 total 변수에 저장된 값으로 출력합니다.

  • 예시 실행 과정

    사용자가 52를 입력한 경우:

    1. start = 5
    2. end = 2
    3. if start > end: 조건이 참이므로 startend의 값을 교환하여 start = 2, end = 5가 됩니다.
    4. total = 0으로 초기화합니다.
    5. for 반복문이 실행됩니다:
      • i = 2: total += 2 -> total = 2
      • i = 3: total += 3 -> total = 5
      • i = 4: total += 4 -> total = 9
      • i = 5: total += 5 -> total = 14
    6. 최종 출력: 2부터 5까지의 합은 14입니다.

    최종 출력

    입력된 값에 따라 출력됩니다:

    2부터 5까지의 합은 14입니다.

    요약

    이 코드는 다음과 같은 작업을 수행합니다:

    1. 사용자로부터 두 개의 정수를 입력받습니다.
    2. 두 정수의 대소 관계를 확인하고 필요시 교환하여 start가 항상 end보다 작거나 같도록 합니다.
    3. start부터 end까지의 모든 정수를 합산합니다.
    4. 합계를 출력합니다.

    이 코드는 조건문과 반복문을 결합하여 사용자의 입력을 처리하고, 그 범위 내의 숫자들을 합산하는 방법을 보여줍니다.



    이전글)

    Anaconda Prompt 3) 제어문 학습 ; 조건문, 반복문, 그리고 연습문제



    댓글 쓰기

    다음 이전