728x90
반응형

Day 9 리뷰 문제

# REVIEW 1) 1~20 숫자 중 짝수만 포함하는 리스트 컴프리헨션 만들기

#방법1
[i for i in range (1,21) if i % 2 ==0]
#방법2
[i for i in range (2,21,2)]

# REVIEW 2) 주어진 리스트 [1,2,3,4,5,6,7,8,9,10]에서 5보다 큰 숫자만을 포함하는 새로운 리스트를 리스트 컴프리헨션을 사용해 만들기

numList = [1,2,3,4,5,6,7,8,9,10]
overFiveList = [i for i in numList if i > 5]
print(overFiveList)      #[6,7,8,9,10]

# REVIEW 3) 문자열 리스트 ['apple','banana','cherry','date']에서 각 단어의 첫 글자만을 추출하여 새로운 리스트 만들기
# 예상 답안 ['a','b','c','d']

fruits = ['apple','banana','cherry','date']
firstLetterList = [i[0] for i in fruits]
print (firstLetterList)  # ['a','b','c','d']

# REVIEW 4) 위의 FRUITS를 대문자화 하기

fruitsUpper= [i.upper() for i in fruits]
print(fruitsUpper)      # ['APPLE','BANANA','CHERRY','DATE']
Day 10
딕셔너리 컴프리헨션 (Dictionary Comprehension)
딕셔너리 컴프리헨션은 Key 값과 Value 쌍을 생성하여 Dictionary를 만드는데 사용됨.

구조:
{키 : 값 for 변수 in 리스트 or 문자열}
zip 함수의 기본 사용법
#1. zip 함수를 이해하기 쉬운 비유로 설명하자면, 'zipper' 처럼 서로 다른 두 줄의 요소들을 하나씩 짝지어 올리는 것임
#2. zip 함수는 두 개 이상의 리스트를 받아서, 첫 번재 리스트의 첫 번째 요소와 두 번째 리스트의 첫 번째 요소를 묶고, 다음으로 두 번째 요소들을 묶는 식으로 진행 

