로보테크AI

융합_로보테크 AI 자율주행 로봇 개발자 과정-26/01/02

steezer 2026. 1. 2. 18:30

복습

for반복문
반복가능 객체 - 이터러블 객체
반복객체가 포함되는 요소 전체 대상
[1,2,3,4,5]

while반복문
무한루프
조건 도달
강제 탈출

중첩 반복문으로 피라미드 만들기

while 반복문

조건문 기반 특정코드 반복해서 실행할 때 사용하는 구문

범위: 정수의 범위 나타내는 값, range()로 생성

while 불 표현식:

    문장

 

for / while 반복문 중간 탈출: break
반복문의 처음으로 (다음바퀴) : continue

리스트에 적용할 수 있는 기본 함수:min(), max(), sum()

리스트 뒤집기: reversed()

현재 인덱스가 몇 번째인지 확인하기: enumerate()

딕셔너리로 쉽게 반복문 작성하기: items()

리스트 안에 for문 사용하기: 리스트 내포

위 for 문에서만 654321 나옴

reversed 객체는 한번은 for문만 실행 => 제너레이터


reversed()의 반환 타입은 메모리 효율을 위해 즉시 계산 X
reverseiterater object at 0x~~~~~~
지연 평가 lazy evaluation
for문과 조합해서 실제 사용하는 시점에

reversed 객체는 이터레이터다. O

 

제너레이터란 데이터를 미리 다 만들어두자 않고 필요할 때만 생성해주는 함수

제너레이터는 내부적으로 필요한 값 하나만 밖으로 던지고 일시정지하는 성질

 

제너레이터는 이터레이터의 한 종류

enumerate() 함수와 리스트

리스트 내포

리스트 이름 = [표현식 for  반복자 in 반복할 수 있는 것]

리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문]

 

이터러블: 반복할 수 있는 것, 내부에 있는 요소들을 차례로 꺼낼 수 있는 객체

이터레이터: next()를 적용해 하나씩 꺼낼 수 있는 요소

 

enumerate(리스트)

딕셔너리.items()

{:b} #2
{:o} #8
{:x} #16

숫자 종류

염기 개수

염기 코돈 개수

2차원 리스트 평탄화

함수

함수 호출: 함수 사용

리턴값: 함수 호출해서 나온 최종 값

def 함수이름():

      문장

def 함수 이름(매개변수, 매개변수, ...):

     문장

매개변수는 함수 생성할 때 괄호 내부에 식별자 입력해서 생성

 

가변 매개변수 : 여러 값 넣을 수 있다

 

기본 매개변수 : '매개변수=값' 형태

기본 매개변수 뒤에 일반 매개변수 못 옴

Positinal Arguments 일반 매개변수 a

Dedault Arguments 기본 매개변수 n=2

Arbitrary Arguments 가변 매개변수 *values

Keyword Arguments 키워드 매개변수

 

리턴값: 함수의 최종적인 결과 의미

 

딕셔너리처럼

 

재귀: 자기 자신을 호출

 

재귀 함수를 사용해 팩토리얼 구하기

튜플: 함수와 함께 많이 사용되는 리스트와 비슷한 자료형, 리스트와 다른 점은 한번 결정된 요소는 바꿀 수 없음

람다: 매개변수로 함수를 전달하기 위해 함수 구문을 작성하기 번거롭고, 코드 공간 낭비라는 생각이 들 때 함수를 간단하고 쉽게 선언하는 방법(1회용 함수 만들 때 자주 사용)

map(): 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트 구성해주는 함수

map(함수, 리스트)

filter(): 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것, 새로운 리스트 구성해주는 함수

filter(함수, 리스트)

 

함수의 매개변수로 함수 전달하기

lambda: 간단한 함수를 쉽게 선언하는 방법

lambda 매개변수 : 리턴값

파일 열고 닫기

열기 open()

파일 객체 = open(문자열: 파일 경로, 문자열: 읽기 모드)

텍스트 읽기

파일객체.read()

 

네이버 임금 계산기

tax.txt
0.07MB

import csv

def load_tax_table(path):
    table = []
    with open(path, newline="", encoding="utf-8") as f:
        reader = csv.reader(f)
        for row in reader:
            cleaned = []
            for cell in row:
                cell = cell.strip().replace(",", "").replace('"', '')
                cleaned.append(None if cell == "-" else cell)
            table.append(cleaned)
    return table

def find_income_tax(monthly_salary, num_dependents, tax_table):
    salary_unit = monthly_salary // 1000  # 간이세액표는 천원 단위

    for row in tax_table:
        start = int(row[0])
        end = int(row[1])

        if start <= salary_unit < end:

            tax_values = row[2:]
            index = min(num_dependents - 1, len(tax_values) -1)
            tax = tax_values[index]

            if tax is None:
                return 0

            return int(tax)
    return 0

def salary_calculator(
    annual_salary,
    num_dependents=1,
    tax_file=r"C:\Users\302\PycharmProjects\PythonProject\tax.txt"
):
    tax_table = load_tax_table(tax_file)

    monthly_salary = annual_salary / 12

    national_pension = monthly_salary * 0.0475
    health_insurance = monthly_salary * 0.03595
    long_term_care = health_insurance * 0.1281
    employment_insurance = monthly_salary * 0.009

    income_tax = find_income_tax(
        monthly_salary,
        num_dependents,
        tax_table
    )
    local_income_tax = income_tax * 0.1

    total_deduction = (
        national_pension +
        health_insurance +
        long_term_care +
        employment_insurance +
        income_tax +
        local_income_tax
    )

    monthly_net_salary = monthly_salary - total_deduction
    annual_net_salary = monthly_net_salary * 12

    return {
        "monthly_salary": round(monthly_salary),
        "national_pension": round(national_pension),
        "health_insurance": round(health_insurance),
        "long_term_care": round(long_term_care),
        "employment_insurance": round(employment_insurance),
        "income_tax": round(income_tax),
        "local_income_tax": round(local_income_tax),
        "monthly_net_salary": round(monthly_net_salary),
        "annual_net_salary": round(annual_net_salary),
    }

annual_salary = int(input("Enter annual salary: "))
num_dependents = int(input("Enter number of dependents: "))

result = salary_calculator(
    annual_salary= annual_salary,
    num_dependents= num_dependents
)

for k, v in result.items():
    print(f"{k:10s}: {v:,} 원")

Enter annual salary: 28000000
Enter number of dependents: 1
monthly_salary: 2,333,333 원
national_pension: 110,833 원
health_insurance: 83,883 원
long_term_care: 10,745 원
employment_insurance: 21,000 원
income_tax: 30,130 원
local_income_tax: 3,013 원
monthly_net_salary: 2,073,728 원
annual_net_salary: 24,884,739 원

수정할 것

국민연금 상하한 적용

각 보험료 계산 후 즉시 절사

요양보험 절사된 건강보험 기준

최신 간이세액표 사용

 

260102.py
0.01MB