본문 바로가기

Python_Beginer/Note

Python 수강 노트 1

1. Python Downloads : http://www.python.org

  - version x.y.z

x : Major

y : Minor

Z : Patch

특성상 : x y 만 따지고 z 는 따로 안따진다.

   - 아키텍쳐 종류

x86 : 32bit(i386, i486, i586, i686)

x64 : 64bit(ia)

x86_64 : 32bit 이나 64bit를 처리 할 수 있게 만듬(AMD64, EM64T)

windows x86-64 executable installer -> downloads


2. NotePad++ Downloads : http://notepad-plus-plus.org


===================================================================================================

컴파일(번역) 언어 : C, Java

Source Code      - 컴파일 -> Binary Code(2진수)  - 실행 -> 결과

사람이 이해하는 파일             기계가 이해하는 파일(저장)

- 속도가 빠르다.


인터프리터(통역)언어 : Python

Source Code      - 인터프리터, 실행 -> 결과

사람이 이해하는 파일

- 수정이 편하다.


1. Python

- 함수가 직관적이다.(가독성이 좋다)


1. 내컴퓨터 -> 속성 -> 고급 시스템 설정 -> 환경변수 -> 편집

환경설정방법 : PATH

- D:\Python\Python37

- D:\Python\Python37\Scripts


2. Python 설치 버전 확인

- Python -V


3. Python 설치 모듈 목록 확인

- pip list


4. 명령 프롬프트 소스 폴더 바로 가는 방법

- 명령 프롬프트 속성에서 기본 위치 변경


5. Python File Run 방법

- python 파이썬파일명.py


====================================================================================================

상수 : 컴퓨터가 처리하는 기본 데이터 / 불변

1. 문자열

2. 숫자열


문자열 : 텍스트 집단


탈출문자열 : \를 사용 큰따옴표를 또는 작은따옴표로 싸인 문자열 텍스트의 일부로 작은따옴표를 넣고 싶을때 사용

ex> "내 이름은 \"홍길동\"입니다."


변수 : 프로그램 수행시 컴퓨터 기억장치의 일부 공간에 할당 / 변하는 수

변수명 규칙

1. 사용가능한 문자 : A ~ Z, a ~ z, 0 ~ 9, _


2. 숫자로 시작하지 않으면 된다.


3. 언더바는 특수하는 용도로 사용된다.


4. 좋은 변수명 : 변수명만으로도 그 의미가 예상될 수 있는 단어

city / averageScore / net_Income

i,n는 예외로 한다.(i(item, index) / n(number))


5. 안좋은 변수명 : 변수명만으로도 그 의미가 예상되기 힘든 단어

x, xx, mmdsdd


치환문 : 변수에 특정 값을 저자어하는 프로그램 명령문

ex> 

sum = 5

sum = sum+5

>>>10


sum += 10

sum

>>>20



====================================================


                      컴퓨터 시스템

데이터       ->           연산             ->        정보

input()                                      print()

키보드 입력                                      모니터 출력


open('r')  ->                          ->    open('w')

파일 읽기                                        파일 쓰기


입력함수

python 2.x : input(), raw_input()

-raw_input() : 입력값을 문자열로 강제로 타입을 지정한다.

입력값          함수               출력값             자료형

1            input()           1               정수(int)

1.5          input()           1.5             실수(float)

'1.9'        input()           '1.9'           문자(str)

1            raw_input()       '1'             문자(str)

1.5          raw_input()       '1.5'           문자(str)

'1.0'        raw_input()       "'1.0'"         문자(str)

python 3.x : input()

입력값          함수               출력값             자료형

1            input()           '1'             문자(str)

1.5          input()           '1.5'           문자(str)




산술 연산

Python 2.x

정수 + 정수 = 정수

정수 - 정수 = 정수

정수 * 정수 = 정수

정수 / 정수 = 정수

정수 + 실수 = 실수


Python 3.x

정수 + 정수 = 정수

정수 - 정수 = 정수

정수 * 정수 = 정수

정수 / 정수 = 실수<-Python 2.x 차이점

정수 + 실수 = 실수


====================================================================

코드 1

코드 2

if 조건:

      코드3

elif 조건:

      코드4

코드 1 -> 코드 2 -> 조건(참)  -> 코드 3 -> 코드 5

              -> 조건(거짓) -> 코드 4


if 조건1:

코드 1

elif 조건2:

코드 2

elif 조건3:

코드 3

else:

코드 4


코드 0

if 조건1:

코드1

elif 조건2:

코드2

elif 조건3:

코드3

else:

코드4

코드5


코드 0 - 코드 1 - 코드 5

코드 0 - 코드 2 - 코드 5

코드 0 - 코드 3 - 코드 5

코드 0 - 코드 4 - 코드 5





====================================================================

r1 = 5.0, r2 = 6.7, r3 = 8.5, r4 = 8.2, r5 = 7.9

max = 0


0 if max < r1: 0 < 5.0

5.0 max = r1        

