25. 04. 28 공부일지

behumble·2025년 5월 1일

공부일지

목록 보기
4/20

정리

  • 함수를 만들면서 list와 dict를 잘 이용하지 못하고 있다. 값을 입력해서 list나 dict를 통해 값의 위치(?)를 지정하는 것에 집중하며 공부하자.
  • list 사용 시 for문을 반복하는 코드를 작성할 때 버벅이고 틀리는 경향이 있다. 많이 적어보자..!!

필기

while문

  • while문은 아직도 익숙하지가 않다. for문과 비교하여 기억하자.
#while 문은 조건에 의해서 특정 조건을 만족할 때만 수행을 한다.
#때로는 단 한번도 수행이 안될 가능성이 있을 때 사용하면 좋다. for문 대신에 쓸 수 있다.
#while 조건식: - 조건식의 결과가 True일 수행한다.

i = 1
while i <= 10:
     print(i)
     i += 1 #while문의 마지막 문장은 조건이 False가 되는 상황을 만들게 하는 것이 좋다.
    
num = (input("숫자를 입력하세요(0~9) : "))

while ord(num)<48 or ord(num)>57:
     print("문자 말고 숫자쓰세요. 마지막 기회입니다. ")
     num = input("숫자로 입력하세요(0~9): ")

i = 1
sum = 0

while sum < 1000:
    sum = sum + i
    i = i + 1
    
print(f"1000은 {i}번째에 넘습니다.")

다중 for문

  • 첫번째 루프를 돌려놓고 그 첫번째 루프 안에 루프를 돌린다.
# for문 안에서 또 for문이 작동하는 경우다.
# 외부의 루프가 m번 돌고, 내부 루프가 n번 돌면 m*n번 수행을 한다.
# 가급적 이중 for문까지만 동작하게끔 한다.

for i in range(1,6):
    for j in range(1,6):
        print(f"i = {i}, j = {j}")

# 문제1. 이중 for문을 사용하여 1~100까지 출력 한줄에 10개씩 출력하기
# 100번을 돌린다. 10개씩 출력한다.

k = 1
for i in range(0,10):
    for j in range(0,10):
        print(k, end = "\t")
        k = k + 1
    print()

# 문제2. 이중 for문
1 = 1
1 + 2 = 3
1 + 2 + 3 = 6

sum = 0
for i in range(1,11):
    for j in range(1,i+1):
        if j<i:
            print(j, end = "+")
        else:
            print(j, end = "=")
        sum += j
    print(sum)

#문제3. 별그리기
for i in range(0,10):
    for j in range(0,i):
        print("*", end = "")
    print()

# 문제 4. 다이아 그리기

"""
   *    별 1 공백 3 , 별의 개수 : 2*라인수-1, 공백 : 4-라인수
  ***   별 3 공백 2
 *****  별 5 공백 1
******* 별 7 공백 0
 *****  별 5 공백 1
  ***   별 3 공백 2
   *    별 1 공백 3
"""

lines = 4
for i in range(1, lines+1):
    print(" " * (lines-i), end ="")
    print(("*") * (2*i-1))
    
for i in range(lines-1,0,-1):
    print(" " * (lines-i), end ="")
    print(("*") * (2*i-1))

함수

  • 함수 이 친구 맘에 든다. 지금까지는 노가다로 코드를 만들었어야 했는데 아주 간편하다. 하지만 아직 함수를 만드는 것에 익숙하지 않은 상태이다. 함수의 이름(어떤 기능을 하는 친구인지 명확하게 표현), 매개변수에 어떤 값이 들어가 계산이 되는 지에 집중하며 함수를 만들자.
#함수 : 특정 기능끼리 묶어놓은 코드
#모듈 : 일을 작게 나누어서 처리하자
#모듈은 프로시저와 함수로 나눈다.
#프로시저는 일이 끝나고 값을 반환하지 않는다.
#함수는 일이 끝나고 값을 반환한다.
#c언어가 프로시저와 함수를 합쳐서 함수라고 부른다.
#파이썬의 경우는 def 키워드로 시작
#def 함수이름(매개변수들)
#   .......
#   return #원칙이 값 하나만 리턴한다.
           #만일 여러개 보내면 tuple타입으로 묶어서 전달한다.
