[Python & NCS] 3-1. 파이썬 프로그램 예제

GGomBee·2021년 5월 14일
0
post-thumbnail

예제

calculator.py

주피터노트북과 파이참에서 작업시 차이점은 파이참은 파일 단위 혹은 프로젝트 단위로 실행한다.

-> 어플리케이션 제작

주피터는 한줄한줄 특정 코드만 실행한다. -> 데이터 분석name 변수는 private 으로 사용하는 ...

외부적: public -> 아이디
내부적: private -> 비밀번호자연어(한글, 영어, ...) word <-> 기계어(C, Java, Python...) term기계어는 크게 2가지

숫자 타입 변수
문자 타입 변수main.py 는 모듈이다(함수, 클래스)

main 이란 이름은 엔트리 포인트(모듈의 진입점)이다.파일이나 폴더 이름 변경은 SHIFT + F6 입니다.

init.py oop패키지 내부적으로 사용하는 파일이다.

객체지향

class ...
    def __init__(self):
         pass
    def ... 메소드함수형 구조
def ...def __init__ 초기화: 가장 먼저 실행되는 파일또는 코드. private 한 값의 저장공간
return 이 없습니다.
def sum(self):
return 이 있습니다. 계산결과를 공개해라.의미맨 앞에 있는 라인 - 루트라인

Naming Convention

파이썬의 문법요소들을 명시할 때 이름을 주는 방법에 대한 합의이다.
클래스는 대문자로 시작하고, 뜻이 바뀌는 단어의 연결지점은 다시 대문자로 하는 방식(파스칼 표기법)이고, 함수나 메소드는 소문자로 시작하고, 뜻이 바뀌는 단어의 연결지점은 다시 대문자로 하는 방식(카멜 표기법)이다.

모듈(=파이썬 파일)과 패키지는 다 소문자이고, 뜻이 바뀌는 지점에서 _ 를 처리하는 방식(스네이크-바 방식)을 주는 것이다.

반드시 하라는 것은 아니고, 권고사항이다.

calculation.py

class Calculator:

    def __init__(self, first, second):
        self.first = first
        self.second = second

    def sum(self):
        return self.first + self.second

    def sub(self):
        return self.first - self.second

    def mul(self):
        return self.first * self.second

    def div(self):
        return self.first / self.second

    def mod(self):
        return self.first % self.second

    @staticmethod
    def execute():
        calc = Calculator(int(input("첫번째 수")), int(input("두번째 수")))
        print(f'첫번째수: {calc.first}')
        print(f'두번째수: {calc.second}')
        print(f'{calc.first} + {calc.second} = {calc.sum()}')
        print(f'{calc.first} - {calc.second} = {calc.sub()}')
        print(f'{calc.first} * {calc.second} = {calc.mul()}')
        print(f'{calc.first} / {calc.second} = {calc.div()}')
        print(f'{calc.first} % {calc.second} = {calc.mod()}')

if __name__ == '__main__':
    Calculator.execute()

person.py

class Person:
    def __init__(self, name, age, address):
        self.name = name
        self.age = age
        self.address = address

    def greeting(self):
        print(f'안녕하세요. 제 이름은 {self.name}이고,' 
              f' 나이는 {self.age}살이고,' 
              f' {self.name} 에서 거주합니다.')

    @staticmethod
    def main():
        eunbee = Person('은비',24,'서울')
        eunbee.greeting()
        minjae = Person('민재',27,'경기')
        minjae.greeting()

if __name__ == '__main__':
    Person.main()

git bash

//이후 커밋
git add .
git commit -m "2021-05-01 Grade 추가"

//초기설정
git init
git add .
git commit -m "2021-05-1 15:30"
git remote add origin https://github.com/ggombee/python_ncs.git
git push -u origin master

git config --global user.name "ggombee“
git config --global user.email "minniemice98@gmail.com"

grade.py

'''
클래스에 학생의 이름을 입력하면
해당 학생이 얻은 3과목의 평균점수에 따라 A - F 까지 출력
해당 문제를 해결하기 위해서는 72페이지의 리스트를 참조
'''

class Grade:
    def __init__(self,  name):
        self.name = name
        self.marks = [] # list로 타입선언

    def addMarks(self, mark):
        self.marks.append(mark)

    def avg(self):
        return sum(self.marks) / len(self.marks)

    @staticmethod
    def main():
        student = Grade(input("학생이름 입력"))
        for subject in ['국어', '영어', '수학']:
            student.addMarks(int(input(subject + "점수 입력")))
        avg = student.avg()
        print(f'{student.name}의 과목 평균은 {int(avg)} 점 이다.')
        if avg >= 90:
            grade = 'A'
        elif avg >= 80:
            grade = 'B'
        elif avg >= 70:
            grade = 'C'
        elif avg >= 60:
            grade = 'D'
        elif avg >= 50:
            grade = 'E'
        else:
            grade = 'F'

        print(f'{student.name}의 과목 평균은 {int(avg)}점, 학점은 {grade} 이다.')

if __name__ == '__main__':
    Grade.main()

contacts.py

'''
이름, 전화번호, 이메일, 주소를 받아서
연락처 입력, 출력, 삭제하는 프로그램을 완성하시오.
'''
class Contacts:

    def __init__(self, name, phone, email, address):
        self.name = name
        self.phone = phone
        self.email = email
        self.address = address

    def print_info(self):
        print(f'이름: {self.name}')
        print(f'전화번호: {self.phone}')
        print(f'이메일: {self.email}')
        print(f'주소: {self.address}')

    @staticmethod
    def set_contact():
        name = input("아름: ")
        phone = input("전화번호: ")
        email = input("이메일: ")
        address = input("주소: ")
        return Contacts(name, phone, email, address)

    @staticmethod
    def get_contacts(ls):
        for i in ls:
            i.print_info()

    @staticmethod
    def del_contact(ls,name):
        for i, j in enumerate(ls): # i = index, j = element 리스트내부의 ㅜ소
            if j.name == name:
                del ls[i]

    @staticmethod
    def print_menu():
        print("1. 연락처 입력")
        print("2. 연락처 출력")
        print("3. 연락처 삭제")
        print("4. 종료")
        menu = input("메뉴 선택 : ")
        return int(menu)

    @staticmethod
    def main():
        ls = []
        while 1:
            menu = Contacts.print_menu()
            if menu == 1:
                t = Contacts.set_contact()
                ls.append(t)
            elif menu == 2:
                Contacts.get_contacts(ls)
            elif menu == 3:
                name = input("삭제할 이름:")
                Contacts.del_contact(ls, name)
            elif menu == 4:
                break

if __name__ == '__main__':
    Contacts.main()
profile
Stay Hungry, Stay Foolish! 겸손한 개발자 고은비입니다. 언제나 성장하기 위해 노력하며 유의미한 데이터로 사용자의 경험을 향상시키는 방법에 관심이 많습니다. 성장하고 싶어요!! 피드백은 언제나 환영입니다!

0개의 댓글