파이썬 2

ganadara·2022년 11월 8일
2

복습

목록 보기
43/49

새싹 인공지능 응용sw 개발자 양성 교육 프로그램 나예진 강사님 수업 정리 글입니다. (나예진 강사님 이메일: nayejin11@gmail.com)

목차
1. 조건문
2. 반복문
3. 함수

1. 조건문

프로그램의 흐름 = 컴퓨터가 어떤 일을 해야 하는 지에 대한 과정.
프로그램에서 가장 중요한 조건 판단이다.

if

if 안에 else가 들어가면 실행이 안 된다. -> 컴퓨터는 한 줄 한 줄 읽고 똑같은 변수를 선언하면 변수 초기화가 된다.
들여쓰기 하면 계속 if로 판단한다.

#출력
a = 5
if a == 5:
  print("True")
  print("python")

else:
  print("false")
  print("python")
#print("false")

  • 비교연산 - 같다, 다르다, 크다, 작다, 크거나 같다, 작거나 같다
    a == b, a!=b, a < b, a >=b, a<=b

  • 논리연산 - a and b , a or b , not a
    비교연산과 논리연산의 공통점은 결과가 참(true) 또는 거짓(false)로 나온다.

  • 예제1 - 커피 자판기 만들기

#if-elif-else
money = int(input("금액을 넣어주세요 : "))

if money == 300:
  print("coffee")
elif money < 300:
  print("%d원을 돌려줍니다." % money)
else:
  print("coffee")
  print("%d원을 돌려줍니다." % (money - 300))
  
 
#nested구조 : if-else, 들여쓰기 숫자로 중첩을 결정한다.
money = int(input("금액을 넣어주세요 : "))

money = 150
if money == 300:
    print("Coffee")
else:
    if money < 300:
      print("%d원을 돌려줍니다." % money)
    else:
      print("Coffee")
      print("%d원을 돌려줍니다." % (money - 300))

nested가 아닌 if-elif-else는 똑같은 들여쓰기를 사용하기 때문에 중요도 판단이 어렵다.

2. 반복문

프로그램에서 가장 중요한 반복이다.

while

조건을 만족할 때 까지 반복한다.
false = 들여쓰기 안 함

  • 예제2 - 구구단

number = 1
while number < 10:
    print("2 x %d = %d" % (number, 2*number)) #number가 1부터 9까지 반복
    number = number + 1 # number += 1

-> 2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
  
  • 예제3 - 커피자판기
#자판기의 커피 수량
coffee = 5

#커피가 남아있는 동안 작동
while coffee > 0:

    #실제로는 자판기를 통해서 넣은 금액.
    money = int(input("금액을 입력해주세요 : "))
    if money == 300:
      #실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
      print("coffee")

      #이제 커피를 하나씩 줄인다.
      coffee = coffee - 1 #coffee -= 1
    elif money < 300:

      #실제로 이 파트는 돈을 반환한다.
      print("%d원을 돌려줍니다." % money)

    else: # or elif money > 300:
      print("coffee")

      #커피를 뽑아주고
      coffee = coffee -1

      #이제 커피를 하나씩 줄인다.
      print("%d원을 돌려줍니다." % (money - 300))

      #거스름돈을 돌려준다.
      #커피가 다 떨어진 경우 알려야 한다.
print("커피가 모두 소진되었으니, 관리자에게 문의해주세요. ")

->금액을 입력해주세요 : 1000
coffee
700원을 돌려줍니다.

if 독단적 사용 if - elseif 독단 사용가능
elseif, else - 독단적으로 사용불가능

for

for 반복자(요소 변수 이름) in 반복할 수 있는 것(리스트):
코드

while문은 조건이 만족하는 동안 반복을 수행
for문은 지정 횟수동안 반복을 수행

연속형 데이터 타입 변수들은 숫자형이어야 한다. (list, tuple, string...)

for 변수 in 리스트(튜플, 문자열, interator)

#원소가 1,2,3,인 리스트의 원소를 하나하나 출력하는 반복문을 만든다.

L = [1, 2, 3]
for i in L:
  print(i)
 
 ->1
2
3

#i = 지역변수,(전역변수) for문에서만 작동, for문밖에서는 사용하지 않는다.
#in coffees의 첫 번째 값을 coffee에 저장한다. coffees의 역할은 위치에 있는 값을 coffee에 넣어라


