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' 카테고리의 다른 글
가상환경 보안 에러, 보안 오류 about_Execution_Policies PSSecurityException 해결 방안 (0) | 2022.06.25 |
---|---|
Python 수강 노트 11 (0) | 2022.01.31 |
Python 수강 노트 9 (0) | 2019.03.30 |
Python 수강 노트 8 (0) | 2019.03.16 |
Python 수강 노트 7 (0) | 2019.03.15 |