본문 바로가기

Python

[Python] 16

문자열 함수

1. find(문자열)

- 문자열을 찾고 어디에 위치하는지 인덱스를 돌려줌

2. lstrip(문자열), rstrip(문자열), strip(문자열)

- 왼쪽, 오른쪽, 양쪽으로부터 문자열을 찾아 삭제

- 다른 언어에서는 일반적으로 ltrim, rtrim, trim과 동일한 기능

3. title()

- 각 단어의 첫 자를 대문자로 만들어주는 것

4. lower()

- 각 단어의 대문자를 소문자로 만들어주는 것

전역(global)변수와 지역(local)변수

1. Argument(인수), Value(값), Parameter(전달값)

example

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 타입으로 반환

 

결과

 

2. lstrip(), rstrip()

s3 = '     I am a programmer@@@@@@@@1'
s4 = s3.lstrip(' ').rstrip('@1')  # 왼쪽의 공백' '과 오른쪽의 '@1'를 지운다.
                                  # (오른쪽 : 1부터 비교를 시작하여 지운다.)
print(s4)

결과

 

 

3. title()

s1 = 'my name is john'
s2 = s1.title()  # 각 단어의 첫 글자를 대문자로 만들 때 사용
print(s2)

결과

 

4. lower()

s1 = 'my name is john'
print('Name'.lower() in s1.lower())  # 대소문자 관계없이 찾고 싶을 때

결과

 

실습(전역변수)

1. 1단계

global_v = 10

def printVariables1():
    print('1단계 global_v :', global_v)

printVariables1()
print('1단계 global_v :', global_v)

 

결과

 

​​

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)  # 지역변수는 함수 밖에서 사용할 수 없다.

결과

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)  # 함수 내에서 바뀐 값은 함수 밖에 영향을 주지 않는다.

 

결과

 

​​

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)

결과

5. 5단계

def printVariables5():
    local_v = 50
    return local_v

global_v = printVariables5()  # 지역변수는 밖에서 사용하려면 값으로만 가져올 수 있다.
print('5단계 global_v :', global_v)

결과

 

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)

결과

 

 

7. 7단계

if global_v1 == 601:
    local_new = 300

print('7단계 local_new :', local_new)

결과

 

 

8. 8단계

for local_new1 in range(5):
    print(local_new1)

print('8단계 local_new1 :', local_new1)

결과

 

실습(모듈)

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)

 

결과

 

2. math

import math

print('math.pi :', math.pi)
print('floor(-1.9), trunc(-1.9) :', math.floor(-1.9), math.trunc(-1.9))

 

결과

 

​​

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 파일이 생성됨

결과(sample.txt)

 

 

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의 내용이 출력됨

결과

 

 

'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