#장점 : 유지보수가 편해진다. 
#       반복적인 일을 처리할 때 함수를 만들면 훨씬 간결하게 처리할 수 있다.
#       구조적 프로그래밍, 객제치향 프로그램에서 필수다.
# 함수는 15줄 넘어가면 안된다. A4용지 한장 넘어가면 안된다.

# def print_line(): #함수를 정의한다.
#     #pass #파이썬은 함수가 됐던 아니면 for, if나 등등등 코드가 없이 if 조건식{}
#     print("-"*30)
    
# print_line() # 함수를 호출한다.
# print_line()
# print_line()
# print_line()

# print(print_line())

# # 1부터 N까지의 합계를 구하는 함수 만들기
# def Sigma():
#     sum = 0
#     for i in range(1,11):
#         sum += i
#     return sum
# print(Sigma())
# 매개변수 : 함수 외부에서 내부로 값을 전달하기 위한 목적

def Sigma(limit):
    sum = 0
    for i in range(1,limit+1):
        sum += i
    return sum

print(Sigma(10))
print(Sigma(100))
print(Sigma(200))
print(Sigma(300))
print(Sigma(400))

주급_list 활용

#문제 - 주급 계산
#이름, 근무시간, 시간당급여액 - 5명에 대한
#홍길동  40        10000
#임꺽정  30        20000
#장길산  20        20000
#홍경래  10        15000
#이징옥  20        30000

name_list = []
work_timeList = []
per_payList = []
payList = []


# 풀이 1
for i in range(0,5):
    name = input("이름 : ")
    work_time = int(input("일한 시간 : "))
    per_pay = int(input("시급 : "))
    
    name_list.append(name)
    work_timeList.append(work_time)
    per_payList.append(per_pay)
    
for i in range(0,5):
    total = work_timeList[i] * per_payList[i]
    payList.append(total)
    
for i in range(0,5):
    print(f"{name_list[i]} {work_timeList[i]} {per_payList[i]} {payList[i]}")


# 풀이 2
for i in range(0,2):
    name = input("이름을 입력: ")
    work_time = int(input("근무 시간을 입력: "))
    per_pay = int(input("시급을 입력 : "))
    
    name_list.append(name)
    work_timeList.append(work_time)
    per_payList.append(per_pay)

for i in range(0,len(name_list)):
    total = work_timeList[i] * per_payList[i]
    payList.append(total)
    
for i in range(0,len(name_list)):
    print((name_list[i]), int((work_timeList[i])), int((per_payList[i])))

주급_dict 활용

#문제 - 주급 계산
#이름, 근무시간, 시간당급여액 - 5명에 대한
#홍길동  40        10000
#임꺽정  30        20000
#장길산  20        20000
#홍경래  10        15000
#이징옥  20        30000

# 풀이1
worker = {}
person_List = [{"name":"홍길동", "work_time":40, "per_pay":10000},
              {"name":"임꺽정", "work_time":30, "per_pay":20000},
              {"name":"장길산", "work_time":20, "per_pay":30000}
]
for worker in person_List:
    worker["pay"] = worker["work_time"] * worker["per_pay"] 
    
for worker in person_List:
    print(f"{worker["name"]} {worker["work_time"]} {worker["per_pay"]}")

# 풀이2
worker_list = []

for i in range(0,2):
    name = input("이름 : ")
    worktime = int(input("근무시간 : "))
    hourpay = int(input("시급 : "))
                  
    worker= {}
    worker["name"] = name
    worker["worktime"] = worktime
    worker["hourpay"] = hourpay
    worker_list.append(worker)

for worker in worker_list:
    worker["total"] = worker["worktime"] * worker["hourpay"]
    
    
for worker in worker_list:
    print(f"{worker["name"]}{worker["total"]}")
        

성적처리_dict(김성재)

# 이름, 국어, 영어, 수학, 총점, 평균
# 평균에 대해서 수(90), 우(80), 미(70), 양(60), 가(60미만)
# 학생 3명

student = {}
person_List = [{"name":"김성재","kor":85,"eng":70,"math":90},
               {"name":"김단추","kor":60,"eng":70,"math":80},
               {"name":"박서현","kor":10,"eng":15,"math":20}]

