@21.03.17
# 마트 계산대 프로그램입니다. 10000원짜리 추석선물세트를 구입했을 때
# 지불해야하는 금액을 계산해보세요. 단, 11개 이상 구매시에는 10% 할인이 됩니다.
ea = int(input("사려는 상품의 갯수를 입력하세요 => "))
print("가격은 %d입니다"%(ea*9000 if ea>=11 else ea*10000))
@@ 위는 간단한 if문 관련 문제이다.
지금까지 내가 if문을 쓸때에는 보통 if,else,elif를 사용했는데, 위와 같이 그냥 한줄로 끝낼 수 있는 방법도 있다는 것을 알자
굉장히 효율적인... 물론 지금은 print만 하지만 내가 나중에 좀 숙력시킬 필요성이 있는 lambda??.. 함수처럼 효율적인 방법 중 하나인것 같다.
@list 값 지우기
del과 remove 그리고 pop이있다.
del의 경우는 리스트의 위치를 지정하여 삭제 -- del 리스트[위치]
pop의 경우는 내가 원하는 위치 혹은, 아무것도 입력하지 않으면 가장 오른쪽에있는 데이터의 값을 삭제한다.
사용법은 -- 리스트.pop(위치 혹은 아무것도 입력X)
remove의 경우는 내가 원하는 값을 삭제하는것. 중복된다면 왼쪽에 있는 값부터 가장 먼저거의 값 하나만 삭제한다. -- remove.리스트(내가 원하는 값)
@list 인덱스 위치 반환
내가 원하는 list의 값의 위치를 반환한다 -- 리스트.index(원하는 값)
@리스트와 튜플
리스트와 튜플은 기본적으로 리스트는 "가변적", 튜플은 "불변적"이라고 말할 수 있다.
아래는 조건문과 관련한 간단한 문제이다. 딕셔너리, 예외처리 사용
아래는 이에 대한 주피터 노트북 내용이다.
03 조건문(분기문)
04 리스트,튜플
05 반복문
PS : lambda
lambda함수에 대해 어느정도 익혀 놓을 필요성을 느꼈다.
이와 관련된 map, filter, reduce 등의 함수에 대해서 익숙해져보자
오늘 조금씩 보면서 써보려 했지만 이해가 안가는 부분이 상당히 많았다.
만일 예제나 알고리즘 문제등을 풀때 이에 대해 익숙해지면 굉장히 효율적인 방법으로 풀이할 수 있을것.
한번 공부해보자!
PS: lambda 활용 예제
새벽 2시까지 빈둥거리다 갑자기 뭔짓거린지....
그냥 문득 갑자기 lambda 한번 활용해서 풀어보고 싶어서 급하게 컴퓨터를 키고 만들어보았다.
만드는데는 그닥 오래 걸리지는 않았다. 다만, 최대,최소 공약,배수 개념을 까먹어서.. 실화인지...
최대공약수는 말 그대로 2개의 수의 공약수 중 가장 큰 것이고, 최소공배수는 최대공약수로 2개의 수를 각 나눴을 때의 몫 곱하기 최대공약수로 구할 수 있다.,
그니까
48 = [2, 3, 4, 6, 8, 12, 16, 24, 48]
32 = [2, 4, 8, 16, 32]
이면 여기서 최대공약수는 16이고 48 = 16 X 3 / 32 = 16 X 2니까 최소공배수는 16 X 3 X 2 = 96이 된다.
무튼 본문!!
while True:
try:
num1 = int(input("첫 번째 수 => "))
num2 = int(input("두 번째 수 => "))
break
except(ValueError): 그냥 숫자만 받을라고 예외처리
print("다시 처음부터 정수만 입력쓰")
lambda와 filter를 활용, 각 수의 약수를 구해줬다. 걍 나머지를 0으로 만들면 공약수니까.. 솔직히 비효율적......
이유인 즉슨, 개념을 좀 정확히 알면 무식하게 약수 다 구할 필요가 없지 않느냐는 말. 막 말로 숫자가 1000이 넘어가면 반복이 각 1000번이라는 소리니까... 뭔가 효율적으로 구하는 법은 모르겠더라.. 소인수분해...가 정답이긴 한것 같은데 고민하기 사실 귀찮당 하핫!!
num1_l=list(filter(lambda x:num1%x==0,range(2,num1+1)))
num2_l=list(filter(lambda x:num2%x==0,range(2,num2+1)))
마찬가지로 filter를 사용해 그냥 아무 리스트나 선택해서 해당 리스트에 값이 있는지 확인하는 작업을 통해 공약수를 구해줬다.
gon=list(filter(lambda x:x in num1_l,num2_l))
cgy=gon[-1]
cgb=cgy*(num1//cgy)*(num2//cgy)
print("최대공약수는 %d이고, 최소공배수는 %d이다."%(cgy,cgb))
실력도 실력이긴한데, 상식 부족이란 느낌이 이번엔 좀 강하게 왔다.. 무튼 이건이거고 코딩 실력 조금만 더 늘리자. "lambda" 이거 개념만 잡으면 진짜 효율적인 함수인것 같다.
'국비교육기관 > 수업' 카테고리의 다른 글
06일차_파이썬_함수 / 오라클 SQL_ORDERBY_논리조건 (0) | 2021.03.22 |
---|---|
05일차_파이썬기초_딕셔너리 / SQL plus_SELECT_WHERE (0) | 2021.03.19 |
04일차_파이썬기초_조건문 / SQL plus (0) | 2021.03.18 |
02일차_파이썬 기초_문자열,연산자,변수 (0) | 2021.03.17 |
01일차_엑셀 활용 빅데이터 맛보기 (2) | 2021.03.17 |
댓글