새싹 인공지능 응용sw 개발자 양성 교육 프로그램 나예진 강사님 수업 정리 글입니다. (나예진 강사님 이메일: nayejin11@gmail.com)
목차
1. 조건문
2. 반복문
3. 함수
프로그램의 흐름 = 컴퓨터가 어떤 일을 해야 하는 지에 대한 과정.
프로그램에서 가장 중요한 조건 판단이다.
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는 똑같은 들여쓰기를 사용하기 때문에 중요도 판단이 어렵다.
프로그램에서 가장 중요한 반복이다.
조건을 만족할 때 까지 반복한다.
false = 들여쓰기 안 함
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
#자판기의 커피 수량
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 반복자(요소 변수 이름) 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)
->아메리카노
카페라떼
카페모카
바닐라라떼
핸드드립
콜드브루
#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
### 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
range(len(coffee)) = range(6) = 0~6
0이라는 값이 i에 들어간다.
그 다음 들여쓰기에 price[i]에 들어간다.
range() = 연속적인 숫자 객체를 만들어서 반환해주는 함수
range값이 업데이트하기 때문에 i에 1이 들어간다.
반복문을 제어하는 break, continue
break : 반복문을 수행하다가 더 이 이상 반복이 필요없는 경우
continue : 반복문을 수행하다가 특정 조건에만 건너뛰고 싶은 경우
# 자판기의 커피 수량
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("관리자에게 문의해주세요.")
number = int(input("input the number of lines : "))
for x in range(number):
print("*" * (number-x))
-> input the number of lines : 9
*********
********
*******
******
*****
****
***
**
*
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잔 입니다.
# 약수찾기
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]
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)
함수 괄호에 넣는 함수의 목적어들 = 매개 변수
함수의 결과 = 리턴값
#함수를 선언한다
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