5.0 if max < r2: 5.0 < 6.7

6.7 max = r2

6.7 if max < r3: 6.7 < 8.5

8.5 max = r3

8.5 if max < r4: 8.5 < 8.2

- max = r4

8.5 if max < r5: 8.5 < 7.9

- max = r5


===================================================================


kor = input("국어 : ")

eng = input("수학 : ")

math = input("영어 : ")

avg = (kor + eng + math) / 3

print("평균점수: {}".format(avg))


password = input("사용할 암호는?")


if 조건1:

print("사용할 수 없는 암호입니다.")

elif 조건2:

print("사용할 수 없는 암호입니다.")

else 조건3:

print("사용할 수 없는 암호입니다.")

==================================================================

<지역 변수 local variable>

def 함수():

x = 0

<전역 변수 global variable>

x = 0


=================================================================


함수명을 통일 시키면 좋은점은 가독성이 올라가서 코딩 보기가 좋아진다.

하지만 단점으로는 여러군데 사용되는 함수면 별로 좋지 않다.


ex>

def allotement(sum, n):

    return sum / n


price = int(input("상품대금: "))


months = int(input("할부개월수(3~12): "))


# if months < 3 or 12 < months:

# if 3 <= months and months < 12:

if 3 <= months <= 12:                                                  

    amt = allotement(price,months)

    print("월 할부금은 {:.1f} 입니다".format(amt))

else:

    print("3~12개월 할부만 가능합니다.")     

--------------------------------------------

def allotement(price, months):

    return price / months


price = int(input("상품대금: "))


months = int(input("할부개월수(3~12): "))


# if months < 3 or 12 < months:

# if 3 <= months and months < 12:

if 3 <= months <= 12:                                                  

    amt = allotement(price,months)

    print("월 할부금은 {:.1f} 입니다".format(amt))

else:

    print("3~12개월 할부만 가능합니다.")

====================================================================


def verift(password):

p1 = 

p2 =

p3 = 

p4 =

검증 코드

True/False

password = input()

result = verify(password))


def verift():

password = input()

p1 = 

p2 =

p3 = 

p4 =

검증 코드

True/False

result = verify()


====================================================================


큰거 부터 작은거 나눠서 써본다.


최적화는 가장 나중에 생각해본다.


합칠수 있는거는 최대한 합치자.



=====================================================================

p. 102 운항 시간 계산 풀이


if 다음날 :

    e_hour = e_hour + 24

    if 도착분 작은가?

        e_hour = e_hour + 1

        e_min = e_min + 60

        계산(hour, min)                

    else:

        계산(hour, min)

        

else:        같은날

    if 도착분 작은가?

        e_hour = e_hour + 1

        e_min = e_min + 60

        계산(hour, min)

    else:

        계산(hour, min)

<ver1. 최적화 전 단계)


def flight(start, end):

    s_hour = start // 100      # 출발시각 시(hh)

    s_min = start % 100        # 출발시각 분(mm)

    e_hour = end // 100        # 도착시각 시(hh)

    e_min = end % 100          # 도착시각 분(mm)


    if s_hour > e_hour or s_hour == e_hour and s_min < e_min:

        e_hour = e_hour + 24

        if s_min > e_min:

            e_hour = e_hour - 1

            e_min = e_min + 60

            hour = e_hour - s_hour

            min = e_min - s_min

        else:

            hour = e_hour - s_hour

            min = e_min - s_min

    else:

        if s_min > e_min:

            e_hour = e_hour - 1

            e_min = e_min + 60

            hour = e_hour - s_hour

            min = e_min - s_min

        else:

            hour = e_hour - s_hour

            min = e_min - s_min

            

    time = hour * 100 + min

    return time


start = int(input("출발 시각:"))

end = int(input("도착 시각:"))

result = flight(start, end)

print(result)


<ver2. 최적화 단계>

def flight(start, end):

    s_hour = start // 100      # 출발시각 시(hh)

    s_min = start % 100        # 출발시각 분(mm)

    e_hour = end // 100        # 도착시각 시(hh)

    e_min = end % 100          # 도착시각 분(mm)


    if s_hour > e_hour or s_hour == e_hour and s_min < e_min:     #비행시간이 같은날인지 다른날인지 비교 코드

        e_hour = e_hour + 24


    if s_min > e_min:

        e_hour = e_hour - 1

        e_min = e_min + 60

        

    hour = e_hour - s_hour

    min = e_min - s_min

    

    time = hour * 100 + min

    return time


start = int(input("출발 시각:"))

end = int(input("도착 시각:"))

result = flight(start, end)

print(result)


<ver3. if 조건식 달아 꾸미기>

