Day12 - Python(5). 22.09.08.목

류소리·2022년 9월 7일
0

파이썬

목록 보기
5/10

[수요일 복습 문제]

    1. w(쓰기),r(읽기),a(축하기),b(binary모드),wb()

class Sport:
    def __init__(self, name, players):
        
self.name
= name
    self.players = players
soccer = Sport("축구", 11)    
soccer.name

-> 축구는 한 팀당 11명이 하는 스포츠입니다.

class Sport:
    def __init__(self, name, players):
        
        self.name = name
        self.players = players

    def explain(self):
        print(f"{self.name}는 한 팀당 {self.players}명이 하는 스포츠입니다.")
        
soccer = Sport("축구", 11)    
soccer.explain() 
    1. Plant 클래스
      1.생성자에서 name 받아서
      2.color 메소드는 인자는 없이, "green"인 색깔을 변수로 설정

(1)정답

class Plant:
  def __init__(self,name):
    self.name  = name
  
  def color(self):
    color = 'green'
    return color

(2)정답

class Plant:
   def __init__(self, name):   #인자를 받아들임.
       self.name = name
   
   def color(self):    #컬러라는 메소드, 인자없이
       self.color = "green"    #변수 그린
       return self.color   

    1. Plant 클래스 상속하는 Apple을 만들고 overrding 해서 color="red" 바꾸자.
class Apple(Plant):
    def color(self):
        self.color = 'Red'
        return self.color

    1. 다음과 같이 " new.txt"팦일 안에 "hello" 10번 입력 저장 후 그것을 읽고 출력하시오.

(1)내꺼 답

f = open("new.txt", 'w')
for i in range(10):
    f.write(f"Hello \n")
f.close() 

f= open ('new.txt', 'r')
data =f.readlines()
print(data)
f.close()

(2)정답

with open('new.txt','w',encoding='utf-8') as f:
    for i in range(10):
        f.write('Hello\n')
        
with open('new.txt','r',encoding='utf-8') as f:
    data = f.read()
    print(data) 
    1. 파일 읽는 함수들은?
      read(), readline(), readlies()
    1. f.colse()를 쓰지 않아도 되는 것은?
      with open("new.txt", "w") as f:
    1. 상속을 하는 이유.
      부모 클래스의 것을 그대로 가져와 사용할 수 있다는 편리성,
      기존 클래스를 변경하지 않고 기능을 추가, 변경 가능.
    1. 다음과 같이 구구단 결고물 보여주는 텍스트 파일로 저장하라.

(1)정답

f = open("gugu.txt", 'w')
for i in range(2,10):
    for j in range(1,10):
        f.write(f"{i*j} ")
    f.write("\n")
f.close()  

(2)정답

f = open("new.txt", "w")
for i in range(2,10):
    for j in range(1, 10) :
        f.write(f"{i*j} ")
    f.write("\n")
f.close()

f = open("new.txt", "r")
print(f.read()) 

[오전 수업 시작 p205]

< 클래스 변수>

name = "장길산"  #전역변수 (글로벌 함수)

class Family:
    lastname = "박"   #클래스변수: 인스턴스들이 공유한다.

    def __init__(self, name):
        self.name = name   #인스턴스 변수,(지역변수, 로컬)

    def show_name(self):
        print(name)    
        print(Family.lastname)
        print(self.name)
  • 문제
name = "아이유"  #전역변수 (글로벌 함수)

class Person:
    lastname ="손"   #클래스변수: 인스턴스들이 공유한다.

    def __init__(self, name):
        self.name = name   #인스턴스 변수,(지역변수, 로컬)

    def feel_name(self):
        print(name)    
        print(Person.lastname)
        print(self.name)
        
f2=Person("흥민")
f2.feel_name()
        

[부모 클라스에서 인자로 입력 받은것이 있을때]

  • 부모 클라스에서 인자로 입력 받은것이 있을때
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

class Korean(Person):
   #def __init__(self):        #받아주는 인자랑 똑같이 써야함. 틀림.
    def __init__(self,name, age):
        super().__init__(name, age)
        self.lang = "한국어" 

k1=Korean("홍길동",22)
k1.name

[자식 클래스에서도 인자를 입력받는 경우]

class Korean(Person):
    def __init__(self,lang, name, age): # 모든 변수를 다 받아준다.
        super().__init__(name, age)
        self.lang = lang 
        
k1 = Korean("한국어","길동",22)
k1.name
k1.lang

