파이썬에서 조건문은 if
, elif
, else
키워드를 사용한다. 조건문은 주어진 조건이 참(True)인지 거짓(False)인지 판별하여 그에 따라 다른 코드를 실행한다는 특징이 있다.
if 조건:
# 조건이 참일 때 실행할 코드
elif 다른 조건:
# 다른 조건이 참일 때 실행할 코드
else:
# 모든 조건이 거짓일 때 실행할 코드
파이썬에서는 0이 아닌 모든 정수형이 참(True)으로 간주된다. 따라서 조건문에서 이를 활용할 수 있다. 또한, 조건문에서는 성능 이슈를 고려하여 가장 먼저 참이 될 가능성이 높은 조건을 앞에 위치시키는 것이 좋다고 한다.
람다 함수는 이름 없이 정의된 함수로, 한 줄로 표현할 수 있다. 특히, 짧은 시간 동안 사용하거나 함수의 인자로 전달할 때 유용하다.
lambda 인자 : 표현식
파이썬에서 반복문은 for
키워드를 사용한다. for
문은 주어진 범위 동안 코드를 반복 실행하는 특징이 있다.
for 변수 in 범위:
# 반복 실행할 코드
딕셔너리에서 for
문을 사용하면 기본적으로 키(key)가 반환된다.
for key in dictionary:
print(key) # 키 출력
items()
메서드를 사용하면 딕셔너리의 모든 요소(key, value)를 출력할 수 있다.
for key, value in dictionary.items():
print(key, value) # 키와 값 출력
반복문 안에 또 다른 반복문을 사용할 수 있다. 이를 중첩 반복문이라 하고, 행렬이나 2차원 리스트 등을 다룰 때 유용하다.
for i in range(5):
for j in range(5):
print(i, j)
리스트 컴프리핸션은 for
문과 조건문을 사용하여 간결하게 리스트를 생성할 수 있다. 또한, 함수도 사용할 수 있다.
[표현식 for 변수 in 범위 if 조건]
while
문은 주어진 조건이 참인 동안 코드를 반복 실행한다.
while 조건:
# 반복 실행할 코드
스무고개나 가위바위보 등의 간단한 게임 프로그램을 파이썬으로 작성해 보았다. 이를 통해 조건문, 반복문, 함수 등의 개념을 실제로 활용해 보고 익숙해질 수 있었다.
# 그럼 이 코드를 사용하여 다음과 같은 문제를 만들어보겠습니다.
# 연습문제 1. 고등어 가게에서 고등어가 팔리고 있는 상황을 파이썬 프로그램으로 작성하려고 합니다.
# 아래의 코드를 완성하여, 5마리의 고등어부터 1마리의 고등어까지 재고를 표시하고,
# 마지막에는 ‘고등어 다 팔렸습니다.’라는 메시지가 출력되도록 하세요.
# 출력
고등어 5개 남았습니다.
고등어 4개 남았습니다.
고등어 3개 남았습니다.
고등어 2개 남았습니다.
고등어 1개 남았습니다.
고등어 다 팔렸습니다.
# 정답
for i in range(5, 0, -1):
print('고등어 ', i, ' 개 남았습니다.')
else:
print('고등어 다 팔렸습니다.')
# repeat(5, 7)이 의미하는 것은 5 = key의 개수이고.. 7 = 7개의 json형식의 데이터를 하나의
# 파일안에 생성해준다는 것
[
'{{repeat(5, 7)}}',
{
_id: '{{objectId()}}',
age: '{{integer(20, 40)}}',
eyeColor: '{{random("blue", "brown", "green")}}',
name: '{{firstName()}} {{surname()}}',
gender: '{{gender()}}'
}
]
# 생성된 code는 아래와 같음
[
{
"_id": "6019fd4354979ca26b8f91dc",
"age": 26,
"eyeColor": "green",
"name": "Bender Allen",
"gender": "male"
},
{
"_id": "6019fd43db2951868889a0b4",
"age": 27,
"eyeColor": "blue",
"name": "Jacobs Golden",
"gender": "male"
},
{
"_id": "6019fd438c0bf8e775c28536",
"age": 27,
"eyeColor": "brown",
"name": "Grimes Oneal",
"gender": "male"
},
{
"_id": "6019fd43b68a7fd8b081ab26",
"age": 40,
"eyeColor": "blue",
"name": "Melissa Joyce",
"gender": "female"
},
{
"_id": "6019fd436c1edc4757aabb9d",
"age": 32,
"eyeColor": "blue",
"name": "Malone Bush",
"gender": "male"
},
{
"_id": "6019fd438eaf753918f55226",
"age": 34,
"eyeColor": "green",
"name": "Davenport Hyde",
"gender": "male"
},
{
"_id": "6019fd43c35929ff95004109",
"age": 20,
"eyeColor": "blue",
"name": "Shauna Blevins",
"gender": "female"
}
]
위의 json형식의 파일을 활용하여 문제를 푸는 것이다.
import json
# JSON 파일 열기
with open('파일명.json', 'r') as f:
data = json.load(f)
total_age = 0
# 'age' 값 가져오기
for member in data:
total_age += member['age']
avg_age = total_age / len(data)
print(f'회원들의 age 평균 : {avg_age}')
# 2. 회원들의 남녀 성비를 구해주세요.
male_count = 0
female_count = 0
for member in data:
if member['gender'] == 'male':
male_count += 1
else:
female_count += 1
male_rate = male_count / len(data)
female_rate = female_count / len(data)
print(f'남자는 {male_rate}%, 여자는 {female_rate}% 입니다')
--------------------------------------------------------------------------------------
<예제 정답>
num_male = 0
num_female = 0
for member in data:
if member['gender'] == 'male':
num_male += 1
else:
num_female += 1
gender_ratio = {
'male': num_male / len(data),
'female': num_female / len(data)
}
print('회원들의 남녀 성비:')
for gender, ratio in gender_ratio.items():
print(f'{gender}: {ratio}')
import matplotlib.pyplot as plt
# 데이터 준비
labels = ['Male', 'Female']
sizes = [male_count, female_count]
colors = ['blue', 'red']
# 파이 차트 그리기
# sizes = 각 파이조각의 크기를 결정
# labels = 각 파이조각의 라벨
# colors = 각 파이 조각의 색상
# autopct = 백분율 형식 지정(1.1f는 소수 첫째짜리까지 표시)
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%') # 그래프 속성 정의
plt.axis('equal') # 원형 유지
plt.show() # 그래프 그리기
num = int(input("숫자를 입력해주세요 : "))
if num > 5:
print("5보다 큰 수입니다.")
else:
print("5보다 작습니다.")
for i in range(5):
print("안녕하세요!")
#1
for i in range(10):
if i % 2 == 0:
print(i)
#2
[x for x in range(10) if x % 2 == 0]
#1
for i in range(20):
if i % 3 == 0:
print(i)
#2
[x for x in range(20) if x % 3 == 0]
for i in range(2, 10):
# i는 2부터 시작해서 9까지 반복
print(f'---{i}단---') # 1,2,3...9단
for j in range(1, 10): # j는 i가 실행될 때마다 반복. 1~9까지 반복
print(f'{i} X {j} = {i * j}') # 2x1, 2x2 ... 2x9 ... 9x9까지 출력
오늘은 기본적인 반복문부터 약간 어려운 부분까지 다뤄보았다. 예전에 배우긴 했지만 가물가물하던 부분도 집어주고 해주셔서 좋은 시간이었던 것 같다. 오전 시간대까진 다들 잘 따라왔던 것 같은데 오후부터는 템포 이슈가 있었어서 ㅋㅋㅋ 하다가 강사님이 재밌는 프로그래밍을 하자고 하셔서 했는데 확실히 이론만 배우는 것보다는 직접 쳐보는 편이 재밌고 집중 잘 되는 것 같다. 내일까지 스터디에서 진행할 프로젝트 주제 2-3개를 생각해야 되는데 고민이 되는 부분이다.