Language/Python
sw교육_python 2일차
송 이
2023. 9. 14. 17:25
기본출력함수 print()¶
- end, sep
In [7]:
print('월요일 시작해 볼까요?')
print(2023 , 9, 4)
print(True)
print('오늘은','월요일','입니다')
print("seop's python")
월요일 시작해 볼까요? 2023 9 4 True 오늘은 월요일 입니다 seop's python
In [12]:
#sep option
print('P','Y','T','H','O','N')
print('P','Y','T','H','O','N',sep='')
print('010','4603','2283')
print('010','4603','2283', sep='-')
print('jslim9413','naver.com',sep='@')
P Y T H O N PYTHON 010 4603 2283 010-4603-2283 jslim9413@naver.com
In [18]:
#end option
print('print - println 의 차이')
print('Welcome To' , end=' ')
print('IT World')
print - println 의 차이 Welcome To IT World
In [23]:
print('''단일문장01
단일문장02
단일문장03''')
단일문장01 단일문장02 단일문장03
In [39]:
# 포맷형식을 이용한 출력
# %s, %f, %d
# {}
print('%s %s' % ('데이터01','데이터02')) #문자열2개 정의
print('{} {}'.format('데이터01','데이터02'))
print('{1} {0}'. format('데이터01','데이터02'))
print('%10s' % ('nice'))
print('%5s' % ('PYTHONSTUDY'))
print('%.5s' % ('PYTHONSTUDY'))
print('%d %d' % (100, 200))
print('%.2f %f' % (3.14159, 200))
print('%.2f' % (123.14195))
데이터01 데이터02 데이터01 데이터02 데이터02 데이터01 nice PYTHONSTUDY PYTHO 100 200 3.14 200.000000 123.14
숫자형 연산자¶
- +, -, *, / , //(몫), %(나머지)
In [50]:
value01 = 10
value02 = 20
print(value01)
print(value02)
print('{} {}'.format(value01, value02))
print('>>>>>> +')
print('{}값과 {}값의 연산의 결과는 = {}' .format(value01, value02, (value01 + value02)))
10 20 10 20 >>>>>> + 10값과 20값의 연산의 결과는 = 30
input()¶
- 콘솔로부터 데이터를 입력 받을 때 사용하는 함수
- 왜 캐스팅함수가 필요한지를 고민해보자
In [56]:
intValue01 = input()
intValue02 = input()
print(intValue01 , type(intValue01))
print(intValue02 , type(intValue02))
print('>>>>>>>>>> +', (int(intValue01) + int(intValue02)))
100 100 100 <class 'str'> 100 <class 'str'> >>>>>>>>>> + 200
In [58]:
# Text Sequence(문자열)
str01 = '오늘부터 파이썬을 배우고 있습니다.'
print('type - ', type(str01))
print('data - ', str01)
type - <class 'str'> data - 오늘부터 파이썬을 배우고 있습니다.
In [1]:
name = '홍길동'
age = 24
print('당신의 이름은 {} 이고 나이는 {}살 입니다.' .format(name, age))
당신의 이름은 홍길동 이고 나이는 24살 입니다.
In [61]:
rawData = r'c:\python\study\test.txt' #앞에 r을 붙여야 정확한 문자열로 인식
print(rawData)
c:\python\study\test.txt
In [71]:
print('dir - 인스턴스가 소유하고 있는 모든 구성요소를 보여준다.')
sayHello = '맛점하세요'
#print(dir(sayHello))
#열거형(순서)이란 인덱싱과 슬라이싱이 가능하고
#반복구문 사용이 가능하다.
print('indexing -', sayHello[0])
print('slicing [ : ] -', sayHello[0:2]) # endindex는 -1을 적용
print('반복구문 - ')
print('반복구문 - for ~ in')
for char in sayHello :
print(char)
for idx , char in enumerate(sayHello) : #튜플 형식
print('index = {}, data={}' .format(idx, char))
dir - 인스턴스가 소유하고 있는 모든 구성요소를 보여준다. indexing - 맛 slicing [ : ] - 맛점 반복구문 - 반복구문 - for ~ in 맛 점 하 세 요 index = 0, data=맛 index = 1, data=점 index = 2, data=하 index = 3, data=세 index = 4, data=요
In [73]:
print('문자열의 길이 - len')
print('len -', len(sayHello))
print('돌발 퀴즈 -')
print('slicing [ startidx : endidx -1 : step ]')
gender = '남여남여남여남여남여남여'
print('answer -', gender[0 : len(gender) : 2])
문자열의 길이 - len len - 5 돌발 퀴즈 - slicing [ startidx : endidx -1 : step ] answer - 남남남남남남
In [87]:
print('돌발퀴즈 -')
print('gender 값을 여남여남~ 으로 출력한다면?')
print('answer -' , gender[::-1])
print('answer -' , gender[len(gender):0:-1])
돌발퀴즈 - gender 값을 여남여남~ 으로 출력한다면? answer - 여남여남여남여남여남여남 answer - 여남여남여남여남여남여
In [96]:
print('문자열 객체가 제공하는 구성요소(변수,함수)에 접근할 수 있다.')
print('문자열 함수 - lower(), upper(), count(), startswith(), endswith() etc...')
str = 'python' #string instance create
print('upper() - ', str.upper())
문자열 객체가 제공하는 구성요소(변수,함수)에 접근할 수 있다. 문자열 함수 - lower(), upper(), count(), startswith(), endswith() etc... upper() - PYTHON
In [95]:
phoneNumber = '010 4603 2283'
print(phoneNumber, phoneNumber.replace(' ','-'))
print(str, str.replace('p','P'))
print(str, str.capitalize())
010 4603 2283 010-4603-2283 python Python python Python
In [106]:
url = 'http://www.samsung.com'
print(url, url.split('.')[1])
http://www.samsung.com samsung
In [110]:
print('strip(), rstrip(), lstrip()')
str01 = ' samsung '
str02 = 'samsung'
print('len - ', len(str01), len(str02) , len(str01.lstrip()))
print('조건문 - ')
if str01.strip() == str02.strip() :
print('참')
else :
print('거짓')
strip(), rstrip(), lstrip() len - 15 7 11 조건문 - 참
In [117]:
print('startswith, endswith')
print('파일 이름이 문자열로 정의되어 있을 때')
print('엑셀파일인지 아닌지 , 시작문자가 2023인지 아닌지를 판단')
fileName = '2023_데이터사이언스과정.txt'
print('엑셀파일인가 - ' , fileName.endswith('xls'))
print('시작문자가 2023인지 아닌지를 판단 - ' , fileName.startswith('2023'))
startswith, endswith 파일 이름이 문자열로 정의되어 있을 때 엑셀파일인지 아닌지 , 시작문자가 2023인지 아닌지를 판단 엑셀파일인가 - False 시작문자가 2023인지 아닌지를 판단 - True
리스트¶
- 배열이 아니다, 파이썬은 배열을 제공하지 않는다.
- 1차원 Vector
- 열거형 타입으로 인덱싱, 슬라이싱이 가능하다
- 순서가 존재, 중복데이터 허용, 수정과 삭제가 가능하다(mutable)
- 인덱스는 0 ~
- 선언 : [ ], list()
- 다양한 타입을 요소로 가질 수 있다
In [121]:
lstTmp = [1,2,3,4] #또는 lstTmp = list()
print('type -', type(lstTmp), bool(lstTmp)) #값이 없는 상태면 False로 인식
type - <class 'list'> True
In [142]:
lstTmp = [100, 3.14, 'donga', True , ['captine','zzang','seop'] ]
print('indexing -', lstTmp[2])
print('slicing -', lstTmp[0:3]) #endindex는 -1이 적용
print('seop 추출한다면? -', lstTmp[4][2])
print('zzang seop 추출한다면? -', lstTmp[-1][1:3])
for idx,element in enumerate(lstTmp) :
print('element -', idx, element) #리스트에선 for loop를 사용하는 것은 좋지않다
print()
#for idx in len(lstTmp) :
# print(idx)
indexing - donga slicing - [100, 3.14, 'donga'] seop 추출한다면? - seop zzang seop 추출한다면? - ['zzang', 'seop'] element - 0 100 element - 1 3.14 element - 2 donga element - 3 True element - 4 ['captine', 'zzang', 'seop']
In [143]:
print('list dir -', dir(lstTmp))
list dir - ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
In [ ]:
lstTmp = [1,2,3,4,5,6,7,8,9]
lstTmp[0] = 10
print('update -', lstTmp)
del lstTmp[0]
print('data - ', lstTmp)
lstTmp.append(100)
print('append - 마지막 인덱스에 추가',lstTmp)
lstTmp.insert(5,4)
print('insert - 사용자가 원하는 인덱스에 추가',lstTmp)
lstTmp.reverse() #값을 반환하지않는 함수
print('reverse - 역순으로 데이터를 출력', lstTmp)
lstTmp=[6,9,8,7]
lstTmp.sort()
lstTmp.reverse()
print('sort -', lstTmp)
In [210]:
lstTmp = [1,2,3,4,5,6,7,8,9]
lstTmp[0] = 10
print('update -', lstTmp)
del lstTmp[0]
print('data - ', lstTmp)
lstTmp.append(100)
print('append - 마지막 인덱스에 추가',lstTmp)
lstTmp.insert(5,4)
print('insert - 사용자가 원하는 인덱스에 추가',lstTmp)
lstTmp.reverse() #값을 반환하지않는 함수
print('reverse - 역순으로 데이터를 출력', lstTmp)
update - [10, 2, 3, 4, 5, 6, 7, 8, 9] data - [2, 3, 4, 5, 6, 7, 8, 9] append - 마지막 인덱스에 추가 [2, 3, 4, 5, 6, 7, 8, 9, 100] insert - 사용자가 원하는 인덱스에 추가 [2, 3, 4, 5, 6, 4, 7, 8, 9, 100] reverse - 역순으로 데이터를 출력 [100, 9, 8, 7, 4, 6, 5, 4, 3, 2]
In [185]:
lstTmp=[6,9,8,7]
lstTmp.sort()
lstTmp.reverse()
print('sort -', lstTmp)
print('remove - 인덱스로 제거하는 것이 아닌 값으로 제거 ')
print('lstTmp -', lstTmp)
lstTmp.remove(7)
print('remove -' ,lstTmp)
print('pop - 값을 꺼내고 원본에서 삭제')
lstTmp.pop(0)
print(lstTmp)
#count : 중복값을 뺀 데이터의 개수
#extend와 append의 차이점? append -> 중첩요소로 추가, extend -> 새로운 요소로 추가
secondTmp = [1,2,3,4,5]
lstTmp.extend(secondTmp)
print('extend -', lstTmp)
sort - [9, 8, 7, 6] remove - 인덱스로 제거하는 것이 아닌 값으로 제거 lstTmp - [9, 8, 7, 6] remove - [9, 8, 6] pop - 값을 꺼내고 원본에서 삭제 [8, 6] extend - [8, 6, 1, 2, 3, 4, 5]
In [253]:
print('퀴즈 - ')
print()
lstMovies = ['엘리멘탈','밀수','오펜하이머','범죄도시3','타겟','명탐정코난']
퀴즈 -
In [254]:
print('>>>>> 데이터출력 : ' , lstMovies)
print('>>>>> 타입 : ' , type(lstMovies))
>>>>> 데이터출력 : ['엘리멘탈', '밀수', '오펜하이머', '범죄도시3', '타겟', '명탐정코난'] >>>>> 타입 : <class 'list'>
In [255]:
print('1. 마지막 인덱스에 아바타2를 추가하라')
print('2. 범죄도시3와 타겟 사이에 배트맨을 추가하라')
print('3. 밀수 영화를 삭제하라')
print('4. 오펜하이머를 하이머로 변경- 문자열함수(replace)')
print('5. 9월 출시예정인 영화 두편을 리스트로 선언하고 기존 lstMovies 추가')
print('6. 5번까지 작성된 최종결과를 출력하고 역순으로 다시 출력하라')
print('7. 하이머와 범죄도시3를 삭제하라')
print('8. 리스트에 저장된 데이터의 갯수를 출력하라')
print('9. 슬라이싱을 이용하여 인덱스가 홀수번지인 데이터만 출력하라')
print('10. 데이터를 공백이 아닌 - 를 이용해서 출력')
1. 마지막 인덱스에 아바타2를 추가하라 2. 범죄도시3와 타겟 사이에 배트맨을 추가하라 3. 밀수 영화를 삭제하라 4. 오펜하이머를 하이머로 변경- 문자열함수(replace) 5. 9월 출시예정인 영화 두편을 리스트로 선언하고 기존 lstMovies 추가 6. 5번까지 작성된 최종결과를 출력하고 역순으로 다시 출력하라 7. 하이머와 범죄도시3를 삭제하라 8. 리스트에 저장된 데이터의 갯수를 출력하라 9. 슬라이싱을 이용하여 인덱스가 홀수번지인 데이터만 출력하라 10. 데이터를 공백이 아닌 - 를 이용해서 출력
In [256]:
#문제1번
lstMovies.append('아바타2')
print(lstMovies)
['엘리멘탈', '밀수', '오펜하이머', '범죄도시3', '타겟', '명탐정코난', '아바타2']
In [257]:
#문제2번
lstMovies.insert(4,'배트맨')
print(lstMovies)
['엘리멘탈', '밀수', '오펜하이머', '범죄도시3', '배트맨', '타겟', '명탐정코난', '아바타2']
In [258]:
#문제3번
lstMovies.remove('밀수')
print(lstMovies)
['엘리멘탈', '오펜하이머', '범죄도시3', '배트맨', '타겟', '명탐정코난', '아바타2']
In [259]:
#문제4번 (어려움)
lstMovies[1] = lstMovies[1].replace('오펜하이머','하이머')
print(lstMovies)
['엘리멘탈', '하이머', '범죄도시3', '배트맨', '타겟', '명탐정코난', '아바타2']
In [260]:
#문제5번
lstMovies2 = ['잠','오즈의마법사']
lstMovies.extend(lstMovies2)
print(lstMovies)
['엘리멘탈', '하이머', '범죄도시3', '배트맨', '타겟', '명탐정코난', '아바타2', '잠', '오즈의마법사']
In [261]:
#문제6번
lstMovies.sort()
lstMovies.reverse()
print(lstMovies)
['하이머', '타겟', '잠', '오즈의마법사', '엘리멘탈', '아바타2', '범죄도시3', '배트맨', '명탐정코난']
In [262]:
#문제7번
lstMovies.remove('하이머')
lstMovies.remove('범죄도시3')
print(lstMovies)
['타겟', '잠', '오즈의마법사', '엘리멘탈', '아바타2', '배트맨', '명탐정코난']
In [263]:
#문제8번
print(len(lstMovies))
7
In [264]:
#문제9번
print(lstMovies[1:len(lstMovies): 2])
lstMovies[1::2]
['잠', '엘리멘탈', '배트맨']
Out[264]:
['잠', '엘리멘탈', '배트맨']
In [268]:
#문제10번
for element in lstMovies :
print(element, end='-')
타겟-잠-오즈의마법사-엘리멘탈-아바타2-배트맨-명탐정코난-