[모듈: 파일 p207]

  • 새파일로 열어서 이름을 mod1 이라고 한다.

  • 다음을 작성 후 다운로드 파이썬으로 한다.
  • 파일 위치를 C:\Users\admin 으로 옮겨준다.
  • 윈도우 알 눌러서 명령 프롬포트 열어준다.
  • C:\Users\admin 입력
  • python 입력
  • import mod1 입력
  • 그러면 5,7이 뜬다.
  • print(mod1.add(3,4)) 값이 나온다.
  • print(mod1.sub(3,4)) 값이 나온다.

[if name == " main": p210]

-다음 작성 후 똑같이 반복한다.

  • C:\Users\admin 입력
  • python 입력
  • import mod1 입력
  • 그러면 아무것도 안뜬다.
  • 이유는 if문이 거짓이 되어 안뜨는거다.

: 인터프리터에서 직접 실행했을 경우에만 if문 내의 코드를 돌리라는 명령이다.
(참이면 문장이 수행 됨, 거짓이면 문장이 수행되지 않음.)

https://velog.io/@nameunzz/if-name-main

[클래스나 변수 등을 포함한 모듈]

  • 다음을 작성 후 다운로드 파이썬으로 한다.
  • 파일 위치를 C:\Users\admin 으로 옮겨준다.
  • 윈도우 + R 눌러서 명령 프롬포트 열어준다.
  • C:\Users\admin 입력
  • python 입력
  • import mod2 입력
  • print(mod2.PI) 입력
  • 결과값 3.141592 나옴.

[오후 수업 p213]

< 패키지 p216 >

https://velog.io/@dldmsxor1177/%ED%8C%A8%ED%82%A4%EC%A7%80%EB%9E%80


< 예외처리 p222>

https://colab.research.google.com/drive/11lQRqIPZFD-GN3oZVDY-sggNLlf7kp-d?hl=ko#scrollTo=GBCn5bPJwST4 ->내꺼 정리

<오류 모음>

  • ZeroDivisionError
  • AttributeError
  • NameError
  • TypeError
  • IndexError

- (1) try except로 사용하기

  • try : ~해라 , except : 제외하고 = error
try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드

  • 예시
a =["hello","good"]
for i  in range(3):
    print (a[i])

: 에러 이유 (인자가 2개 밖에 없어서)

  • try, except 이용해서 에러문 만들기

  • 종류에 맞는 에러문 만들기

- (2) 문제

-일반적 에러문

  • 종류에 맞는 에러문

try ... finally p224

여러 개의 오류처리 p225

  • except 여러번 사용

오류 일부로 발생시키기 p227


<내장함수 p231>

  • :파이썬 안에 있는 함수 69개

dir() p233

: 객체가 가진 변수나 함수를 알려줌

enumerate() p234

: 인덱스 값을 포함하여 객체에게 돌려줌, for문 과 자주 사용.

enumerate() 문제
# enumerate() 사용하여, c값만 구하시오. 단 딕셔러니 형태
d= {'a':0,"b":1,"c":2}
a=["a","b","c"]
  • 정답:
c = {}
for i, j in enumerate(a):
    c[j] = i
print(c) 

{'c': 0}

filter() p235

  • filter (함수이름, 자료)
  • 들어가는 함수는 참 거짓을 아웃풋으로 내야한다.
  • 원소 하나하나에 대하여 함수를 적용시켜주는 함수 = map
def positive(a):    # 함수 만들기
    return  a>0     #참 거짓으로 나와야 하는 부분
positive(-3)   

: -> False

a=[1,-3,2,0,-5,6]
list(filter(positive,a))  #함수이름,자료

: -> [1, 2, 6]
lambda와의 궁합
  • lambda 함수 자주 사용
a=[1,-3,2,0,-5,6]
list(filter(lambda a: a>0 ,a))

: -> [1, 2, 6]
numpy와의 조합
  • filter 보다 빠르다

  • array를 통해 값의 T, F를 알 수 있다.
  • 단 외부 함수라서 import numpy as np 불러 와야함.

출처:
https://velog.io/@nameunzz/if-name-main -> 모듈
https://velog.io/@dldmsxor1177/%ED%8C%A8%ED%82%A4%EC%A7%80%EB%9E%80 -> 패키지
https://docs.python.org/ko/3/library/functions.html -> 내장함수
https://ko.wikipedia.org/wiki/ASCII -> 아스키코드
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C -> 유니코드

profile
새싹 빅테이터 개발자

0개의 댓글