패스트캠퍼스 3주차 요약
!= : 불일치
!= >= 등 : 항상 = 이 뒤에 오게
A = 300
print(A 어쩌고~ ) : 대신에
print( %d원 % A) 하면 좀 더 깔끔함
"nested 구조" : if 안에 if 다시 들어가는 경우
if X<300: print(%d원 %X)
elif X = 300: print("커피")
else X> 300: print("커피")
print("%d원" % (X-300))
vs
if X = 300:
print("커피")
else:
if X <300: print(%d원 %X)
else:print("커피")
print("%d원" % (X-300))
예제: 6개의 커피 음료와 음료의 가격이 담긴 리스트가 있다. 가지고 있는 돈이 5000원일 때 먹을 수 있는 모든 음료를 찾아보자!
coffees = ['아메리카노', '카페라떼', '카페모카', '바닐라라떼', '핸드드립', '콜드브루']
prices = [4100, 4600, 4600, 5100, 6000, 5000]
#for i in range(0, 6):
for i in range(6): # 0부터 시작.
if prices[i] <= 5000:
print(coffees[i])
indexing 개념 이용
왜 range(0,6) 일때랑 (0,5) 일 때 값이 다르게 나오는지 모르겠음,,,
-> 깔끔하게 하려면 for i in ran(len(coffees))
(0,5) 일때는 왜 라떼랑 모카 값이 누락되지?
* (i) 가 아니고 [i] 임에 주의!
iterable object 와 index의 결합
:enumerate 함수 사용
함수
1. 함수 parameter와 return이 모두 존재하는 경우.
2. 함수 parameter는 없고 return이 존재하는 경우.
4. 함수 parameter도 없고 return도 없는 경우.
parameter의 갯수를 모르는 경우
: *arg 로 입력시키면 tuple로 받음. , **kwargs 를 입력시키면 dict로 받음
init 코드도 사용
효력 범위 = scope
수명 = lifetime
: 파이썬의 경우, 실행하는 순간 결정됨
global 변수와 local 변수 :
같은 이름의 변수더라도 코드블럭 안과 밖은 다름
global로 스코프를 변경해서 불러올 수는 있지만, 좋은 방법은 아님. parameter 직접 부르는 게 좋음.
<2일차 I/O>
여러 값을 입력할 때, for 문과 list comprehension의 비교
# 이와 같은 표현을 list comprehension이라고 한다. 여러 숫자를 한번에 input으로 넣기 위함.
[x+2 for x in range (1, 4)]
L = []
for y in range (1, 4):
L.append(y+2)
L
# for문을 사용한 코드
numbers = []
for num in input().split(','):
numbers.append(int(num))
print(numbers)
print(numbers[0], type numbers[0])
File I/O
코랩에 데이터 올린 후, 해당 경로를 불러와서 이용
read: 쭉 다 불러옴
readline: 첫 줄만 불러옴
readlines: 줄간격 반영해서 불러옴 (for 와 유사하지만, \n이 남아있음)
Read, Readline,Readlines
# f.read()를 통해 data 폴더안에 있는 test.txt를 read mode로 열어봅니다.
filepath = "/content/drive/MyDrive/Colab Notebooks/data/test.txt"
with open(filepath, 'r') as f:
data = f.read()
data
For 문 사용: 수정이 좀 더 용이
# for문을 통해 data 폴더안에 있는 test.txt를 read mode로 열어서 출력해봅니다.
L = []
with open(filepath, 'r') as f:
for line in f:
L.append(line)
L
Class 의 객체 정보 확인하는 함수
# 클래스 내부의 함수를 구현합니다.
# 해당 노트북의 운영체제가 UNIX 계열 운영체제인지 아닌지 확인하는 Class Method를 구현합니다.
class Notebook:
def __init__(self, manufacturer, model, ram_size, ssd_size, os):
self.manufacturer = manufacturer
self.model = model
self.ram_size = ram_size
self.ssd_size = ssd_size
self.os = os
## TO-DO ##
def is_Unix(self): ##self 누락 주의
Unix={"windows", "apple"} ## 따옴표 누락 주의
if (self.os) in Unix:
return("This is Unix")
else:
return("NO")
nb1 = Notebook("Lg", "Gram", "16", "256", "windows")
nb1.is_Unix() ## 메소드는 객체 내부에 들어있으므로 is_Unix(nb1) 로 하면 인식을 못함, nb1을 먼저 입력해야 Class 하위의 코드블럭을 읽기때문