오늘은 계속 문제만 풀었다. 사이트에 있던 문제를 대부분 풀고 미션으로 넘어갔다. 아직 객체와 클래스 문제는 시작하지도 못했는데,,, 다음 주에 지옥이 펼쳐질 것 같다. 그래도 이틀 사이에 장족의 발전을 했다. 프리코스 때 1시간 걸렸던 문제를 3분 만에 풀었다. 다음 주의 성장이 기대된다.
list 타입의 변수와 for, in, range를 결합한 코드가 아직 익숙하지 않다.
학습시간 18:00~01:00(당일7H/누적38H)
print((12 >= 10 and not 3 > 4) or 3 ** 2 != 9)
== (True and not Flase) or False
== True or False
== True
그동안 True or False가 False인 줄 알았는데 True였다. 이제라도 알아서 다행이다.
불린 연산이 은근 헷갈린다. 아래 표로 외워야겠다.
True and True == True
True and False == False
False and True == False
False and False == False
True or True == True
True or False == True
False or True == True
False or False == False
def say_hello():
message = “hello”
return message
지금까지 이해한 바에 따르면, print는 함수에 저장해도 1회만 출력되고 None이 반환되어 “None”이 한 번 더 출력된다. return은 함수에 아예 저장한다. 대신 print(say_hello)를 입력해야 return한 값이 출력된다.
아래는 내가 만든 [거스름 돈 계산기] 코드인데, 만들면서도 너무 효율이 안 좋다는 생각을 했다.
def calculate_change(payment, cost):
change = payment - cost
count50000 = change // 50000
change = change % 50000
print (f"50000원 지폐: {count50000}장")
count10000 = change // 10000
change = change % 10000
print (f"10000원 지폐: {count10000}장")
count5000 = change // 5000
change = change % 5000
print (f"5000원 지폐: {count5000}장")
count1000 = change // 1000
change = change % 1000
print (f"1000원 지폐: {count1000}장")
GPT한테 물어보니 잔액을 list로 넣고 for문을 돌면 아래처럼 간단히 가능하다. 이걸 왜 이제 알았지 ㅠㅠ
def calculate_change(payment, cost):
change = payment - cost
bills = [50000, 10000, 5000, 1000]
for bill in bills:
bill_count = change // bill ; change %= bill
print(f"{bill}원 지폐: {bill_count}장")
문제를 풀다가 지금까지 배운 내용으로 도저히 풀 수가 없어서 GPT를 통해 while&try&break&except를 동시에 사용하는 방법을 학습했다. if&else랑 비슷한 느낌이었다. 관건은 while과 break의 사용처를 명확히 구분하는 것일 듯하다.
def add_numbers():
while True:
try:
n1 = int(input("첫 번째 숫자를 입력하세요: "))
break
except:
print("올바른 숫자를 입력하세요.")
while True:
try:
n2 = int(input("두 번째 숫자를 입력하세요: "))
break
except:
print("올바른 숫자를 입력하세요.")
print(f"{n1} + {n2} = {n1 + n2}")
add_numbers()