for student in person_List:
    student["total"] = student["kor"] + student["eng"] + student["math"]
    student["average"] = student["total"] / 3

for student in person_List:
    print(f"{student["name"]}님의 국어점수는 {student["kor"]} ,영어점수는 {student["eng"]} ,수학점수는 {student["math"]} ,합계는 {student["total"]}, 평균은 {student["average"]:0.2f}입니다.")

성적처리_dict(백현숙강사님)

scoreList = []    #scoreList = []

#1. 입력 
for i in range(0,4):
    name = input("이름 : ")
    kor = int(input("국어 : "))
    eng = int(input("영어 : "))
    mat = int(input("수학 : "))

    score={} 
    score["name"]= name 
    score["kor"] = kor 
    score["eng"] = eng 
    score["mat"] = mat

    scoreList.append(score) 

for i in range(0, len(scoreList)):
    score = scoreList[i] #저장되었던 dict타입 객체를 가져와서 
    score["total"] = score["kor"] + score["eng"] + score["mat"]
    score["avg"] = score["total"]//3 #몫만 구하기 

for i in range(0, len(scoreList)):
    score = scoreList[i] #저장되었던 dict타입 객체를 가져와서 
    if score["avg"]>=90:
        score["grade"] = "수"
    elif score["avg"]>=80:   
        score["grade"] = "우"     
    elif score["avg"]>=70:   
        score["grade"] = "미"     
    elif score["avg"]>=60:   
        score["grade"] = "양" 
    else:
        score["grade"] = "가"    

for score in scoreList:
    print( f"{score["name"]}", end="\t")
    print( f"{score["kor"]}", end="\t")
    print( f"{score["eng"]}", end="\t")
    print( f"{score["mat"]}", end="\t")
    print( f"{score["total"]}", end="\t")
    print( f"{score["avg"]}", end="\t")
    print( f"{score["grade"]}")

성적처리_list(김성재)

name_list = []
kor_list = []
eng_list = []
math_list = []
total_list = []
average_list = []
grade_list = []
# 풀이 1
for i in range(3): # for문 안에서만 돌린다.
    name = input("이름은? ")
    name_list.append(name)
    
    kor = int(input("국어 점수는? "))
    kor_list.append(kor)
    
    eng = int(input("영어 점수는? "))
    eng_list.append(eng)
    
    math = int(input("수학 점수는? "))
    math_list.append(math)

    total = kor + eng + math
    total_list.append(total)
    
    average = total // 3
    average_list.append(average)

for i in range(3):
    if average_list[i] >= 90:
        grade = "수"
    elif average_list[i] >= 80:
        grade = "우"
    elif average_list[i] >= 70:
        grade = "미"
    elif average_list[i] >= 60:
        grade = "양"
    else:
        grade = "가"
    grade_list.append(grade)
    
# 풀이 2
namelist = []
korlist = []
englist = []
mathlist = []
totallist = []
avelist = []
gradelist = []

for i in range(3):
    name = input("이름을 입력: ")
    kor = int(input("국어점수는 :"))
    eng = int(input("영어점수는 :"))
    math = int(input("수학점수는 :"))
    
    namelist.append(name)
    korlist.append(kor)
    englist.append(eng)
    mathlist.append(math)

for i in range(len(namelist)):
    total = kor + eng + math
    totallist.append(total)
    
    ave = total / len(namelist)
    avelist.append(ave)
    
for i in range(len(namelist)):
    if avelist[i] > 90:
        grade = "수"
    elif avelist[i] > 80:
        grade = "우"
    elif avelist[i] > 70:
        grade = "미"
    elif avelist[i] > 60:
        grade = "양"
    else: grade = "가"
    gradelist.append(grade)
    
for i in range(len(namelist)):
    print(namelist[i], korlist[i], englist[i], mathlist[i])

성적처리_list(백현숙강사님)

nameList=[]
korList=[]
engList=[]
matList=[]
totalList=[]
avgList=[]
gradeList=[]

#입력부터 
for i in range(0,4):
    name =  input("이름 : ")
    kor = int(input("국어 : "))
    eng = int(input("영어 : "))
    mat = int(input("수학 : "))

    nameList.append(name)
    korList.append(kor)
    engList.append(eng)
    matList.append(mat)
    