#6개의 커피 음료가 담긴 리스트가 있다. 카페에 있는 모든 음료를 출력해보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
for coffee in coffees:
  print(coffee)
  
  ->아메리카노
카페라떼
카페모카
바닐라라떼
핸드드립
콜드브루
  
  • for문의 단짝 range()함수
    for문은 특정 횟수동안 반복을 하기 떄문에, 횟수를 자동으로 만들어 주는 기능이 있으면 좋다.
    파이썬에서 기본적으로 제공하는 range함수는 특정 범위내의 값들을 자동으로 생성해주는 함수이다.
#range함수를 이용해 1부터 4까지 출력하는 프로그램을 작성해보자. for문을 이용해서
#range(1, 11) = 1~11, 에 1씩 더해진다. 11,맨 마지막 값은 포함하지 않는다.
#range(시작값=1, 종료값=11, 몇 씩 증가할 것인지=2)
for i in range(1, 11):
  print(i)
  
  -> 1
2
3
4
5
6
7
8
9
10
  • 예제4 - 음료값 찾기
### 6개의 커피 음료와 음료의 가격이 담긴 리스트가 있다. 가지고 있는 돈이 5000원일 때 먹을 수 있는 모든 음료를 찾아보자
coffee = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]

for i in range(len(coffees)):
  if prices[i] <= 5000:
    print(coffee[i]) 
    
 ->아메리카노
카페라떼
카페모카
콜드브루

#500원 할인행사 중, 가지고 있는 돈이 5000원일 때 먹을 수 있는 모든 음료 찾아보기
coffee = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]

# 1. 
for i in range(len(coffees)):
   if prices[i] <= 5500:
     print(coffee[i])

# 2. 
for i in range(len(coffees)):
  if prices[i] - 500 <= 5500:
    print(coffee[i])
    
    
# 3.
print(prices)
for i in range(len(prices)):
  prices[i] = prices[i] - 500
print(prices)
for i in range(len(coffees)):
  if prices[i] <= 5000:
    print(coffees[i])
    
-> [4100, 4600, 4600, 5100, 6000, 5000]
[3600, 4100, 4100, 4600, 5500, 4500]
아메리카노
카페라떼
카페모카
바닐라라떼
콜드브루

코드는 맨 뒤에서 앞으로 인식한다.
1. len(coffees)가 제일 먼저 인식. len = 숫자의 개수.
len(coffees) = 6

  1. range(len(coffee)) = range(6) = 0~6

  2. 0이라는 값이 i에 들어간다.
    그 다음 들여쓰기에 price[i]에 들어간다.

  3. range() = 연속적인 숫자 객체를 만들어서 반환해주는 함수
    range값이 업데이트하기 때문에 i에 1이 들어간다.

break, continue

반복문을 제어하는 break, continue
break : 반복문을 수행하다가 더 이 이상 반복이 필요없는 경우
continue : 반복문을 수행하다가 특정 조건에만 건너뛰고 싶은 경우

  • 예제5 - 자판기
# 자판기의 커피 수량
coffee = 5
# 거스름돈 보관
extra_money = 0
coffee_price = 300

# 일단 작동!
while coffee > 0:
    # 실제로는 자판기를 통해서 넣은 금액.
    money = 1000
    # 매번 저장된 돈과 들어온 돈을 합산하여 생각합니다.
    money_input = money + extra_money
    if money_input == coffee_price:
        # 실제로 이 파트는 자판기에서 커피를 뽑는 명령으로 대체된다.
        print("Coffee")
        # 이제 커피를 하나씩 줄인다.
        coffee = coffee - 1
        extra_money = money_input - coffee_price

    elif money_input < coffee_price:
        # 돈을 더 받자. # 200원인 경우.
        print("돈이 모자랍니다. 추가로 금액을 입력해주세요.")
        extra_money = money_input
        continue

    else: # or elif money > 300:
        print("Coffee")
        # 커피를 뽑아주고
        coffee = coffee - 1
        # 이제 커피를 하나씩 줄인다.
        extra_money = money_input - coffee_price
        if extra_money >= coffee_price:
          add_coffee = int(input("커피추가는 1번 종료는 0번 : "))
          if add_coffee == 1:
            print("coffee")
            coffee -= 1
            extra_money -= coffee_price
            print("%d원을 반환합니다. 잔여커피갯수는 %d 개입니다" % (extra_money, coffee))
            break

          else:
            print("%d원을 반환합니다. 잔여커피갯수는 %d 개입니다" % (extra_money, coffee))
            break

        # 거스름돈을 돌려준다.
        

    # 정산
    extra_money = 0
        
    # 커피가 다 떨어진 경우 알려야한다.
