우리의 목표를 이루기 위해서는 python 의 기초 문법인 아래 기능들이 필요하다.
input() // 입력 - 사용자에게 어떠한 데이터를 입력 받아 컴퓨터에 저장해준다.
ex) a=input('숫자를 입력하세요')
print() // 출력 - 컴퓨터에 들어있는 데이터를 사용자에게 출력해준다.
코드
name = input("이름을 입력해주세요: ")
print(name + "씨 안녕!!")
결과
이름을 입력해주세요: 장멍게
장멍게씨 안녕!!
코드
나와 친구가 먹은 음식 가격을 입력받아 더해서 출력해보자.
food1 = input("내가 먹은 음식의 가격")
food2 = input("친구가 먹은 음식의 가격")
print(food1 + food2)
결과
내가 먹은 음식의 가격 : 5000
친구가 먹은 음식의 가격 : 7000
50007000
-> 우리가 생각한 결과가 아니다.
사실 우리가 사용하고 있는 이 input()은 모두 글자로 저장이 되고 있다.
즉, 우리가 숫자를 입력했다고 하지만 5000, 7000이라는 데이터는 모두 글자다.
우리가 원했던 더하기를 하려면 어떻게 해야할까?
int() // 글자를 숫자로 변환시켜준다.
-> 이런 것을 형변환이라 한다.
최종 코드
food1 = input("내가 먹은 음식의 가격 : ")
food2 = input("친구가 먹은 음식의 가격 : ")
food1 = int(food1) // 문자로 입력받은 food1값 숫자로 변경
food2 = int(food2) // 문자로 입력받은 food2값 숫자로 변경
print(food1 + food2)
결과
내가 먹은 음식의 가격 : 5000
친구가 먹은 음식의 가격 : 7000
12000
-> 이제 결과가 우리가 생각한 대로 잘 나온다.
연산자
가장 기본적인 사칙연산(+, -, *, /)에 대해 알아보자.
코드(+,-)
print(10+20)
print(10-20)
결과
30
-10
월세와 관리비를 입력받아 더해보자.
코드
월세 = int(input("월세를 입력해주세요 : "))
관리비 = int(input("관리비를 입력해주세요 : "))
print(월세 + 관리비)
결과
월세를 입력해주세요 : 500000
관리비를 입력해주세요 : 100000
600000
사칙연산을 모두사용해보자.
코드
월세 = int(input("월세를 입력해주세요 : "))
관리비 = int(input("관리비를 입력해주세요 : "))
print(월세 + 관리비)
print(월세 - 관리비)
print((월세 + 관리비) * 12)
print(월세 / 관리비)
결과
월세를 입력해주세요 : 500000
관리비를 입력해주세요 : 100000
600000
400000
7200000
5.0
orders = []
print(orders)
결과
[]
step 2. 순서대로 "짜장", "짬뽕", "탕수육"을 넣어주세요.
코드
orders = ["짜장", "짬뽕", "탕수육"]
코드
orders = ["짜장", "짬뽕", "탕수육"]
print(orders[0])
print(orders[1])
print(orders[2])
결과
짜장
짬뽕
탕수육
step 3. "냉면"을 첫번째로 추가해주세요.
append() // 리스트의 맨 뒤에 추가된다.
insert() // 리스트의 원하는 위치에 추가된다.
적용 코드
orders = ["짜장", "짬뽕", "탕수육"]
orders.append("냉면")
orders.insert(3, "양장피")
print(orders)
결과
['짜장', '짬뽕', '탕수육', '양장피', '냉면']
step 4. 생각해보니 "짬뽕"이 안땡겨요. 삭제해주세요.
del //
ex) del 리스트이름[인덱스번호]
remove() //
ex) 리스트이름.remove(value)
'짬뽕'을 삭제하라.
적용 코드
orders = ["짜장", "짬뽕", "탕수육"]
orders.remove("짬뽕")
print(orders)
결과
['짜장', '탕수육']
-> 짬뽕이 삭제된 것을 확인 할 수 있다.
orders = ["짜장", "짬뽕", "탕수육"]
del orders[1]
print(orders)
결과
['짜장', '탕수육']
-> 짬뽕이 삭제된 것을 확인 할 수 있다.
step 5. 주문서에 총 몇 개의 음식이 있나요?
len()
적용 코드
orders = ["짜장", "짬뽕", "탕수육"]
print(len(orders))
결과
3
len()을 이용해 문자열의 길이도 알 수 있다.
name = "안녕하세요 코드라이언입니다."
print(len(name))
결과
15
num = [20, 40, 50, 10, 30]
print(num)
결과
[20, 40, 50, 10, 30]
step 2. list 안의 숫자들의 전체 합을 출력해주세요.
코드
num = [20, 40, 50, 10, 30]
add = num[0] + num[1] + num[2] + num[3] + num[4]
print(add)
결과
150
-> 결과는 잘 나왔지만, 위처럼 일일이 더하면 요소가 100개, 1000개가 넘어가게 되면 불가능한 방법이다.
sum()
-> 위 함수를 사용하자.
코드
num = [20, 40, 50, 10, 30, 100, 200]
add = sum(num)
print(add)
결과
450
step 3. list 안의 숫자들의 평균을 출력해주세요.
평균 = (전체의합)/전체개수
코드
num = [20, 40, 50, 10, 30]
print(sum(num) / len(num))
결과
30.0
step 4. 가장 큰 값과 가장 작은 값을 각각 출력해주세요.
max()
min()
코드
num = [20, 40, 50, 10, 30]
print(max(num))
print(min(num))
결과
50
10
-> 이렇게 가장 큰 값과 작은 값을 찾아낼 수 있다.
menu = {}
-> 딕셔너리는 중괄호를 이용해 생성할 수 있다.
step 2. 메뉴판에 음식 이름과 가격을 넣어 메뉴판을 만들어 주세요.
위 내용을 코드로 변경하면 아래와 같다.
menu = {"짜장": 4000,"짬뽕": 5000, "탕수육: 9000}
print(menu)
결과
{'짜장': 4000, '짬뽕': 5000, '탕수육': 9000}
-> 결과가 잘 나오는 것을 볼 수 있다.
step 3. 새로운 메뉴 "냉면"을 메뉴판에 추가해주세요.
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
menu["냉면"] = 6000
print(menu)
결과
{'짜장': 4000, '짬뽕': 5000, '탕수육': 9000, '냉면': 6000}
-> 잘 추가된 것을 확인 할 수 있다.
step 4. "짬뽕"의 가격이 얼마죠? "짬뽕"의 가격을 출력해 주세요.
print(딕셔너리이름[key값])
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
print(menu["짬뽕"])
결과
5000
step 5. 생각보다 탕수육이 비싼 것 같아요. 탕수육의 가격을 8500원으로 변경해주세요.
기존 value를 변경할 때도 추가하는 것과 구성은 똑같다.
즉, key값이 존재하면 value값 변경이 되는 것이고, key값이 존재하지 않으면 추가가 되는 것이다.
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
menu["탕수육"] = 8500
print(menu)
결과
{'짜장': 4000, '짬뽕': 5000, '탕수육': 8500}
step 6. 준비해둔 "짜장"재료가 다 떨어졌어요. "짜장"을 메뉴판에서 삭제해 주세요.
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
del menu["짜장"]
print(menu)
결과
{'짬뽕': 5000, '탕수육': 9000}
step 7. 완성된 메뉴판 전체를 출력해 주세요.
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
menu["냉면"] = 6000
print(menu["짬뽕"])
menu["탕수육"] = 8500
del menu["짜장"]
print(menu)
결과
5000
{'짬뽕': 5000, '탕수육': 8500, '냉면': 6000}
step 1. 나와 동료의 학번을 입력받아서 비교해봅시다.
관계연산자 종류
a==b // a와 b가 같니?
a!=b // a와 b가 다르니?
a<b // a가 b보다 작니?
a>b // a가 b보다 크니?
a<=b // a가 b보다 작거나 같니?
a>=b // a가 b보다 크거나 같니?
코드
myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))
print(myGrade != yourGrade)
print(myGrade == yourGrade)
print(myGrade > yourGrade)
print(myGrade < yourGrade)
print(myGrade >= yourGrade)
print(myGrade <= yourGrade)
결과
학번을 입력하세요 : 15
학번을 입력하세요 : 17
True
False
False
True
False
True
step 2. 동료의 학번이 나와 같다면, "앗!동기네요"라고 출력해봅시다.
if 조건:
실행할 코드
-> if는 조건문 사이에 스페이스로 한칸 띄어줘야 하고 실행할 코드는 tab을 이용해 띄워줘야 한다.
step 3. 동료의 학번에 따라 호칭을 다르게 인사 해봅시다.
(e.g.안녕하세요(후배님/동기님/선배님)
코드
myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))
if myGrade == yourGrade :
print("앗 동기네요!")
print("반갑습니다.")
결과
학번을 입력하세요 : 10
학번을 입력하세요 : 10
앗 동기네요!
반갑습니다.
myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))
if myGrade == yourGrade :
print("앗 동기네요!")
else :
print("앗 동기가 아니네요!")
if 조건:
True일때 실행될 코드
elif 조건:
위에있는 if가 False이고, elif 조건이 True일때 실행될 코드
else:
모든 조건문이 False일때 실행될 코드
코드
myGrade = int(input("학번을 입력하세요 : "))
yourGrade = int(input("학번을 입력하세요 : "))
if myGrade == yourGrade : // 나의 학번과 동료 학번이 같으면
print("안녕하세요 동기님!")
elif myGrade < yourGrade : // 나의 학번이 동료 학번보다 높으면
print("안녕하세요 선배님!")
elif myGrade > yourGrade : // 나의 학번이 동료 학번보다 낮으면
print("안녕하세요 후배님!")
else : // 위 세가지 경우가 다 아니라면
print("누구세요?")
if + list 조합을 사용해보자.
코드
orders = ["짜장", "짬뽕", "탕수육"]
food = input("먹고싶은 메뉴를 입력해주세요 : ")
if food in orders : // 리스트의 요소들과 food 비교
print("주문할 수 있습니다.")
else :
print("주문할 수 없습니다.")
-> 위에 'if food in orders:' 처럼 작성하게 되면 'orders라는 리스트안에 food가 존재한다면' 이라는 조건문이 된다.
결과
//짜장을 입력했을 때
먹고싶은 메뉴를 입력해주세요 : 짜장
주문할 수 있습니다. //짜장은 리스트 요소에 포함되어 있기 때문에 가능
//냉면을 입력했을 때
먹고싶은 메뉴를 입력해주세요 : 냉면
주문할 수 없습니다. //냉면은 리스트 요소에 없기 때문에 불가능
if + dict 조합을 사용해보자.
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
food = input("먹고싶은 메뉴를 입력해주세요 : ")
if food in menu :
print("주문 가능")
else :
print("주문 불가")
결과
// 짜장 입력했을 때
먹고싶은 메뉴를 입력해주세요 : 짜장
주문 가능
// 냉면 입력했을 때
먹고싶은 메뉴를 입력해주세요 : 냉면
주문 불가
이번엔 먹고 싶은 음식의 가격을 출력해보자.
코드
menu = {"짜장" : 4000, "짬뽕" : 5000, "탕수육" : 9000}
food = input("먹고싶은 메뉴를 입력해주세요 : ")
if food in menu :
print(menu[food], "원 입니다.")
else :
print("주문 불가")
결과
먹고싶은 메뉴를 입력해주세요 : 짬뽕
5000 원 입니다.
while문
: ~하는 동안에
-> 조건이 True인 동안에 계속 실행해라.
코드
while 10 < 90 :
print("True")
결과
-> 위 코드에서 while문의 조건이 항상 참이기 때문에 'True'가 무한반복해서 출력된다.
-> 멈추려면 Ctrl + c 를 입력하면 된다.
무한반복의 경우는 특별한 경우가 아닌 이상 쓸 곳이 별로 없다.
무한반복이 아닌 6번만 출력하도록 해보자.
코드
i = 0
while i < 6 :
print(i)
i = i + 1
결과
0
1
2
3
4
5
역순으로도 출력해보자.
코드
i = 5
while i >= 0 :
print(i)
i = i - 1
결과
5
4
3
2
1
0
반복문을 빠져나갈 때 사용하는 것이 있다. 그것이 바로 break문이다.
break
코드
if문을 사용해서 특정조건에 break문을 사용해 무한 반복문을 빠져나오게 해보자.
i = 0
while True :
print(i)
i = i + 1
if i >= 3 :
print("if문 동작")
break
print("반복문 종료!")
결과
0
1
2
if문 동작
반복문 종료!
반복문을 빠져나가는 것이 아니라 continue문을 만나면 다시 반복문의 조건을 확인하러 올라간다.
continue
코드
i = 0
while i < 10 :
i = i + 1
if i % 2 == 0 : // 2의 배수라면
continue // 아래 print 코드가 동작되기 전에 다시 while 조건문을 확인한다.
print(i)
print("반복 종료!")
-> 2의 배수가 아닌 즉, 홀수만 출력되도록 작성된 코드이다.
결과
1
3
5
7
9
반복 종료!
for문
for 변수 in 시퀀스:
실행될 코드
시퀀스란?
: 어떠한 순서를 가지고 있는 데이터의 집합을 말한다.
ex) 튜플, 리스트 등
코드
for x in [10, 20, 30]:
print(x)
결과
10
20
30
-> 시퀀스(리스트)의 끝을 만나게 되면 그때 반복을 멈추게 된다.
range(시작숫자, 종료숫자, 스텝)
코드
for x in range(10) :
print(x)
결과
0
1
2
3
4
5
6
7
8
9
-> 0부터 종료숫자(10) 전까지 나오는 것을 볼 수 있다.
range(시작숫자, 종료숫자, 스텝)
코드
for x in range(10, 20, 2) : // 10~20까지 2씩 증가하며 반복
print(x)
결과
10
12
14
16
18
1부터 100까지 모두 더하는 프로그램을 작성해보자.
코드
result = 0
for x in range(1, 101) :
result = result + x
print(result)
결과
5050
1부터 10까지 곱해보자.
코드
result = 1
for x in range(1, 11) :
result = result * x
print(result)
결과
3628800
1. 세로로 별 5개를 찍어보자.
코드
for i in range(5):
print("*")
결과
*
*
*
*
*
2. 별을 가로로 10개 찍어보자.
코드
for x in range(10) :
print("*", end="")
-> end옵션을 사용하면 그 뒤의 출력값과 이어서 출력한다. (즉, 줄바꿈을 하지 않게 된다.)
결과
**********
< 문제 1 >
다음과 같이 출력하는 코드를 작성해보자.
*****
*****
*****
*****
*****
코드
for x in range(5):
for y in range(5):
print("*", end="")
print()
< 문제 2 >
다음과 같이 출력하는 코드를 작성해보자.
*
**
***
****
*****
코드
for x in range(1,6):
for y in range(x):
print("*", end="")
print()
변수 x에 숫자를 입력받아 1부터 x까지의 숫자 모두 출력하기
ex) x에 5를 입력받아 1,2,3,4,5를 출력하는 코드
코드
x = int(input('숫자를 입력해주세요'))
for i in range(x):
print(i+1)
결과
숫자를 입력해주세요5
1
2
3
4
5
< 문제 1 >
변수 x에 숫자를 입력받아 1부터 x까지의 숫자 모두 출력하는데 10개를 1줄로 구성해서 출력하기
ex) 30을 입력했다면,
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
코드
x = int(input('숫자를 입력해주세요'))
for i in range(x):
if ((i+1) % 10)==0:
print(i+1)
else:
print(i+1, end= " ")
결과
숫자를 입력해주세요30
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
로또 번호를 선택하는 방법!
step1. 1부터 45까지 숫자가 하나씩
step2. 이 중 아무거나 6개를 선택
random 사용법
random.sample(랜덤범위, 개수)
-> random기능을 사용하기 위해서는 import 해야한다.
코드
import random
randomNumber = random.sample(range(1, 100), 10)
print(randomNumber)
-> 1부터 50까지 3개를 뽑고 싶으면 아래같이 변경하면 된다.
randomNumber = random.sample(range(1, 50), 3)
결과
[87, 42, 10, 84, 59, 23, 72, 34, 61, 88]
-> 1부터 100까지 숫자 중에 10개의 숫자가 랜덤으로 출력된 것을 확인 할 수 있다.
문제
1. 사용자에게 로또를 몇 개 살건지 숫자 입력
2. 1부터 45까지 숫자 중 6개를 랜덤으로 뽑기
3. 사용자에게 입력받은 개수만큼 2를 뽑기
4. 오름차순으로 정렬해서 출력하기
코드
import random
lotto_count = int(input('로또를 몇 개 살건가요?'))
for i in range(lotto_count):
randomNumber = random.sample(range(1, 46), 6)
randomNumber.sort()
print(randomNumber)
결과
로또를 몇 개 살건가요?2
[9, 11, 14, 23, 35, 38]
[14, 17, 25, 36, 37, 43]
아래 결과를 출력하는 여러가지 방법을 알아보자.
결과 1
*****
방법 1
print("*****")
방법 2
for x in range(5) :
print("*", end="")
방법 3
print("*" * 5)
결과 2
*****
*****
*****
*****
*****
방법 1
for x in range(5) :
print("*" * 5)
결과 3
*
**
***
****
*****
방법 1
for x in range(5) :
print("*" * (x + 1))
결과 1
x에 5를 입력했을 때
5
4
3
2
1
방법 1
x = int(input("숫자를 입력하세요 : "))
for i in range(x, 0, -1) :
print(i)
결과 2
x에 30을 입력했을 때
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
방법 1
x = int(input("숫자를 입력하세요 : "))
for i in range(x) :
if i % 10 == 0 :
print()
print(i+1, end="")
print()
방법 2
좀 더 깔끔한 출력을 위해 /t사용
x = int(input("숫자를 입력하세요 : "))
for i in range(x) :
if i % 10 == 0 :
print()
print(i+1, end="\t")
print()
문제
1. 사용자에게 로또를 몇 개 살건지 숫자 입력
2. 1부터 45까지 숫자 중 6개를 랜덤으로 뽑기
3. 사용자에게 입력받은 개수만큼 2를 뽑기
4. 오름차순으로 정렬해서 출력하기
방법 1
import random
count = int(input("로또를 몇개 구매하시겠습니까? "))
for i in range(count) :
lotto = random.sample(range(1, 46), 6)
lotto.sort()
print(lotto)
print("로또 종료")