변수와 함수
#목차
자료형의 값을 저장하는 공간, 변수
변수 만드는 법
=(assignment) 기호 사용, 객체를 가맄키는 것 변수 이름 = 변수에 저장할 값
>>> a = 1
>>> b = "python"
>>> c = [1,2,3]
여기서 a,b,c가 변수
변수
>>> a = [1, 2, 3]
[1, 2, 3] 값을 가지는 리스트 자료형(객체)이 자동으로 메모리에 생성 a는 [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리키게 됨 메모리 주소 확인
>>> a = [1, 2, 3]
>>> id(a)
4303029896
리스트 복사
= 사용
>>> a = [1,2,3]
>>> b = a -> 아이에 같음
>>> id(a)
4303029896
>>> id(b)
4303029896
>>> a is b
True
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
b = copy(a) or b = a[:] 사용 or
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
다른 객체 취급
변수를 만드는 여러가지 법
>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life'
>>> [a,b] = ['python', 'life']
>>> a = b = 'python'
두 변수 값 바꾸기
>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3
프로그램의 구조를 쌓는다! 제어문
if 문
들여쓰기는 스페이스를 제일 많이 활용하긴 함 탭이랑 스페이스 혼용해서 쓰지말자
조건문이란 무엇인가?
1.비교 연산자
>>> x = 3
>>> y = 2
>>> x > y
True
2.and, or, not
돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어
>>> money = 2000
>>> card = True
>>> if money >= 3000 or card:
... print("택시를 타고 가라")
... else:
... print("걸어 가라!!!!!!")
...
택시를 타고 가라
4.x in s, x not in s
파이썬에서만 할 수 있는 재밌는 조건문
만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어 가라.
>>> pocket = ['paper', 'cellphone', 'money']
>>> if 'money' in pocket:
... print("택시를 타고 가라")
... else:
... print("걸어 가라")
...
택시를 타고 가라
+아무 일도 없게
주머니에 돈이 있으면 가만히 있고 주머니에 돈이 없으면 카드를 꺼내라.
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내라")
... (아무 결과값도 없음)
다양한 조건을 판단하는 elif
if와 else만으로는 다양한 조건을 판단하기 어렵다.
주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라.
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket: -> 주머니에 돈이 O
... print("택시를 타고 가라”)
... elif card: -> 주머니에 돈이 X 카드가 O
... print("택시를 타고 가라")
... else: -> 주머니에 돈도 X 카드도 X
... print("걸어 가라")
...
택시를 타고 가라
+if문을 한 줄로 작성하기
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내라")
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket: pass
... else: print("카드를 꺼내라")
조건부 표현식
if score >= 60:
message = "success"
else:
message = "failure"
이걸 조건부 표현식으로 나타내면,
< 조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우 >
message = "success" if score >= 60 else "failure"
가독성에 유리하고 한 줄로 작성할 수 있어 활용성이 좋다
while문
반복해서 문장을 수행해야 할 경우 열 번 찍어 안 넘어가는 나무 없다
>>> treeHit = 0
>>> while treeHit < 10:
... treeHit = treeHit + 1
... print("나무를 %d번 찍었습니다." % treeHit)
... if treeHit == 10:
... print("나무 넘어갑니다.")
...
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
…
나무 넘어갑니다.
while문 만들기
>>> prompt = """
... 1. Add
... 2. Del
...
... Enter number: """
>>> number = 0
>>> while number != 2:
... print(prompt)
... number = int(input( ))
...
1. Add
2. Del
Enter number: -> 2 누르면 while 문 빠져나옴 / 나머지는 출력
while문 강제로 빠져나가기
자판기가 제대로 작동하려면 커피가 얼마나 남았는지 항상 검사해야 한다.
만약 커피가 떨어졌다면 판매를 중단하고 ‘판매 중지’ 문구 표시.
이렇게 판매를 강제로 멈추게 하는 것이 바로 break문
>>> coffee = 10
>>> money = 300
>>> while money:
... print("돈을 받았으니 커피를 줍니다.")
... coffee = coffee - 1
... print("남은 커피의 양은 %d개입니다." % coffee)
... if coffee == 0:
... print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
... break -> 아니면 무한루프
...
#coffee.py
coffee = 10
while True:
money = int(input("돈을 넣어 주세요: "))
if money == 300:
print("커피를 줍니다.")
coffee = coffee - 1
elif money > 300:
print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
coffee = coffee – 1
else:
print("돈을 다시 돌려주고 커피를 주지 않습니다.")
print("남은 커피의 양은 %d개입니다." % coffee)
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
break
while문의 맨 처음으로 돌아가기
while문을 빠져나가지 않고 while문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우
>>> a = 0
>>> while a < 8:
... a = a + 1
... if a % 2 == 0: continue -> a를 2로 나누었을 때
... print(a) 나머지가 0 이면 맨 처음으로 돌아간다.
...
1
3
5
무한 루프
>>> while True:
... print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")
...
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러 빠져나올 수 있음
for문
for문의 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1 ->리스트의 변수를 하나씩 수행
수행할 문장2
총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지 결과를 보여 주시오.
marks = [90, 25, 67, 45, 80]
#marks1.py
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number + 1
if mark >= 60:
print("%d번 학생은 합격입니다." % number)
else:
print("%d번 학생은 불합격입니다." % number)
for문과 continue문
continue문을 for문에서도 사용
number = 0
for mark in marks:
number = number + 1
if mark < 60: continue
print("%d번 학생 축하합니다. 합격입니다. " % number)
for문과 함께 자주 사용하는 range 함수
숫자 리스트를 자동으로 만들어 줌 // 끝 숫자 X
>>> a = range(10)
>>> a
range(0,10) 1, 2, 3, 4, 5, 6, 7, 8, 9
range 함수로 더하기
>>> add = 0
>>> for i in range(1, 11):
... add = add + i
...
>>> print(add)
55
+60점 이상이면 합격 **
#marks3.py
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
if marks[number] < 60: continue ->range가 자리숫자니까
print("%d번 학생 축하합니다. 합격입니다." % (number+1))
->number이 0부터 시작하니까 +1
for와 range를 사용한 구구단
>>> for i in range(2,10):
... for j in range(1, 10):
... print(i*j, end=" ")
... print('')
...
2 4 6 8 10 12 14 16 18
…
9 18 27 36 45 54 63 72 81
앞의 예제에서 print(i*j, end=” “)->해당 결괏값을 출력할 때 다음 줄로 넘기지 않고 그 줄에 계속해서 출력하기 위해서
print(‘ ‘)-> 2단, 3단 등을 구분하기 위해 두 번째 for문이 끝나면 결괏값을 다음 줄부터 출력하게 해주는 문장
리스트 내포 사용하기
리스트 안에 for문을 포함하는 리스트 내포(List comprehension)
좀 더 편리하고 직관적이기 위해 [표현식 for 항목 in 반복 가능 객체 if 조건]
>>> a = [1,2,3,4]
>>> result = [ ]
>>> for num in a:
... result.append(num*3)
...
>>> print(result)
[3, 6, 9, 12]
이것을 리스트 내포를 사용
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a]
>>> print(result)
[3, 6, 9, 12]
짝수에만 3을 곱하여 담고 싶다
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a if num % 2 == 0]
>>> print(result)
[6, 12]
If 2개이상
표현식 for 항목1 in 반복 가능 객체1 if 조건1
for 항목2 in 반복 가능 객체2 if 조건2
…
for 항목n in 반복 가능 객체n if 조건n
>>> result = x*y for x in range(2,10)
... for y in range(1,10)
>>> print(result)
2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81