본문 바로가기

Python/Python Programming

Python_Basic 05

Q1


# 1. 간단한 메모장을 만들어보시오.
# input으로 입력받은 내용을 파일에 기록하고
# 입력을 종료하면 파일을 저장한다.
# 내용 불러오기 메뉴를 선택하면 기존에 작성했던 메모를 화면에 보여준다.

 

while True:

    choice = int(input("메뉴를 선택하세요 1. 입력 , 2. 불러오기"))

    if choice == 1:
        while True:
            file = open('memo.txt','a')
            msg = input("남길 메모 : ")
            print(msg, file = file)
            if not msg :  # msg == ' ' (msg가 False)
                file.close
                break

    if choice == 2:
        file2 = open('memo.txt','r')
        print(file2.read())
        file.close
메뉴를 선택하세요 1. 입력 , 2. 불러오기1
남길 메모 : 1234
남길 메모 : 2324
남길 메모 : 4554
남길 메모 : 2
남길 메모 : 
메뉴를 선택하세요 1. 입력 , 2. 불러오기2
1234
2324
4554
2

 

 

변수의 값이  True, False인 경우


숫자 : 0만 False 나머진 True
문자 : ' '만 False 나머진 True
불 : True False 
리스트 : [ ] False
딕셔너리 : { } Fasle 
셋: set() False
[[]] True

 

 

 

 

 

Q2


#2. 로또 번호 생성기를 만들고
# 생성된 번호를 텍스트 파일에 저장하시오
# 번호 불러오기 메뉴를 선택하면 기존에 저장된 번호를 화면에 보여준다.
# 번호를 불러 올 때 각 번호 별로 리스트에 저장하고 나서 화면에 출력하시오.

 

1. 로또 번호 생성하기
numbers = list(range(1,46))
import random as rnd
for _ in range(5):
    lotto = sorted(rnd.sample(numbers,6))
    print(lotto)
    2. 파일에 저장하기
    lotto_file = open("lotto.txt", "a")
    print(lotto, file=lotto_file)
lotto_file.close()

3. 파일에 있는 번호 불러와서 리스트로 저장하기
lotto_file = open("lotto.txt", "r")
for data in lotto_file.readlines():
    data = data[1:-1]
    lotto = data.split(', ')
    4. 화면에 출력하기
    print(lotto)
lotto_file.close()
[9, 15, 18, 20, 23, 24]
[4, 5, 7, 12, 19, 20]
[4, 10, 14, 16, 19, 22]
[2, 10, 13, 16, 17, 18]
[3, 7, 8, 11, 13, 16]
['3', '7', '8', '11', '13', '16']

 

 

 

 

test = "[1, 3, 5, 12, 17, 19]"
test = test.split(', ')
['[1', '3', '5', '12', '17', '19]']

 

test[0][0]
'['

 

# 문자열에도 인덱싱이 가능하다!

test[0] = test[0][1:]
test[-1] = test[-1][:-1]
test
['1', '3', '5', '12', '17', '19']

 

test = "[1, 3, 5, 12, 17, 19]"
test[1:-1]

>>> '1, 3, 5, 12, 17, 19'

 

 

정규 표현식


# 1. re 모듈을 임포트 한다. 
# 2. 정규표현식 패턴을 작성한다.
# 3. 패턴을 컴파일한다.
# 4. 컴파일된 패턴을 이용해 맞는 문자열을 찾는다.

메타 문자 
\ : 뒤에 있는 글자의 특수 기능을 발동시킨다 [a-zA-Z0-9]
. : 엔터를 제외한 모든 문자 중 하나 \W : 일반 문자가 아닌거
\d : 숫자 하나! \s : 공백문자
[0-9] \S : 공백문자가 아닌거
\D : 숫자가 아닌거 ? : 글자가 0번 혹은 1번
[^0-9] * : 글자가 0번 이상 반복
[a-z] : 소문자 + : 글자가 1번 이상 반복
[A-Z] : 대문자 {n} : n개의 글자
[a-zA-Z] : 알파벳만 {n,m} : n~m개의 글자
 \w : 일반 문자(숫자, 글자) [?] : 문자들의 그룹, 집합

 

# 패턴 작성하는 법
# 1. 그냥 글자는 글자 취급
# 2. 메타 문자는 특수 취급

 

 

# 주민번호 매칭

pattern = "(\d{6}-\d{7})"
p = re.compile(pattern)
p.search("asdfasdf790423-1405991asdasdf010-5555-6666")

 

result.group()
'790423-1405991'

 

 

# 찾아낸 글자의 시작 끝 위치 쌍

result.span() 
>>> (8, 22)

 

 

 # 찾아낸 글자의 시작 위치

result.start()
>>> 8

 

 

# 찾아낸 글자의 끝 위치

result.end()
>>> 22

 

 

# 전화번호 매칭

pattern = "\d{3}-\d{3,4}-\d{4}"
p = re.compile(pattern)
p.search("ㄴㅁㅇ010-555-6666sadfslkjrlkj")
<re.Match object; span=(3, 15), match='010-555-6666'>

 

 

 

 

클래스


# 입력 저장 처리 출력
# 순차 분기 반복
# 함수 - 반복되는 코드를 재 사용하기 위해서 하나의 명령어로 만드는 것 
# 클래스 - 반복되는 명령과 로직의 집합을 재사용하기 위해 하나의 설계도로 만들어 두는 것

# 클래스는 건물의 설계도와 같다.
# 건물에 있는 기능을 사용하려면, 설계도를 가지고 건물을 지어야 한다. 

 

명령어() <--- 단독으로 사용할 때 함수

클래스.명령어() <----- xxx.명령어인 경우 보통 클래스이다.

class 클래스이름:
    def 함수이름(매개변수...):
        내용

 

 

LabelEncoder 라는 건물의 설계도를 불러왔다.

from sklearn.preprocessing import LabelEncoder

건물을 건설하겠다.

LabelEncoder()

encoder = LabelEncoder()  <---- 명령어처럼 한번 실행

 

# LabelEncoder클래스의 인스턴스
인스턴스를 하나 만드세요 -> 클래스를 가지고 변수를 하나 만들어라