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