* 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가 될 수 있기 때문에 조심해야 한다.
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)과 동일
정의된 범위 내에서 무작위로 추출된 수, 난수는 누구라도 그다음에 나올 값을 확신할 수 없어야 한다.
# 연속적인 구구단 입력
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문 찍어 확인해 보기, 함수 확인하기
더 자세한 내용은 실제 강의를 들어보길 추천합니다.
※ 위 내용은 부스트코스(boostcourse) 인공지능(AI) 기초 다지기 강의를 듣고 공부하며 내용을 정리한 글입니다.
🙂 공감과 피드백 환영합니다.
'프로그래밍 > Python' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] Python 자료 구조(Data Structure) : Stack & Queue, Dict, Collections (0) | 2023.01.19 |
---|---|
[인공지능(AI) 기초다지기] Python의 문자열(String)과 함수 / Swap, 재귀 함수 (0) | 2023.01.19 |
[인공지능(AI) 기초 다지기] Python 소수점 자리 지정하기 format (0) | 2023.01.16 |
[인공지능(AI) 기초 다지기] 파이썬 언어의 특징 : 컴파일러/인터프리터 언어란? 변수란? 컴퓨터의 반올림 오차 (0) | 2023.01.15 |
PEP 8 - Style Guide for Python Code 정리 / Python Code 일관성, 가독성 높이며 작성하기 (0) | 2022.11.03 |