본문 바로가기

Python_Beginer/Note

Python 수강 노트 10

반응형

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차원 목록)

반응형