파이썬/강의

패스트캠퍼스 3주차 요약

낑깡H 2022. 9. 7. 16:44

!= : 불일치 
!= >= 등 : 항상 = 이 뒤에 오게 

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이 존재하는 경우.

3. 함수 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 하위의 코드블럭을 읽기때문