for i in range(0, len(nameList)):
    total = korList[i] + engList[i] + matList[i]
    avg = total/3 
    totalList.append(total)
    avgList.append(avg)

for i in range(0, len(nameList)):
    grade =""
    if avgList[i]>=90 :
        grade = "수"
    elif avgList[i]>=80 :
        grade = "우"
    elif avgList[i]>=70 :
        grade = "미"
    elif avgList[i]>=60 :
        grade = "양"
    else:
        grade="가"
    gradeList.append( grade )

        
for i in range(0, len(nameList)):
    print(f"{nameList[i]}",  end="\t")
    print(f"{korList[i]}",   end="\t")
    print(f"{matList[i]}",   end="\t")
    print(f"{engList[i]}",   end="\t")
    print(f"{totalList[i]}", end="\t")
    print(f"{avgList[i]}",   end="\t")
    print(f"{gradeList[i]}")

지방노동청(김성재)

#지방 노동청에 신고가 들어옴. 회사가 성별간 임금차별이 있다.
#직원 전체 10명이고, 성별과 연봉을 입력받아서 남자평균, 여자평균 구하기

workerlist = []
wagelist = []

for i in range(3):
    sex = input("성별을 입력하세요 : 남 or 여 ")
    wage = int(input("연봉을 입력하세요 : "))
    workerlist.append({"sex" : sex, "wage" : wage})
    
male_count = 0
female_count = 0
male_sum = 0
female_sum = 0

for i in workerlist:
    if i["sex"] == "남":
        male_count = male_count + 1
        male_sum = male_sum + i["wage"]
    else:
        female_count = female_count + 1
        female_sum = female_sum + i["wage"]
        
male_ave = male_sum / male_count
female_ave = male_sum / male_count

print(male_ave)
print(female_ave)

지방노동청(백현숙강사님)

workerList = []
for i in range(0,10):
    gender = input("성별(남자 or 여자로 적으세요) : ")
    salary = int(input("연봉 : "))
    
    workerList.append({"gender" : gender, "salary":salary})
    
male_count = 0
female_count = 0
male_sum = 0
female_sum = 0

for i in workerList:
    if i["gender"] == "남자":
        male_count += 1
        male_sum += i["salary"]
    else:
        female_count += 1
        female_sum += i["salary"]
        
if male_count > 0:
    print(f"남자 평균 : {int(male_sum/male_count)}")
    
if female_count > 0:
    print(f"여자 평균 : {(female_sum/female_count)}")

과제

짝수반환_함수(김성재)

# 과제1 : 정수를 받아가서 짝수이면 True 짝수가 아니면 False를 반환하는 함수를 만들어라.
num = int(input("정수를 입력하세요"))

def check_even(num):
    if num % 2 == 0: #짝수인 경우
        return True
    else:
        return False
    
result = check_even(num)
print(result)

윤년_함수(김성재)

# 과제2 : 윤년 - 4년마다 옴, 100년에 1번씩 윤년이 아님, 400년에 한번씩 윤년임.
year = int(input("연도를 입력하세요"))
def check_yoonyear(year):
    if year % 400 == 0:
        year = True
    elif year % 100 == 0:
        year = False
    elif year % 4 == 0:
        year = True4
    else:
        year = False
    return year
print(check_yoonyear(year))

# 안수현님 풀이
def is_leapYear(year):
    if year % 4 == 0:
        if year % 100 == 0 and year % 400 != 0:
            return False
        else:
            return True
    else:
        return False

year = int(input("년도를 입력하세요: "))
print(is_leapYear(year))

짝수반환_함수(백현숙강사님)

# 과제1 : 정수를 받아가서 짝수이면 True 짝수가 아니면 False를 반환하는 함수를 만들어라.
def isEven(n):
    if n % 2 == 0:
        return True
    return False

print(isEven(int(input("숫자를 입력하세요"))))

윤년_함수(백현숙강사님)

# 과제2 : 윤년 - 4년마다 옴, 100년에 1번씩 윤년이 아님, 400년에 한번씩 윤년임.
def isLeap(year):
    if (year % 4 ==0 and year % 100 != 0) or year % 400 ==0:
        return True 
    return False

print(isLeap(int(input("년도를 입력하세요"))))

0개의 댓글