No.74 - Python1 : python 기초1
- 파이썬은 이식성
- 리눅스, 맥, 윈도우 등에서 동작한다.
- 객체 지향 언어
- 절차 지향 프로그래밍(함수, 클래스)지원
- 확장가능한 라이브러리 방대
[1] 파이썬 프레임 워크 ① Web Programming: Django, Pyramid, Bottle, Tornado, Flask, web2py ② GUI Development: wxPython, tkInter, PyGtk, PyGObject, PyQt ③ Scientific and Numeric: SciPy, Pandas, IPython ④ Software Development: Buildbot, Trac, Roundup ⑤ System Administration: Ansible, Salt, OpenStack
- 들여쓰기
- 한줄 주석 #
- 여러줄 주석 """ """, ''' '''
- 문자열 "문자열", '문자열'
- 확장자 XXX.py(script)
- 파이썬은 모두 개체 단위
내장함수
1.print 출력 함수
- 함수명()
- 함수명(옵션)
print('Hello Python!!')
Hello Python!!
print("Hello Python!!")
Hello Python!!
print(Hello Python!!)
print("Hello Python!!')
print(10, 20, 30)
print(10.1, 20.2, 30.3)
10.1 20.2 30.3
print(10 + 20)
print(10.1 + 20.9)
30
31.0
# print(10 + 20)
print(10.1 + 20.9)
31.0
'''
print(10 + 20)
print(10.1 + 20.9)
print(10.2 + 21.9)
print(10.3 + 21.9)
'''
'\nprint(10 + 20)\nprint(10.1 + 20.9)\nprint(10.2 + 21.9)\nprint(10.3 + 21.9)\n'
sep : 쉼표로 구분되는 값에 대해서 구문 값을 지정 할 때 사용
기본 구분 값은 공백을 사용
print(10,20,30)
print(10,20,30,sep='-')
print(10,20,30) , print(10,20,30,sep='-')
10 20 30
10-20-30
10 20 30
10-20-30
(None, None)
end : print() 함수에 의해 모든 값을 출력 한 후 추가로 수행할 코드 지정 할 수 있다.
기본 값은 \n(개행, 한줄 이동, Enter)
print(10,20,30,end=' ')
print(10,20,30,sep='-')
10 20 30 10-20-30
print(10,20,30,sep='-',end=' ')
10-20-30
이스케이프(탈출) 문자
문자열 안에서 특수한 기능을 수행할 수 있게 기능 부여가 된 문자
print('문\n자\n열')
print('문\n자\n열')
문
자
열
print('탭\t공\t백')
탭 공 백
print('현재\r줄의 처음으로 이동')
print('현재줄의 \r처음으로 이동')
줄의 처음으로 이동
처음으로 이동
print('작은 \'따옴표\'')
print("작은 '따옴표'")
print("큰 \"따옴표\"")
print('큰 "따옴표"')
작은 '따옴표'
작은 '따옴표'
큰 "따옴표"
큰 "따옴표"
print('\\역\슬\래\쉬\\')
print('C:\\Program Files\\Python36\\Scripts\\new\\test\\restore')
print('C:\\Program Files\\Python36\\Scripts\\new\\test\\restore')
\역\슬\래\쉬\
C:\Program Files\Python36\Scripts\new\test\restore
C:\Program Files\Python36\Scripts\new\test\restore
print('문자' + '숫자')
print('문' * 4)
print('토마' * 10)
문자숫자
문문문문
토마토마토마토마토마토마토마토마토마토마
#### 회비 정보
============================================
이름 나이 전화번호 회비
============================================
김동완 38 010-1111-1111 ₩20,000
서지수 24 010-1234-5678 ₩30,000
이지은 25 010-2525-2345 ₩50,000
--------------------------------------------
총합계 ₩100,000
============================================
print('\t\t#### 회비 정보 ####')
print('===============================================')
print('이름\t\t나이\t전화번호\t회비')
print('===============================================')
print('김동완\t\t38\t010-1111-1111\t₩20,000')
print('서지수\t\t24\t010-1234-5678\t₩30,000')
print('이지은\t\t25\t010-2525-2345\t₩50,000')
print('-----------------------------------------------')
print('총합계\t\t\t\t\t₩100,000')
print('===============================================')
#### 회비 정보 ####
===============================================
이름 나이 전화번호 회비
===============================================
김동완 38 010-1111-1111 ₩20,000
서지수 24 010-1234-5678 ₩30,000
이지은 25 010-2525-2345 ₩50,000
-----------------------------------------------
총합계 ₩100,000
===============================================
print('\t\t#### 회비 정보 ####')
print('=' * 45)
print('이름\t\t나이\t전화번호\t회비')
print('=' * 45)
print('김동완\t\t38\t010-1111-1111\t₩20,000')
print('서지수\t\t24\t010-1234-5678\t₩30,000')
print('이지은\t\t25\t010-2525-2345\t₩50,000')
print('-' * 45)
print('총합계','₩100,000',sep='\t'*5)
print('=' * 45)
#### 회비 정보 ####
=============================================
이름 나이 전화번호 회비
=============================================
김동완 38 010-1111-1111 ₩20,000
서지수 24 010-1234-5678 ₩30,000
이지은 25 010-2525-2345 ₩50,000
---------------------------------------------
총합계 ₩100,000
=============================================
- max(), min(),sum(),pow(),divmod(),round()
print(max(5, 7, 8, 2, 4))
print(min(5, 7, 8, 2, 4))
print(sum([5, 7, 8, 2, 4]))
print(pow(2,3))
print(2**3)
print(divmod(5,4))
print(5/4)
print(5//4)
print(round(2.567,2))
print(round(2.564,2))
print(round(2.564,0))
print(round(23.564,-1))
2.57
2.56
3.0
20.0
- 진법(2,8,16) 변환
0b : 2 진수를 표현하는 식
0o : 8 진수를 표현하는 식(0~7)
0x : 16 진수를 표현하는 식(0~9,a~f)
bin(), oct(), hex()
print(bin(10))
print(bin(192))
print(oct(10))
print(oct(192))
print(hex(10))
print(hex(192))
print(bin(10))
print(bin(0b10))
print(oct(10))
print(oct(0o10))
print(0x12 + 0x24)
print(hex(0x12 + 0x24))
1. 32, 45, 48, 57, 84 중 가장 큰 값과 작은 값을 구하시오.
2. 29, 95, 15, 85, 66 의 총 합을 구하시오.
3. 29, 95, 15, 85, 66 의 평균을 구하시오.
4. 29, 95, 15, 85, 66 의 평균이 아닌 몫과 나머지를 구하시오.
5. 3, 4, 8, 5 중 큰 값에서 작은 값의 거듭제곱을 구하시오.
6. 16진수 값 3D5F의 10진수 값은 무엇인가?
7. 10진수 1024의 16진수 값은 무엇인가?
8. 0x35의 2진수 값은 무엇인가?
9. 0o35의 16진수 값은 무엇인가?
10. 3452 + 5785의 16진수 값은 무엇인가?
11. 0xAC + 200의 2진수 값은 무엇인가?
1. 32, 45, 48, 57, 84 중 가장 큰 값과 작은 값을 구하시오.
print('32, 45, 48, 57, 84 중 가장 큰 값 :', max(32, 45, 48, 57, 84))
print('32, 45, 48, 57, 84 중 가장 작은 값 :', min(32, 45, 48, 57, 84))
2. 29, 95, 15, 85, 66 의 총 합을 구하시오.
print('29, 95, 15, 85, 66의 합 :', sum([29, 95, 15, 85, 66]))
3. 29, 95, 15, 85, 66 의 평균을 구하시오.
print('29, 95, 15, 85, 66의 평균 :', sum([29, 95, 15, 85, 66]) / 5)
4. 29, 95, 15, 85, 66 의 평균이 아닌 몫과 나머지를 구하시오.
print('29, 95, 15, 85, 66의 몫, 나머지 :', divmod(sum([29, 95, 15, 85, 66]), 5))
5. 3, 4, 8, 5 중 큰 값에서 작은 값의 거듭제곱을 구하시오.
print('큰 값에서 작은 값의 거듭제곱 :', pow(max(3, 4, 8, 5), min(3, 4, 8, 5)))
6. 16진수 값 3D5F의 10진수 값은 무엇인가?
print('16진수 값 3D5F의 10진수 값 :', 0x3D5F)
7. 10진수 1024의 16진수 값은 무엇인가?
print('10진수 1024의 16진수 값 :', hex(1024))
8. 0x35의 2진수 값은 무엇인가?
print('0x35의 2진수 값 :', bin(0x35))
9. 0o35의 16진수 값은 무엇인가?
print('0o35의 16진수 값 :', hex(0o35))
10. 3452 + 5785의 16진수 값은 무엇인가?
print('3452 + 5785의 16진수 값 :', hex(3452 + 5785))
11. 0xAC + 200의 2진수 값은 무엇인가?
print('0xAC + 200의 2진수 값 :', bin(0xAC + 200))
서식 문자 문자열에 대해 서식을 지정하여 사용할 수 있게 하는 문자. 서식 -> 정수, 실수, 문자열, 정렬, 문자열 자릿수 지정, 진법값 등
C 언어 서식 문자 | Python 서식 문자 | 기능 %s {} 문자열 서식 %d {} 정수 서식 %f {} 실수 서식 %.2f {:.2f} 실수 서식(소수점 2번째 자리) %o {:o} 8진수 서식(표현식 없음) %x {:x} 16진수 서식(표현식 없음, 소문자) %X {:X} 16진수 서식(표현식 없음, 대문자) {:b} 2진수 서식(표현식 없음)
%10s, %10d, %10f {:10}
print('%s %s %d %.2f' % ('서식', '문자열', 100, 5/2))
print('{} {} {} {:.2f}'.format('서식', '문자열', 100, 5/2))
서식 문자열 100 2.50
서식 문자열 100 2.50
print('8진수 값 %o' % 10)
print('16진수 값 %x' % 10)
print('16진수 값 %X' % 10)
8진수 값 12
16진수 값 a
16진수 값 A
print('2진수 값 {:b}'.format(10))
print('8진수 값 {:o}'.format(10))
print('16진수 값 {:x}'.format(10))
print('16진수 값 {:X}'.format(10))
2진수 값 1010
8진수 값 12
16진수 값 a
16진수 값 A
print('%-25s%-5s%-10s' % ('name', 'age', 'gender'))
print('%-25s%-5s%-10s' % ('Pack', '45', 'man'))
print('%-25s%-5s%-10s' % ('Ahn', '33', 'man'))
name age gender
Pack 45 man
Ahn 33 man
print('{:<25}{:<5}{:<10}'.format('name', 'age', 'gender'))
print('{:^25}{:>5}{:^10}'.format('Pack', '45', 'man'))
print('{:^25}{:>5}{:^10}'.format('Ahn', '33', 'man'))
name age gender
Pack 45 man
Ahn 33 man
print('{} {:,}'.format(10000, 10000))
10000 10,000
print('{:,}'.format(9999999))
print('{:,.3f}'.format(9999999))
9,999,999
9,999,999.000
# Named Placeholder
print('%(name)s %(age)d' % {'name': 'John', 'age': 20})
print('{} {}'.format('John', 20))
print('{name} {age}'.format(age=20,name='John'))
print('{0} {3} {2} {1}'.format('Mr.Kim',30,'Age','Has'))
John 20
John 20
John 20
Mr.Kim Has Age 30
print('{:^64}'.format('파이썬 쇼핑몰'))
print('{:<3}: {:<63}'.format('번호','1078718855'))
print('{:<3}: {:<54}'.format('주소', '서울시 종로구 종로3가'))
print('{:<3}: {:<60}'.format('성명', '김사장'))
print('{:<3}: {:<63}'.format('전화', '070-1234-5678'))
print('{}'.format('-'*70))
print('{:^23} {:^11} {:^11} {:^14}'.format('품명','단가','수량','금액'))
print('{}'.format('-'*70))
print('{:^18} {:>13,} {:>13,} {:>16,}'.format('블루투스 이어폰', 85000, 1, 85000))
print('{:^25} {:>13,} {:>13,} {:>16,}'.format('USB3.0 8G', 8000, 1, 8000))
print('{}'.format('-'*70))
print('{:<13} {:>54,}'.format('소 계', 93000))
print('{}'.format('-'*70))
print('{:<11} {:>54,}'.format('청구금액', 93000))
print('{:<11} {:>54,}'.format('받은금액', 100000))
print('{:<11} {:>54,}'.format('거스름돈', 7000))
print('{}'.format('-'*70))
파이썬 쇼핑몰
번호 : 1078718855
주소 : 서울시 종로구 종로3가
성명 : 김사장
전화 : 070-1234-5678
----------------------------------------------------------------------
품명 단가 수량 금액
----------------------------------------------------------------------
블루투스 이어폰 85,000 1 85,000
USB3.0 8G 8,000 1 8,000
----------------------------------------------------------------------
소 계 93,000
----------------------------------------------------------------------
청구금액 93,000
받은금액 100,000
거스름돈 7,000
----------------------------------------------------------------------
String(문자열) 자료형 Sequence Type
- 문자들에 대한 순서가 유지 된다.
- Index 번호를 통해 접근 할 수 있다.
Iterable Type
- 반복문에서 문자열의 각 문자에 반복적으로 접근이 가능
immutation Type
- 문자열의 특정 문자를 변경 할 수 없다.
s = 'abcd'
print(s[0], s[2])
print(s[1:3])
a c
bc
s = 'abcd'
for x in s:
print(x)
a
b
c
d
# Unpacking
x, y = '58'
print(x, y)
5 8
문자열 함수
# 2.1 find(value[, start_index]) :
# 문자열에서 value 문자열을 찾아서 해당 문자열의 시작 index 값을 반환 한다.
# start_index를 지정하면 해당 위치 부터 value 문자열을 찾는다.
string = 'python programming project'
print(string)
print(string.find('pro'))
print(string.find('pro', 8))
python programming project
7
19
# 2.2 count(value) : 문자열에서 value 문자열을 찾아서
# 해당 문자열의 갯수를 반환 한다.
string = 'python programming project'
print(string.count('pro'))
2
# 2.3 lower() : 알파벳 문자열을 소문자로 변경 해서
# 반환 하는 함수 기존 문자열이 변경되지는 않는다.
string = 'Python Programming Project'
print(string.lower())
print(string)
string = string.lower()
print(string)
python programming project
Python Programming Project
python programming project
# 2.4 upper() : 알파벳 문자열을 대문자로 변경 해서
# 반환 하는 함수 기존 문자열이 변경되지는 않는다.
string = 'Python Programming Project'
print(string.upper())
print(string)
string = string.upper()
print(string)
# 2.5 strip([char]) : 문자열의 앞(좌)/뒤(우) 공백을 제거하여
# 반환 하는 함수 기존 문자열의 공백이 제거되지는 않는다.
# char(문자)를 지정하는 경우 해당 문자를 제거
string = ' 앞뒤로 공백이 있는 문자열 '
print(string+'a')
print(string.strip())
string = string.strip()
print(string)
string = '########앞뒤로 #이 있는 문자열########'
print(string.strip('#'))
앞뒤로 공백이 있는 문자열 a
앞뒤로 공백이 있는 문자열
앞뒤로 공백이 있는 문자열
앞뒤로 #이 있는 문자열
# 2.6 split([value]) : 문자열의 공백을 기준으로 문자열을 분리하여
# 리스트로 반환 한다. value를 지정하는 경우 value를 기준으로 문자열을 분리 한다.
string = 'python programming project'
print(string)
print(string.split())
string = 'C:\\Program Files\\Python36'
print(string.split('\\'))
print(string)
python programming project
['python', 'programming', 'project']
['C:', 'Program Files', 'Python36']
C:\Program Files\Python36
# 2.7 replace(old, new) : 기존 문자열에서 old에 해당하는 문자열을
# new에 해당하는 문자열로 변경 하여 반환하는 함수
string = 'python programming project'
print(string)
print(string.replace('python', 'java'))
string = string.replace('python', 'java')
print(string)
python programming project
java programming project
java programming project
# 2.8 isnumeric() : 문자열 값이 정수형태의 문자열인지 확인하는 함수
s1 = '12345'
s2 = 'abcde'
s3 = '123abc'
print(s1.isnumeric(), s2.isnumeric(),s3.isnumeric())
True False False
# 2.9 isalpha() : 문자열 값이 알파벳으로만 구성된 문자열인지 확인하는 함수
s1 = '12345'
s2 = 'abcde'
s3 = '123abc'
print(s1.isalpha(), s2.isalpha(),s3.isalpha())
False True False
string = 'python programming project'
print(string)
print(string.title())
python programming project
Python Programming Project
[문제1] 아래의 문장 주어진 조건에 맞게 변경
"NevEr-eVer 100glVe Up" [변경전]
"Never-Ever 100Glve Up" [변경후]
[문제2] "It is a fun python class" 문자열의 길이,문자 'a'의 개수, 's'의 개수를 출력하세요.
[문제3] "Have a nice day" 문자열을 가지고 다음을 처리하세요.
- 각각 find와 index를 사용하여 'day'문자의 위치를 찾으세요.
- 각각 find와 index를 이용하여 'kkk'문자의 위치를 확인하세요
- find를 사용하여 첫번째, 두번째, 세번째, 네번째 'a'의 위치를 출력하세요.
# st = "NevEr-eVer 100glVe Up"
# print(st.title())
# str = 'It is a fun python class'
# print("문자열의 길이:",len(str))
# print("문자 'a'의 개수: ",str.count('a'))
# print("문자 's'의 개수: ",str.count('s'))
str3 = "Have a nice day"
print("Find('day') :",str3.find("day"))
print("index('day') :",str3.index("day"))
print("Find('kkk') :",str3.find("kkk"))
Find('day') : 12
index('day') : 12
Find('kkk') : -1
변수(variable) 프로그램 안에서 데이터(값)을 저장하고 사용하기 위한 방법. 변수를 통해 저장된 데이터를 메모리(RAM)라는 공간에 저장이 된다. 변수에는 여러 형태의 자료가 저장될 수 있으며, 재사용될 수 있다.
변수 이름 작명 규칙 알파벳, 한글(유니코드 문자), 숫자, _(언더스코어)를 사용한다. 알파벳은 대소문자 구분을 한다. 숫자로 시작하는 변수 이름은 작명할 수 없다. 공백이 있으면 안된다. 파이썬 예약어는 사용 할 수 없다.(if, for, while, True, False, def, class ...)
변수 이름, 문자열 구분
홑/쌍 따옴표가 없는 것 : 변수
홑/쌍 따옴표가 있는 것 : 문자열
변수에 저장할 수 있는 자료형 종류
부울형(boolean) : True, False만을 가지는 값
정수(int) : 0, 음수, 양수를 포함하는 값
실수(float) : 소수점을 사용하는 값
문자열(string) : 홑/쌍 따옴표로 묶여 있는 값
리스트(list) : 여러 자료형을 묶어서 사용할 수 있는 집합 형태의 자료형, [] 대괄호 사용
a = [1, 2, 3, 4, 5, 6, 7, 8]
튜플(tuple) : 여러 자료형을 묶어서 사용할 수 있는 집합 형태의 자료형, () 소괄호 사용
사전(dict) : 여러 자료형을 묶어서 사용할 수 있는 집합 형태의 자료형, {} 중괄호 사용
변수 정의 방법 변수이름 = 자료형
변수이름1, 변수이름2 = 자료형1, 자료형2
a = 10
b1, b2 = 20, 30
c1, c2, c3 = 40, 'var', 50.5
# print(a)
# print('a')
# print(b1)
# print(b2)
# print(b1 + b2 + a)
# print(c1,c2,c3)
print(type(c1))
print(type(c2))
print(type(c3))
<class 'int'>
<class 'str'>
<class 'float'>
# bool() : 부울형 자료로 변환하여 반환하는 함수
a1, a2 = -3, 0 #부울형으로 변환하면 True, False
b1, b2 = -3.0, 0.0 #부울형으로 변환하면 True, False
c1, c2 = ' ', '' #부울형으로 변환하면 True, False
print(type(a1), type(a2), type(b1), type(b2), type(c1), type(c2))
a1, a2 = bool(a1), bool(a2)
b1, b2 = bool(b1), bool(b2)
c1, c2 = bool(c1), bool(c2)
print(type(a1), type(a2), type(b1), type(b2), type(c1), type(c2))
print(a1, a2, b1, b2, c1, c2)
<class 'int'> <class 'int'> <class 'float'> <class 'float'> <class 'str'> <class 'str'>
<class 'bool'> <class 'bool'> <class 'bool'> <class 'bool'> <class 'bool'> <class 'bool'>
True False True False True False
# int() : 정수형 자료로 변환하여 반환하는 함수
a = '10'
print(type(a))
a = int(a)
print(type(a))
<class 'str'>
<class 'int'>
# float() : 실수형 자료로 변환하여 반환하는 함수
a = '10.0'
print(type(a))
a = float(a)
print(type(a))
<class 'str'>
<class 'float'>
# str() : 문자열 자료로 변환하여 반환하는 함수
a = 10
print(type(a))
a = str(a)
print(type(a))
<class 'int'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-56-4e21236f585b> in <module>()
2 a = 10
3 print(type(a))
----> 4 a=str(a)
5 print(type(a))
TypeError: 'str' object is not callable
# Q] 변수 x,y의 값을 서로 맞바꾸어 출력하세요.
x = 10
y = 20
print(x,y)
# Sol 1 ]
x=10
y=20
z=x
x=y
y=z
print(x,y)
# Sol2]
x,y = 10,20
x,y = y,x
print(x,y)
10 20
20 10
20 10
문제 2-1] Linux 의 수업료가 500,000원이고
Windows 수업료는 400,000원이다.
9월 수강생이 Linux를 30명 수강하고 Windows는 20명 수강한다.
월 수업료 총액을 계산하는
프로그램을 작성하세요.
문제 2-1] Linux 의 수업료가 500,000원이고 Windows 수업료는 400,000원이다. 9월 수강생이 Linux를 30명 수강하고 Windows는 20명 수강한다. 월 수업료 총액을 계산하는 프로그램을 작성하세요.
문제 2-2] 문제 2-1에서 구한 수업료 총액에서 Linux과 Windows의 수업료가 각각 5%, 10% Discount한 경우에 손실액을 구하는 프로그램을 작성하세요.
문제 2-3] 우리나라는 섭씨 온도를 사용하는 반면 미국과 유럽은 화씨 온도를 주로 사용합니다. 화씨 온도(F)를 섭씨 온도(C)로 변환할 때는 다음과 같은 공식을 사용합니다. 이 공식을 사용해 화씨 온도가 50일 때의 섭씨 온도를 계산해 보세요. C = (F-32)/1.8
문제 2-4] 화면에 "Linux"를 10번 출력하는 프로그램을 작성하세요. 문제 2-5] 다음 형식과 같이 이름, 생년월일, 주민등록번호를 출력하는 프로그램을 작성해 보세요. 이름: 파이썬 생년월일: 2014년 12월 12일 주민등록번호: 20141212-1623210 문제 2-6] s라는 변수에 'Linux is not Unix'라는 문자열이 바인딩돼 있다고 했을 때 문자열의 슬라이싱 기능과 연결하기를 이용해 s의 값을 'Unix is not Linux'으로 변경해 보세요. 문제 2-7] x라는 변수에 'abcdef'라는 문자열이 바인딩돼 있다고 했을 때 x의 값을 'bcdefa'로 변경해 보세요.