● 문자열 함수
1. find(문자열)
- 문자열을 찾고 어디에 위치하는지 인덱스를 돌려줌
2. lstrip(문자열), rstrip(문자열), strip(문자열)
- 왼쪽, 오른쪽, 양쪽으로부터 문자열을 찾아 삭제
- 다른 언어에서는 일반적으로 ltrim, rtrim, trim과 동일한 기능
3. title()
- 각 단어의 첫 자를 대문자로 만들어주는 것
4. lower()
- 각 단어의 대문자를 소문자로 만들어주는 것
● 전역(global)변수와 지역(local)변수
1. Argument(인수), Value(값), Parameter(전달값)
![](https://blog.kakaocdn.net/dn/bH8yeC/btrm9DCJxWS/xOn1uEYwxxMeKAQfkZGQA0/img.png)
2. 전역변수와 지역변수 차이점
- 프로그램에서 변수를 사용할 수 있는 영역이 존재
- 사용 범위
(1) 전역변수 : global이라고 하며 어디에서든 사용 가능, 함수 내에서 시작하지 않은 모든 변수
(2) 지역변수 : local이라고 하며, 함수 내에서만 사용 가능, 함수 내에서 시작된 변수
*** 함수 내에서 사용된 변수는 모두 지역변수로, 함수를 나가는 순간 소멸 ***
*** 함수 내에서 전역변수와 동일한 이름을 쓰더라도 지역변수이다. ***
3. 함수 내에서 전역변수를 사용하는 방법
(1) global 전역변수명을 선언한다.
(2) globals()['전역변수명']으로 사용한다.
4. 함수에만 적용된다.
- 조건문, 반복문 안에 있는 변수는 외부에서 사용 가능
● 표준 모듈 소개
1. random : 무작위 숫자 관련
(ex) random.randint(1, 10) : 1부터 10까지의 정수 1개
(ex) random.randrange(1, 10, 2) : 1부터 10까지의 홀수 중 1개
(ex) random.random() : 0~1 사이의 실수(소수)
(ex) random.choice(집합객체) : 집합객체 중 임의의 1개를 반환
(ex) random.sample(집합객체, n) : 집합객체 중 임의의 n개를 반환
2. math : 수학 관련
(ex) math.pi : 원주율
(ex) math.ceil() : 올림
(ex) math.floor() : 내림 → floor(-10.3) = -11
(ex) math.trunc() : 소수점 이하 삭제 → trunc(-10.3) = -10
3. time : 시간 관련
(ex) time.time() : 현재시간
(ex) time.ctime() : 인수로 전달된 시간을 형식을 갖춰서 반환
(ex) time.strftime() : 형식을 갖춘 데이터 생성(strformattime), '*Y%m%d %H:%M:%S'
(ex) time.sleep() : 입력한 초만큼 중지
● 파일 입출력
1. 기본 사용법
- 파일변수(f) = open(파일명, 옵션)
- 파일변수를 활용하여 로직 처리
- 파일변수.close()
2. 파일명
(ex) open('sample.txt') → 같은경로
(ex) open('C:/sample.txt') → 절대경로
(ex) open('./txt/sample.txt') → 상대경로
(ex) open('../../sample.txt') → 상위디렉토리
3. 옵션
- r : 읽기모드. 설정한 옵션이 아무것도 없으면 r
- w : 쓰기모드. 파일이 없으면 만듦, 있으면 덮어씀
- a : 쓰기모드. 파일이 없으면 만듦, 있으면 그 뒤에 이어서 씀
- x : 쓰기모드. 파일이 없으면 만듦, 있으면 오류냄
- t : 텍스트모드. 우리 눈에 읽힘
- b : 바이너리모드. 음성, 이미지 등 데이터로 다루어져야 하는 경우
4. 쓰기
- 실습 참조
5. 읽기
(1) read(사이즈)
- 사이즈 : 텍스트모드일 때는 읽을 글자 수, 바이너리모드일 때는 읽을 바이트 수
- 사이즈를 생략하면 다 읽는다.
- 파일의 끝에 도달하면 리턴값이 ''(null)
(2) readline()
- 한 줄을 읽어들이는 함수
- 파일의 끝에 도달하면 리턴값이 ''(null)
(3) readlines(수)
- 줄 단위로 리스트에 저장하여 리턴
- 누적으로 읽은 글자수가 수를 넘어가면 종료
실습(문자열 함수)
1. find()
s1 = 'my name is john'
print(s1.find('name')) # 존재하면 인덱스 번호, 미존재 시 -1
print(s1.find('m')) # 중복이 있으면 첫 번째로 만나는 값의 인덱스 번호로 출력
print('name' in s1) # 'name'이 s1에 있는지 없는지를 bool 타입으로 반환
![](https://blog.kakaocdn.net/dn/mkjoy/btrm3QbMyaa/Tu3CFn9e0MjD4OXqj4CESk/img.png)
2. lstrip(), rstrip()
s3 = ' I am a programmer@@@@@@@@1'
s4 = s3.lstrip(' ').rstrip('@1') # 왼쪽의 공백' '과 오른쪽의 '@1'를 지운다.
# (오른쪽 : 1부터 비교를 시작하여 지운다.)
print(s4)
![](https://blog.kakaocdn.net/dn/cykagO/btrm5yBVKv2/KKNtJnE1OFONCggFsTMUk1/img.png)
3. title()
s1 = 'my name is john'
s2 = s1.title() # 각 단어의 첫 글자를 대문자로 만들 때 사용
print(s2)
![](https://blog.kakaocdn.net/dn/brlmrI/btrndHc4Xqo/7nFcTLi3BCW3qb8ZKX4IOk/img.png)
4. lower()
s1 = 'my name is john'
print('Name'.lower() in s1.lower()) # 대소문자 관계없이 찾고 싶을 때
![](https://blog.kakaocdn.net/dn/0bFqC/btrndHKUcng/DPKuayRavq2fdJB11QMlHK/img.png)
실습(전역변수)
1. 1단계
global_v = 10
def printVariables1():
print('1단계 global_v :', global_v)
printVariables1()
print('1단계 global_v :', global_v)
![](https://blog.kakaocdn.net/dn/lcZTF/btrnevpYrLy/IKO2QZLheWddIoTRgHQeYK/img.png)
2. 2단계
def printVariables2():
local_v = 20 # 지역변수(로컬변수)
print('2단계 global_v :', global_v)
print('2단계 local_v :', local_v)
printVariables2()
print('2단계 global_v :', global_v)
# print('2단계 local_v :', local_v) # 지역변수는 함수 밖에서 사용할 수 없다.
![](https://blog.kakaocdn.net/dn/bw6dgm/btrnewh5g0C/KxTO6rW6hJnueIMJBhbUz0/img.png)
3. 3단계
def printVariables3():
global_v = 30
local_v = 30
print('3단계 global_v :', global_v)
print('3단계 local_v :', local_v)
printVariables3()
print('3단계 global_v :', global_v) # 함수 내에서 바뀐 값은 함수 밖에 영향을 주지 않는다.
![](https://blog.kakaocdn.net/dn/b1B7MK/btrm5y24kEi/JHVq7Z87ixTK8SgKz2dKG0/img.png)
4. 4단계
def printVariables4(global_v):
global_v = 40
local_v = 40
print('4단계 global_v :', global_v)
print('4단계 local_v :', local_v)
printVariables4('abcd') # 함수 내에서 global_v를 40으로 선언했기 때문에 'abcd'는 출력되지 않는다.
print('4단계 global_v :', global_v)
![](https://blog.kakaocdn.net/dn/dmXZod/btrm7MNwh26/buGi5zrkLIkY3l9BX4cT01/img.png)
5. 5단계
def printVariables5():
local_v = 50
return local_v
global_v = printVariables5() # 지역변수는 밖에서 사용하려면 값으로만 가져올 수 있다.
print('5단계 global_v :', global_v)
![](https://blog.kakaocdn.net/dn/J0hbw/btrnevpYrLk/aIHO0J7xWmz82NJqQ8DA01/img.png)
6. 6단계
global_v1 = 61
global_v2 = 62
def printVariables6():
global global_v1
global_v1 = 601
globals()['global_v2'] = 602
global_v2 = 700 # global을 이욯하여 선언하지 않았기 때문에 새로 선언된 변수 취급
printVariables6()
print('6단계 global_v1 :', global_v1)
print('6단계 global_v2 :', global_v2)
![](https://blog.kakaocdn.net/dn/bADcty/btrm3PqqlCo/7fVWlN1xED3M6DfW6pTkF0/img.png)
7. 7단계
if global_v1 == 601:
local_new = 300
print('7단계 local_new :', local_new)
![](https://blog.kakaocdn.net/dn/cIDNzy/btrm3O6anJu/pGLOnXaCgIsoUQs6KIk890/img.png)
8. 8단계
for local_new1 in range(5):
print(local_new1)
print('8단계 local_new1 :', local_new1)
![](https://blog.kakaocdn.net/dn/dehDuy/btrnc4mj1CB/3aF6rTWTMNqi115APJ6vxk/img.png)
실습(모듈)
1. random
import random
a_list = ['a', 'b', 'c']
a_tuple = ('A', 'B', 'C')
a_set = {'1', '2', '3'}
print('random.choice :', random.choice(a_list), random.choice(a_tuple))
# print('random.choice :', random.choice(a_set)) # set은 순서가 없기 때문에 random 수행 안됨
print('random.sample() :', random.sample(a_list, 2), random.sample(a_tuple, 2))
a_list2 = random.sample(a_list, len(a_list)) # random으로 순서를 재배열할 때 사용하는 Trick
print(a_list2)
![](https://blog.kakaocdn.net/dn/dkhtvf/btrm3QQmG5j/HxBDarKBhZhe2BSGAd16iK/img.png)
2. math
import math
print('math.pi :', math.pi)
print('floor(-1.9), trunc(-1.9) :', math.floor(-1.9), math.trunc(-1.9))
![](https://blog.kakaocdn.net/dn/bYVq5f/btrndHjQWqY/XvJFxgygcV35PMPNm5Go70/img.png)
3. time
import time
t1 = time.time()
t2 = time.ctime(t1)
t3 = time.strftime('*Y%m%d %H:%M:%S')
print('time.time() :', t1)
print('time.ctime() :', t2)
print('time.strftime() :', t3)
실습(파일 입출력)
1. sample.txt 생성
s1 = 'We are studying Python'
s2 = '우리는 파이썬을 공부중입니다.'
f = open('sample.txt', 'wt')
f.write(s1)
f.write(s2)
f.close()
- source 경로에 sample.txt 파일이 생성됨
![](https://blog.kakaocdn.net/dn/cdmGCP/btrndnTrje5/nErxhaFzsQdqbpYAFly8nk/img.png)
2. sample2.txt를 source에 생성 후 진행
f = open('sample2.txt', 'rt', encoding='utf-8') # default는 window에 맞게 cp949
while True:
readstr = f.readline()
if readstr == '':
break
print(readstr, end='')
- 결과 : sample2.txt의 내용이 출력됨
![](https://blog.kakaocdn.net/dn/briTXw/btrm9DpejIu/VLTbzm4efmkMQRndC3ogJ0/img.png)
'Python' 카테고리의 다른 글
[Python] 15 (0) | 2021.12.05 |
---|---|
[Python] 14 (0) | 2021.12.04 |
[Python] 13 (0) | 2021.12.03 |
[Python] 12 (0) | 2021.12.01 |
[Python] 11 (0) | 2021.11.28 |