print("관리자에게 문의해주세요.")
  • 예제6 - 별찍기

number = int(input("input the number of lines : "))
for x in range(number):
  print("*" * (number-x))

-> input the number of lines : 9
*********
********
*******
******
*****
****
***
**
*
  • 예제7 - 자판기
money = int(input("돈을 넣어주세요 : "))
coffee, cocoa, yulmu = [int(x) for x in input("뽑고 싶은 커피, 코코아, 율무차의 수량을 입력해주세요. 쉼표를 기준으로 순서대로 입력하시면 됩니다 : ").split(',')] # .split(',') = ,로 나눠라
print(coffee)
print(f"거스름돈 {money - 300*coffee - 200*cocoa - 300*yulmu} 원입니다. 남은 커피는 {5-coffee}잔, 코코아는 {5-cocoa}잔, 율무차는 {5-yulmu}잔 입니다.")

# f 문자열, print(f"") 
{}안에 값[표현식]을 입력
print("{}+{}={}".format(a, b, a+b))
print(f"{a}+{b}={a+b}")

-> 돈을 넣어주세요 : 3000
뽑고 싶은 커피, 코코아, 율무차의 수량을 입력해주세요. 쉼표를 기준으로 순서대로 입력하시면 됩니다 : 2,3,1
2
거스름돈 1500 원입니다. 남은 커피는 3잔, 코코아는 2잔, 율무차는 4잔 입니다.
  • 예제 8 - 약수찾기
# 약수찾기
print([x for x in range(1, 101) if x %5 == 0])
# 리스트 안에 if문 선언가능, 줄이 하나일 경우 붙여서 쓸 수 있다

-> [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
  • 예제 9 - 단어 갯수 구하기
news_list = news1.split() + news2.split() + news3.split() + news4.split() + news5.split()
word_Dict = dict()

for word in news_list:
  word_Dict[word] = word_Dict.get(word, 0) + 1

print(word_Dict)

#2
word_Dict = {}

for word in nesw_list:
  word_Dict[word] = 0

for word in news_list:
  word_Dict[word] += 1

print(word_Dict)

3. 함수

함수 괄호에 넣는 함수의 목적어들 = 매개 변수
함수의 결과 = 리턴값

#함수를 선언한다
def 함수이름():
내용

#함수를 호출한다
함수이름()

#함수를 선언한다
def 함수이름(매개변수1, 매개변수2, 매개변수3, 매개변수4):
print("안녕하세요" + str(매개변수1))
print("안녕하세요" + str(매개변수2))
return
print("안녕하세요" + str(매개변수3))
print("안녕하세요" + str(매개변수4))

#함수를 호출한다
함수이름()


조건문의 의의: 실행을 한다 or 안 한다
반복문의 의의: 같은 곳을 여러 번 실행한다.
함수의 의의: 실행을 다른 곳으로 확 이동해 버린다.

함수를 사용하는 가장 중요한 이유는 재사용성 때문이다. 똑같은 구조의 코드가 반복되는 것을 피하기 위해 사용된다.

유효범위(scope)는 변수의 수명을 의미한다.

지역변수(loacl variable) : 함수 안에서 만들어진 변수, 함수안에서만 사용가능
전역변수(global variable) : 함수 밖에서 만들어진 변수, 어느 위치에서든 호출하면 사용이 가능

def add(a, b):  #함수선언 #a,b 지역변수
  c = a + b
  return c #결과 값 

add(10,11)

-> 21
def sub(a, b):
  c = a - b
  return c

def mul(a, b):
  return a * b

def div(a, b):
  if b == 0:
    return 0
  return a / b
  
a = 10
b = 0
print("Sub :", sub(a, b))
print("Mul :", mul(a, b))
print("Div :", div(a, b))

-> Sub : 10
Mul : 0
Div : 0
profile
DL 공부중

0개의 댓글