파이썬에서 한줄에 여러줄의 코드를 작성하고 싶으면 줄의 구분을 위해 세미콜론을 기입하면 된다.
ex) print("Hello");print("World!")
1. 문자열 객체의 비교
1-1) 값 자체의 비교
값 비교는 비교 연산자 중에 하나인 ==를 사용한다.
1-2) 주소 비교
문자열이 저장되어 있는 저장공간인 주소를 비교하기 위해선 is를 활용한다.
** id메소드를 활용해 문자열의 주소를 알 수 있다. (print(id(str))
one = 1; one_str = '1'; one_str2 = "1"
one_str3 = '''1'''; one_str4 = """1"""
print(one == one_str) # 같은 “값”을 지니는지 확인
print(one_str == one_str2 == one_str3 == one_str4)
print(one_str is one_str2) # 같은 “주소”를 가지는지 확인
one_str_new = str(one)
print(one_str_new == one_str)
print(one_str_new is one_str)
print(id(one)) # 주소 확인 방법
print(id(one_str), id(one_str2), id(one_str3), id(one_str4))
print(id(one_str_new)) # 다른 주소를 지님을 확인할 수 있음
2. Escape Character
\n: new line
\\: Backslash 출력하는 문자
\": 큰 따옴표를 출력하기 위해 이스케이프
\b: 커서가 벡스페이스 실행
\t: 탭
\r: 앞의 문자를 뒤에 문자로 덮어쓰기
ex)
print("New line\n")
print("Backslash\\")
print("Double quote\"")
print("Back space\b")
print("Horizontal tab |\t|")
print("Carriage return\rWow")
3. 문자열 출력 포멧팅
문자열 안에 특정 값을 함께 출력하고 싶을 때 사용하는 방식이며 다음과 같이 세가지의 방법이 있다.
3-1) % 연산자
%d: int, %f: float, %c: char, %o: octal num, %x: hexadecimal num, %%: %
"%0nd" % (숫자): 숫자로부터 n자리수만큼 정수는 최소 만들어야하고 부족하면 0을 패딩한다.(패딩한다 = 채운다)
ex) "03d" % (7) = 007, "03d" % (77) = 077 "03d" % (7777) = 7777(원본 숫자는 손실 x)
"%.nf" %(숫자): 숫자로부터 실수를 출력하여 소수점 아래로 n자리 만큼 출력한다
print("%.2f"%3.3333) = 3.33
print("%f"%3.3333) = 3.333300 (소수점 6자리가 디폴트)
3-2) format 옵션
파이썬 표현식 값을 바인딩할 부분을 중괄호로 표시하고 .format()안에 바인딩할 값을 기술한다.
seven = 7
print("Seven is {}".format(seven))
print("{0:.2f}".format(seven)) # 7.00 format안에 0번째 값
print("{number:.2f}".format(number = seven)) # 7.00 number변수의 값
3-3) 포멧 문자열 리터럴(f-string)
개인적으로 여러 포멧팅 방법중에서 가장 편하다고 생각하며 MO2 의 맨 마지막 부분에서 설명했다.
4. 파일 입출력
4-1) 문자열 입력
문자열 입력(콘솔 입력)으로는 input()함수를 사용한다.
콘솔: 컴퓨터 프로그래밍에서 디버깅, 테스트, 로깅 등에 사용되는 인터페이스(그냥 우리가 코딩하는 창이라고 생각하면 된다.)
4-2) 파일 입출력
open함수를 사용하여 디렉터리에 있는 파일을 열 수 있다.
open함수의 형식은 다음과 같으며, 최소 file과 mode 파라미터를 작성해야 한다.
def open(file, mode = 'r', buffering=None, encoding=None, errors = None, newline=None, clsedfd=True):
[파일 모드의 종류]
'r': 읽기 모드 (read) 파일을 읽기 위한 옵션, 파일이 존재하지 않으면 에러가 뜬다.
'x': 파일을 새롭게 생성 후 내용을 작성, 파일이 존재하면 에러가 뜬다.
'w': 쓰기모드(write), 파일에 덮어쓰기 위한 옵션(이미 파일이 존재하면 모든 내용을 리셋 후 내용을 작성하며 파일이 존재하지 않으면 파일을 생성한 뒤 내용을 작성)
'a': 추가모드(append), w와 비슷하게 쓰기모드이지만 파일이 존재하면 커서를 맨 뒤에다가 가져다가 내용을 이어서 작성(파일이 존재하지 않으면 파일을 생성한 뒤 내용을 작성)
'+': 읽기쓰기모드 지원
't': 텍스트 모드
'b': 바이너리모드(바이트단위 데이터 기록에 사용)
파일을 읽고 쓰고 싶으면 아래와 같이 모드를 사용하면 된다.
r+: 파일을 읽고 쓸 수 있으며, 파일이 이미 존재해야 함.
w+: 파일을 새로 만들거나 기존 파일을 비우고 읽고 쓸 수 있다.
f = open("./Text.txt", 'w') # 쓰기모드
f.write("안녕하세요\n처음뵙겠습니다")
f.close()
f = open("./Text.txt", 'r') # 읽기모드
print(f.readlines()) # 파일의 모든 줄 읽어서 리스트로 보관
f.close()
파일을 열었으면 이제 파일을 읽어내야 하는데 다음과 같은 방법이 있다.
readline: 한줄 한줄씩 읽어낸다.
readlines: 파일의 모든 줄을 읽어서 리스트로 보관한다
enumerate: 인덱스와 원소를 같이 꺼내준다.
ex) for idx,line in enumerate(lines): ##lines는 리스트
f = open("./Text.txt", 'w')
f.write("안녕하세요\n처음뵙겠습니다")
f.close()
f = open("./Text.txt", 'r')
lines = f.readlines()
for index, line in enumerate(lines):
lines[index] = line.strip() # 문자열 양끝 공백들을 제거
print(lines)
f.close()
f = open("./Text2.txt", 'x')
f.write("새로운 파일 생성")
f.close()
f = open("./Text2.txt", 'r')
lines = f.readlines()
print(lines)
f.close()
f = open("./Text.txt", 'x')
f.write("새로운 파일 생성")
f.close()
f = open("./Text2.txt", 'a')
f.write("!!!")
f.close()
f = open("./Text2.txt", 'r')
lines = f.readlines()
print(lines)
f.close()
f = open("./Text3.txt", 'a')
f.write("!!!")
f.close()
f = open("./Text3.txt", 'r')
lines = f.readlines()
print(lines)
f.close()
with open("./Text3.txt", 'a+') as file: # 파일 열람 방식의 또 다른 형태 (with open as)
file.write("???")
file.seek(0) # 파일 포인터의 맨 처음으로의 이동 (seek 함수)
lines = file.read() # 내용 전체를 하나의 문자열로 받기
print(lines)
with open("./Text3.txt", 'a+t') as file: # 디폴트로 마지막에 t가 붙여져왔음
file.write("!!!")
file.seek(0)
lines = file.read()
print(lines)
with open() as f:
f.write("???")
f.seek(0) #파일 포인터의 맨 처음으로 이동
## 끝나면 굳이 파일 클로즈를 안해도 됨.
4-3) 바이트 변환
bytearray: 리스트의 숫자들을 바이트로 전환
file=open("files.txt","wb") # 바이너리 쓰기모드
numbers=[5, 10, 15, 20]
array=bytearray(numbers)
print(array)
file.write(array)
file.close()
file=open("files.txt","rb") # 바이너리 읽기모드
array = bytes(file.read())
print(array)
print(list(array))
file.close()
'💂군대 > KAIST ICT Academy' 카테고리의 다른 글
M11 - 상속과 오버라이딩 (0) | 2024.10.12 |
---|---|
M10 - 클래스와 인스턴스 (3) | 2024.09.21 |
MO8 - 사전과 집합 (1) | 2024.09.18 |
MO7 - 리스트와 튜플 (1) | 2024.09.12 |
MO6 - 함수 매개변수와 반환값 (0) | 2024.09.04 |