본문 바로가기
프로그래밍/Python

[인공지능(AI) 기초다지기] Python의 조건문과 반복문, 연습 문제 풀기

by hi-rachel 2023. 1. 16.

* Conditionals and Loops

 

🐍 Python의 조건문과 반복문

비교 연산자 종류

x is y값과 메모리 주소를 비교한다. 예전 파이썬은 느려서 자주 쓰는 -5 ~ 256 숫자 값은 정적 메모리에 저장했고 a = 5 b= 5 이렇게 다른 변수명을 지정해 줘도 위 범위의 값은 같은 메모리 주소를 가리켜 a is b를 하면 True를 반환한다. 하지만 이 범위를 넘어가면 값이 같아도 메모리 주소가 다르기 때문에 -6 == -6은 False가 반환된다. x is not y은 값과 메모리 주소가 다르지 않은지 검사한다.

조건문 문법

 

Python에서는

조건 ? (true일 때) : (false일 때) 대신

(true일 때) if 조건 else (false일 때)로 삼항 연산자를 써준다.

 

반복문

while(True): 와 같은 조건문은 무한 loop가 될 수 있기 때문에 조심해야 한다.

 

반복문 조건 표현 - 1

 

반복문 조건 표현 - 2

 

반복의 제어 - break, continue

continue는 skip의 뜻

 


 

✏️ 연습 문제

import datetime
year = int(input('당신이 태어난 년도를 입력하세요'))
print(year)
age = datetime.date.today().year - year + 1
if 20 <= age <= 26:
    print('대학생')
elif 17 <= age < 20:
    print("고등학생")
elif 8 <= age < 14:
    print("초등학생")
else:
    print("학생이 아닙니다")

년도는 2023 바로 적어줘도 되지만 datetime을 활용해 현재 년도를 가져와 사용했다.

※ input() 입력 단위를 꼭 지정해 줘야 오류가 나지 않는다.

 

📌 가변적인 중첩 반복문(variable nested loops)

: 실제 프로그램에서는 반복문은 사용자의 입력에 따라 가변적으로 반복되고 하나의 반복이 아닌 중복되어 반복이 일어난다.

# 숫자 찾기 게임
import random

guess_number = int(input('숫자를 맞춰보세요(1~100) 🎰'))
number = random.randrange(1, 101)
# number = random.randint(1, 100) 1 ~ 100 사이 정수 난수 발생

while(guess_number != number):
    if guess_number > number:
        print(f'{guess_number} 숫자가 너무 큽니다')
    else:
        print(f'{guess_number} 숫자가 너무 작습니다')
    guess_number = int(input('숫자를 맞춰보세요(1~100) 🎰'))
else:
    print(f'정답입니다🎉 숫자는 {number}입니다')

random.randint(a, b)  a <= N <= b 범위의 랜덤 정수 값 N을 반환한다. = random.randrange(a, b+1)과 동일

난수(Random Number)란?

정의된 범위 내에서 무작위로 추출된 수, 난수는 누구라도 그다음에 나올 값을 확신할 수 없어야 한다.

 

# 연속적인 구구단 입력
multiplication = int(input('구구단 몇 단을 계산할까요?(1~9)'))
while (multiplication != 0):
    for i in range(1, 10):
        print(f'{multiplication} X {i} = ', multiplication * i)
    multiplication = int(input('구구단 몇 단을 계산할까요?(1~9)'))

 

# 사람별 평균 구하기 - 이차원 리스트 처리하기
kor_score = [49, 79, 20, 100, 80]
math_score = [10, 20, 30, 40, 10]
eng_score = [100, 99, 10, 30, 50]
midterm_score = [kor_score, math_score, eng_score]

student_score = [0, 0, 0, 0, 0]
i = 0
for subject in midterm_score:
    for score in subject:
        student_score[i] += score
        i += 1
    i = 0
else:
    # 학생별 점수를 unpacking
    a, b, c, d, e = student_score
    # 소수점 세번째 자리에서 반올림
    student_mean = [round(a/3, 2), round(b/3, 2), round(c/3, 2), round(d/3, 2), round(e/3, 2)]
    for i in range(0, 5):
        print(f'{i+1}번 학생의 중간고사 평균 점수는 {student_mean[i]}입니다.')

 

📌 디버깅(debugging)

: 코드의 오류를 발견하여 수정하는 과정

  • 오류의 '원인'을 알고 '해결책'을 찾아야 함
  • 문법적 에러를 찾기 위한 에러 메시지 분석 ex) 들여 쓰기, 오탈자, 대소문자 구분 오류 => 인터프리터가 에러 알려줌
  • 논리적 에러를 찾기 위한 테스트도 중요 => 중간중간 print문 찍어 확인해 보기, 함수 확인하기

 


 

더 자세한 내용은 실제 강의를 들어보길 추천합니다.

인공지능(AI) 기초 다지기

 

인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

※ 위 내용은 부스트코스(boostcourse) 인공지능(AI) 기초 다지기 강의를 듣고 공부하며 내용을 정리한 글입니다.

 

 

🙂 공감과 피드백 환영합니다.