def flight(start, end):

    s_hour = start // 100      # 출발시각 시(hh)

    s_min = start % 100        # 출발시각 분(mm)

    e_hour = end // 100        # 도착시각 시(hh)

    e_min = end % 100          # 도착시각 분(mm)


    if s_hour > e_hour or s_hour == e_hour and s_min < e_min:     #비행시간이 같은날인지 다른날인지 비교 코드

        e_hour = e_hour + 24


    if s_min > e_min:

        e_hour = e_hour - 1

        e_min = e_min + 60

        

    hour = e_hour - s_hour

    min = e_min - s_min

    

    time = hour * 100 + min

    return time


start = int(input("출발 시각:"))

end = int(input("도착 시각:"))

result = flight(start, end)

hour = result // 100

min = result % 100


if hour > 0 and min > 0:

    print("운항시간 : {}시간 {}분".format(hour,min))

elif min == 0:

    print("운항시간 : {}시간".format(hour))

else:

    print("운항시간 : {}분".format(min))

================================================


scores = [[90, 85, 88],[80, 90, 85]]

쉽게 풀이>

scores = [ 0   1   2

0 [90, 85, 88]

1  [80, 90, 85]]

]

 

================================================


if 값 in [목록]:            값이 목록안에 있다면,

value in list:


for 원소 in [목록]:

for item in list:


코드1

코드2


for item [첫번째, 두번재, 세번째]:

코드3(item)

코드4(item)


코드5


for 문 코드 실행 순서

코드1 -> 코드2 -> item[첫번째 선택] -> 코드3(item 첫번째) -> 코드4(item 첫번째)

   item[두번째 선택] -> 코드3(item 두번째) -> 코드4(item 두번째)

   item[세번째 선택] -> 코드4(item 세번째) -> 코드4(item 세번째) -> 코드5

   

=====================================================


중첩 for문 첫번째

문제에 주어진 데이터가 원래부터 2차원적이어서 외부 for문이 그 중 한개의 차원을 처리하고 내부의 for문이 나머지 한차원을 처리해야 하는 경우다.

scores = [[80,90,92]],[88,85,91]]


for score in scores: score = [80,90,92]

for item in score: item = 80

item = 90

item = 92

kim = [520, 585]

park = [580, 540, 490]

lee = [590, 510]


findmax(kim)

findmax(park)

findmax(lee)


students = [kim, park, lee]

           [[520, 585], [580, 540, 590], [490, 510]]


max = 0                                 #전체 학생 중에 최고값 찾기

findmax(students):

    for student in students:

        max = 0                         #학생 개개인에 최고값 찾기

        for score in student:

===========================================================


for index in range(0, xxx):


list_A = ["kim" , "moon", "hong", "lee", "park"]

list_B = [78, 92, 88, 95, 93]


for index in range(0, len(list_A)):

print(list_A[index], index)

for index in range(0, len(list_B)):

print(list_B[index], index)

============================================================


if 문(조건문)


if 조건식1:

<명령1>

elif 조건식2:

<명령2>

else:

<명령3>

조건식1이 참이면 명령1 실행 -> 조건식1이 거짓이면 명령2 실행 -> 조건식1, 조건식2 둘다 거짓이면 명령3 실행


==========================================================================


for <타켓> in <객체>:

<명령1>

else:

<명령2>

객체는 시퀸스형이여 한다. 객체의 각 항목은 타켓에 치환되어 명령 1 혹은 명령 2를 수행한다.

반복 횟수는 객체의 크기가 된다.


==========================================================================


while 문


while <조건식>:

<명령1>

else:

<명령2>

조건식 테스트 결과가 참인동안 내부의 블록은 반복적으로 수행된다.

else 부분은 조건식이 거짓이 되어 while 문을 빠져나올 때 수행된다.

break로 빠져나올 때는 else 블록을 수행하지 않는다.


==========================================================================


open("파일명", "모드" [, encoding = 'Charset']

- 파일명 : 일반적으로 .txt 확장자로 지정한다.

- 모드 : r(ead)(읽기모드) / w(rite)(쓰기모드) / a(ppeand)(추가모드)

- encoding : cp949(windows 기본값) / ansi(ANSI) / utf-8(Unicode(한국어지원))


읽기모드(read) : HDD(File) -> open('r') -> Ram(Strings)

쓰기모드 : HDD(File) <- open('w', 'a') <- Ram(Strings)


==========================================================================


1. open()

   HDD         - open('r') -> RAM

   File(Text)   Strings(문자열)

   

   HDD         <- open('w') - RAM

   File(Text)   Strings(문자열)

   

2. open(),csv 모듈

   HDD         - open('r') ->   - csv.reader() -> RAM

   File(csv)   Strings lists(2차원 목록)

   

   HDD         <- open('w') -   <- csv.writer() - RAM

   File(csv)   Strings lists(2차원 목록)

'Python_Beginer > Note' 카테고리의 다른 글

Python 분석 방법  (0) 2019.03.03
Python 수강 노트 4  (0) 2019.02.24
Python 수강 노트 3  (0) 2019.02.23
Python 수강 노트 2  (0) 2019.02.23
Python 수강 노트 1  (0) 2019.02.23
190222>NeoSmartNote  (0) 2019.02.22