본문 바로가기

공부 일지 #6 | Python 실습

@studying:)2025. 7. 18. 18:01

학습 날짜: 2025.07.14 ~ 2025.07.18


 

이번 일지는 학부 때 파이썬 수업을 들은 적이 있어서, 기본 개념보다는 연습문제 중심으로 새롭게 알게 된 점이나 다시 되짚어보면 좋을 내용을 정리했다.

 

✅ break vs. continue vs. pass

  • break
# for, while loop을 사용할 때, 우리는 종종 어떤 특정 조건에 부합되면,
# 반복을 완전히 종료하고 다음 코드를 수행해야 하는 경우가 발생합니다.
# 이런 경우 우리는 break 를 사용해서 반복문을 탈출할 수 있습니다.

# Qestion 1. clone
# 주어진 리스트(datas)에서 item을 순차적으로 검색하면서 item을 출력해 보세요.
# 단, item의 값이 홀수일 경우 for loop을 종료하세요.
# 짝수인지 홀수인지 구분하는 방법은 2로 나누었을 때, 나머지(reminder)가 0일 때 짝수이고,
# 0이 아닌 경우는 홀수 입니다.
# 나머지를 구할 때는 '%' 연산자를 사용합니다.

datas = [12, 16, 18, 2, 46, 14, 34, 47, 38, 40]

for data in datas:
  if (data%2) == 0:
    print(data, end=', ')
  else:
    # type code below:
    break
  • continue
# for, while loop을 사용할 때, 우리는 종종 어떤 특정 조건에 부합되면,
# 수행해야할 명령들이 있더라도, 그 명령들을 건너뛰어야 하는 경우가 있습니다.
# 이런 기능을 수행하는 명령어가 'continue' 입니다.
# continue는 그 아래의 코드를 무시하고 처음(for문 시작부분)으로 돌아가는 것

# Question 4.
# 주어진 리스트(datas)에서 item을 순차적으로 검색하면서 item을 출력해 보세요.
# 단, for loop을 사용하고, item의 값이 홀수일 경우, 해당 item을 출력하지 않습니다.

datas = [12, 16, 18, 2, 46, 14, 34, 47, 38, 40]

for data in datas:
  if (data%2) != 0:
    #type code here
    continue
  print(data, end=', ') # 홀수면 이 부분 건너뛰고 위로 올라감
  • pass
# 만약 여러분이 if condtion: 의 정의만 하고, if의 body를 작성하지 않으면,
# "SyntaxError: unexpected EOF(End of File) ~ "와 같은 Erorr를 만나게 됩니다.
# 이 Error가 의미하는 것은 파이썬 인터프리터가 조건문의 끝을 찾지 못했다는 의미입니다.
# 이런 구문에러를 피할 수 있는 방법이 "pass"를 사용하는 것입니다.

# Question 6. clone - 'pass'
# 프로그램의 흐름에 따라 조건문이 필요해서 조건문의 정의를 구현했지만,
# 아직 조건문의 내부로직을 생각하지 않은 상황입니다.
# 이 때, "pass"를 사용해서 파이썬 인터프리터에게 정상적인 조건문이라는 것을 알려주는 것이 가능합니다.
# 다음과 같이 다양한 구문에 "pass"를 적용해보세요.

if 3>2:
  # type code below:
  pass

for i in range(3):
  # type code below:
  pass

def test_function():
  # type code below:
  pass

💡 Question1

  • 재고물품 중 원산지가 제주도인 "배"의 재고개수는?
  • 재고물품 중 원산지가 제주도이고 서귀포에서 나지 않는 "배"의 재고개수는?
  • 재고물품 중 음료수의 전체 재고 개수는?
  • 재고물품 중 포카리 음료수의 재고 개수를 10개로 수정하세요.
  • 재고물품 중 과일 카테고리에서 "사과"의 재고관리 카테고리 "경남"을 생성하고, 개수를 10개로 넣어주세요.
  • 재고물품 중 "시식코너"에서 "만두"의 재고개수를 2개로 수정하세요.
mart = {
    "음료수": [["코카콜라", 2], ["사이다", 3], ["포카리", 5]], # 데이터 간 연관성이 없음
    "시식코너": {"만두":10, "요거트":3}, # 데이터 간 연관성이 있음
    "과일": {
        "사과":{
            "제주": 2,
            "경북": 4,
            "경기": 2
        },
        "배":{
            "제주":{
                "서귀포": 2,
                "ow" : 4
            },
            "경북": 5,
            "경기": 2
        }
    }
} # 이중 디렉토리