(#Dict 리뷰)

#dict_comp
normalPopcorn = {
        'name':'일반',
        'price':'2500',
    }   #이렇게 생긴게 Dict 였다.

(# Dict_comp 활용)

# #dict_comp을 활용하려면 zip를 해주어야 한다
# #zipper
# zipped = zip(coffee,price)
# print(list(zipped))  #[('아메리카노', 2500), ('라떼', 3000), ('바닐라', 3500)]

coffee = ['아메리카노','라떼','바닐라']
price = [2500,3000,3500]

result = [{'이름':name,'가격':price} for name,price in zip(coffee,price)]

print(result)
#[{'이름': '아메리카노', '가격': 2500}, {'이름': '라떼', '가격': 3000}, {'이름': '바닐라', '가격': 3500}]

coffee = ['아메리카노','라떼','바닐라']
price = [2500,3000,3500]
caffeine=[120,150,50]

resultC = [{'이름':name,'카페인':caffeine} for name,caffeine in zip(coffee,caffeine)]
print(resultC)

(#Enumerate 리뷰)

#enumerate 순서랑 값 나타내기
for index,item in enumerate(coffee):      #enumerate 순서랑 값 나타냄
    print(f"{index}.{item}")
    #결과 0. 아메리카노
    #결과 1. 라떼
    #결과 2. 바닐라

(#Dict comp, Enumerate, Zip 활용)

#아래 popcorn = 의 dict를 {index ~~ for ~ in enumerate(zip()) 을 활용하여 표현 가능하다
coffee = ['아메리카노','라떼','바닐라']
price = [2500,3000,3500]

a= {index: {'이름':coffee, '가격':price} for index,(coffee,price) in enumerate(zip (coffee,price))}

popcorn = {
    1: {
        'name':'일반',
        'price':2500
    }
}
print(a)
# {0: {'이름': '아메리카노', '가격': 2500}, 1: {'이름': '라떼', '가격': 3000}, 2: {'이름': '바닐라', '가격': 3500}}

#1 for coffee,price in zip (coffee,price)
#2 for index,(coffee,price) in enumerate(zip (coffee,price))
#3 딕셔너리화 {for index,(coffee,price) in enumerate(zip (coffee,price))}
#4 딕셔너리 값에 인덱스넣기 {index:{'name':coffee,'price':price} for index,(coffee,price) in enumerate(zip (coffee,price))}

 

Day 10
Function

1. 프로그래밍과 함수의 관계
 특징: 함수는 프로그램에서 중요한 역할을 하며, 코드를 조직화하고 재사용할 수 있게 해줌.
이는 유지 보수를 쉽게 하고, 이는 유지 보수를 쉽게 하고 프로그램의 복잡성을 줄이는 데 기여함
2. 함수 정의 방법: def 키워드
설명: 함수를 호출하려면 함수 이름과 괄호를 사용함. 괄호 안에는 함수가 정의될 때 지정된 매개변수에 해당하는 인자를 넣어 줌. 함수가 호출되면, 파이썬은 함수의 본문을 실행.

3. 키워드 매개변수 (Keyword Arguments)
설명: 키워드 매개변수를 사용하면 인수를 전달할 때 매개변수의 이름을 명시적으로 지정할 수 있음. 이렇게 하면, 인수의 순서가 바뀌어도 올바르게 전달 됨. 

(예시: pet_name과 animal_type의 순서가 바뀌어도 함수가 올바르게 작동)

(예시 2)

def add(x,y):
    result = x+y
def minus(x,y):
    result = x-y
def multiply(x,y):
    result = x*y
def oddEven(x):
    if x%2 ==0 :
        return "짝수입니다"
    else:
        return "홀수입니다"
a = oddEven(5)
print(a)
4. 기본 매개변수 값 설정
설명: 함수 정의 시 매개변수에 기본값을 설정할 수 있음. 호출 시 해당 매개변수에 값을 제공하지 않으면, 기본값이 사용됨.

(예시: animal_type에 기본값 'dog'가 설정되어 있으므로, pet_name_만 전달해도 함수가 작동함)

(응용예시)

def makeListDict(xList,yList,xKey,yKey):
    return [{xKey: x, yKey: y} for x,y in zip(xList,yList)]

breads = ['소금빵','보름달','단팥빵','앙버터','마카롱']
prices = [2500,1000,2400,4500,3000]
result= makeListDict(breads,prices,'빵','가격')
print(result)
    #[{'빵': '소금빵', '가격': 2500}, {'빵': '보름달', '가격': 1000}, {'빵': '단팥빵', '가격': 2400}, {'빵': '앙버터', '가격': 4500}, {'빵': '마카롱', '가격': 3000}]

 

반응형
728x90
반응형
지난 시간 리뷰 문제 
# REVIEW 1 1부터 100까지의 사이 출력한 뒤 정수 N의 배수만 출력하도록 만들기
num = int(input("정수 입력하기: "))
for x in range (101):
    if x % num == 0:
        print(x)
# REVIEW 2 정수를 받고, 구구단 (x1 ~ x9) 출력하기
num1= int(input("정수 입력:"))
for i in range (1,10):
    print(f"{num1} * {i} = {num1 * i}")   # 5*1=5  5*2=10
DAY 9
BREAK: FOR, WHILE 에 반복을 끊는 역할

CONTINUE: JUMP 같은 역할

(break 예시)

for i in range (100):
    if i==50:
        break
    else:
        print(i)        # 0 1 2 3... 49

(continue 예시)

for i in range (100):
    if i==50:
        continue
    else:
        print(i)   # 0 1 2 3 ... 49 51 .. 99
Day 9
While 문 : 파이썬에서 while 문은 조건이 True인 동안 반복해서 코드 블록을 실행하는 데 사용 됨. while 루프는 주어진 조건이 False가 될 때까지 계속 실행되며, 조건이 처음부터 False이면 루프 내부의 코드는 한 번도 실행되지 않음.

While 은 유저가 끝을 결정 짓는 상황, 
For 는 프로그래머가 끝을 결정 짓는 상황으로 이해할 수 있음!

(while문 기본 구조 1)

a=1
while a < 10:
    print ('아메리카노')
    a=a+1     # a += 1
    #결과: 아메리카노 9번 써짐

(while문 기본 구조 2)

while True:
    print("너가 숫자 1을 넣어야 탈출 가능")
    num=int(input("숫자 입력:"))
    if num == 1 :
        break

(while문의 응용 - 커피 프로그램 개발-)

coffeeList=[]

while True:
    print("-메가커피 프로그램-")
    print("1. 커피 등록하기")
    print("2. 커피 메뉴보기")
    print("3. 시스템 종료")
    codeNumber = int(input("번호 입력: "))
    if codeNumber==1:
        print("커피 등록 시스템")
        coffeeName=input("커피 이름 입력")
        coffeeList.append(coffeeName)
        print("등록 완료!")
    elif codeNumber ==2:
        if len(coffeeList) == 0:
            print("커피 메뉴가 없어요ㅠ.ㅠ")
        else: print(coffeeList)
    elif codeNumber ==3:
        print("이용해 주셔서 감사합니다.")
        break
    else:
        print("숫자를 다시 입력하세요")
Day 9 
For 문 컴프리헨젼
파이썬에서의 리스트 컴프리헨션 (List Comprehension)은 for 문을 사용하여 리스트를 생성하는
간결하고 효율적인 방법임.

기본적인 for 문 대신에 리스트 컴프리헨션을 사용하면 코드를 더 짧고 읽기 쉽게 만들 수 있음

(기존 FOR문)

a = []
for i in range (1001):
    a.append(i)
    print(a)

(FOR_COMPREHENSION 예시)

a = [i for i in range (1001)]
print(a)        #[1, 2, 3.... , 1000]
b = [i for i in range (101)]
print(b)        #[1,2,3...,100]
c = [i for i in range (1,501)]
print(c)        #[1,2,3...,500]
d = [i for i in "megastudy"]
print(d)          # ['m','e','g','a',..'y']
e = [i*2 for i in range (1,101)]
print(d)         # [2,4,6,8...200]
#1. 1~10을 각각 제곱한 수의 리스트
f = [i**2 for in range (1,11)]
print(f)
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#2. 1~10에 각각 5를 더한 수의 리스트
g= [i+5 for i in range (1,11)]
print(g)
#[6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
조건부 컴프리헨션 (Conditional Comprehension)
컴프리헨션 내에 if-else 조건문을 사용하여 특정 조건에 따라 다른 값들을 생성
구조: [값1 if 조건 else 값2 for 변수 in 반복가능객체]

(예시 1) IF가 뒤에 있을 때에는, FILTER 역할 수행!)

fruits =['apple','strawberry','mango','orange','melon']
for i in fruits :
    print(i)   # apple strawberry mango ...
#예시) alphabet a 가 있는 애들만 찾기
a = [i for i in fruits if i.count('a')>0]
print(a)  #['apple', 'strawberry', 'mango', 'orange']
#예시) alphabet r 이 하나만 있는 애들만 찾기
b = [i for i in fruits if i.count('r')==1]
print(b)  #['orange']
#글자 개수가 6글자 이상만 찾기
c = [i for i in fruits if len(i) >= 6]
print(c)  #['strawberry', 'orange']

(예시 2) IF - ELSE 가 있을때는 MAP 변환/치환 역할 수행!

d = [':>' if i%2 ==0 else i for i in range (1,101)]
print(d)  #[1, ':>', 3, ':>', 5, ':>', 7, ':>', 9, ':>',...:>(100)]

(활용 1) 유저에게 n을 입력 받고, 1~100까지의 리스트 출력을 하는데
n  의 배수만 @를 표현해주고 나머지는 숫자로 표현

n=int(input("정수 입력: "))
e = ['@' if i%n==0 else i for i in range (1,101)]
print (e)
# 5 넣으면 [1, 2, 3, 4, '@', 6, 7, 8, 9, '@' ... '@]

(활용 2) fruits = ['apple','strawberry','mango','orange','melon']
fruits 에서 5글자 이하이면 대문자로 바꿔서 출력하고
아니면 #로 출력하는 리스트 만들기

f = [i.upper() if len(i)<=5 else '#' for i in fruits]
print (f) #['APPLE', '#', 'MANGO', '#', 'MELON']
중첩 루프 컴프리헨션 (Nested Loop Comprehension)
컴프리헨션 내에 두 개 이상의 반복문을 중첩하여 사용 가능. 이는 여러 개의 리스트나 다른 반복 가능한 객체들 간의 조합을 생성하는 데 유용
구조: [값 for 변수1 in 반복가능객체1 for 변수2 in 반복가능객체2]
h=[i*j for i in range (1,4) for j in range (1,4)]
#i:1일때 j: 1,2,3
#i=2일때 j: 1,2,3
#i=3일때 j: 1,2,3
print(h)
#결과: [1, 2, 3, 2, 4, 6, 3, 6, 9]

g=[i+j for i in ["apple","banana"] for j in ["pie","tanghuru"]]
print(g)
# 결과: ['applepie', 'appletanghuru', 'bananapie', 'bananatanghuru']

 

반응형

+ Recent posts