# 재고물품 중 원산지가 제주도인 "배"의 재고개수는?
print(sum(mart["과일"]["배"]["제주"].values()))

# 재고물품 중 원산지가 제주도이고 서귀포에서 나지 않는 "배"의 재고개수는?
print(mart["과일"]["배"]["제주"]['ow'])

# 재고물품 중 음료수의 전체 재고 개수는?
print(mart["음료수"][0][1]+mart["음료수"][1][1]+mart["음료수"][2][1])
# or
print(sum(i[1] for i in mart["음료수"]))

# 재고물품 중 포카리 음료수의 재고 개수는 10개로 수정하세요
mart["음료수"][2][1] = 10
print(mart["음료수"])

# 재고물품 중 과일 카테고리에서 "사과"의 재고관리 카테고리 "경남"을 생성하고, 개수는 10개로 넣어주세요.
mart["과일"]["사과"]["경남"] = 10
print(mart["과일"]["사과"])

# 재고물품 중 "시식코너"에서 "만두"의 재고개수를 2개로 수정하세요.
mart["시식코너"]["만두"] = 2
print(mart["시식코너"])

 

💡 Question2

  • 계산기를 만들어보자
    • 기능구현: 두 개의 수 입력 받음
    • 그 후, 기능을 입력 받음(+, -, *, /)
    • 위 기능은 각각 함수로 구현 -> 각각 +, -, *, / 를 함수로 만들라는 뜻
    • 프로그램 종류를 위해서는 'end'를 입력받으면, 종료되게 만드세요
    • 최소 5번을 돌아야 하며, 각 연산의 과정 결과는 "2+3=5" 이렇게 로그를 기록하세요
    • 최종적으로 5번 수행 후, 기록된 로그를 출력하세요
  • Ns-chart로 표현하기

강사님이 예시로 작성해주신 것

def input_number():
  num1, num2 = map(int, input("Enter two numbers: ").split())
  return num1, num2

def nType():
  f = input("Enter a function among +, -, *, /: ")
  return f

def add(x, y):
  return x + y
def diff(x, y):
  return x - y
def mul(x, y):
  return x * y
def div(x, y):
  return x / y

nCount = 0

if __name__ == "__main__": #main-> 실행부, 다른 파일에서 import 될 때 자동 실행을 방지하기 위한 것

  if nCount == 0:
    logs = list()
  elif nCount >= 5:
    print(logs)
    exit()
  else:
    pass

  x, y = input_number()
  f = nType()

  if f == "+":
    result = add(x, y)
  elif f == "-":
    result = diff(x, y)
  elif f == "*":
    result = mul(x, y)
  elif f == "/":
    result = div(x, y)
  else:
    print(logs)
    exit()

  nCount += 1
  logs.append(f"{x} {f} {y} = {result}")
  print(f"{x} {f} {y} = {result}")

 

💡 Question3

  • 자판기를 설계해보자.
    • input : 자판기에 넣는 금액(0~1만원)
    • output : 거스름돈
    • constrant : log 데이터로써, 자판기 실행 순번, 입력금액, 음료수종류, 잔금, 재고 리스트로 관리할것, 입력금액이 초과되면, 초과 메시지를 알려주고 종료
    • 음료수 종류는 콜라 : 1400원, 환타 : 1100원, 사이다 : 900원
  • Ns-chart로 표현하기

내가 작성해본 것

nCount = 0
items = {
    "가격":{
        "콜라": 1400,
        "환타": 1100,
        "사이다": 900
        },
    "재고":{
        "콜라": 3,
        "환타": 2,
        "사이다": 3
        }
}

if __name__ == "__main__":

  if (nCount == 0):
    logs = list()
  else:
    pass

  money = int(input("돈을 넣어주세요(0~1만원): "))
  if 0 < money <= 10000:
    order = input("어떤 음료수를 구매하시나요? 콜라, 환타, 사이다: ")
    if money >= items["가격"][order] and items["재고"][order] > 0:
      exchange = money - items["가격"][order]
      items["재고"][order] -= 1
      remain = items["재고"][order]
      nCount += 1
      logs.append(f"횟수: {nCount}, 넣음 금액: {money}, 남은 금액: {exchange}, 주문 음료: {order}, 재고:{remain}")
    elif items["재고"][order] == 0:
      print("재고가 없습니다")
      exit()
    elif money < items["가격"][order]:
      print("금액이 부족합니다")
      exit()
  else:
    print("금액이 없거나 초과했습니다.")
    exit()
studying:)
@studying:) :: what i studied

studying:) 님의 학습 여정을 기록하는 블로그입니다.

목차