학습 순서 1번. 파이썬의 첫 줄부터 시작합니다.
print()로 출력하고, 주석을 세 가지 방식으로 단다- 변수에 값을 대입하고 자료형을 구분한다 — 문자열 · 정수 · 실수 · 복소수
print에서+와,의 차이를 안다 (여기서 초보자가 가장 많이 막힙니다)%문자열 포매팅으로 출력 형식을 다듬는다
| 파일 | 내용 |
|---|---|
helloPython.py |
첫 출력 + PyCharm 단축키 메모 |
dataType1.py |
자료형 5종, + vs ,, str() 변환 |
dataType2.py |
★ % 포매팅 — %s %d %c %f 와 자릿수·정렬 지정 |
sumTest.py |
주석 3종, 산술 연산, 특수문자 이름 목록 |
nameCard.py |
\n 줄바꿈 |
test1.py |
연습문제 — 국어·수학 점수 출력 |
test2.py |
연습문제 — 이름·3과목·총점 출력 |
python3 step01_base/helloPython.py
python3 step01_base/dataType2.py전부 키보드 입력 없이 바로 실행됩니다.
print('이름 : ' + name) # 문자열끼리 이어 붙인다
print('이름 : ', name) # 여러 값을 나열한다 (사이에 공백이 자동으로 들어간다)결과가 미묘하게 다릅니다. , 는 값 사이에 공백을 하나 넣어 줍니다. 그래서 '이름 : ' 처럼 이미 공백을 넣어 두면 공백이 둘이 됩니다.
더 중요한 차이는 타입입니다.
print('나이 : ' + age) # TypeError! 문자열 + 정수는 안 된다
print('나이 : ', age) # OK. , 는 타입을 가리지 않는다
print('나이 : ' + str(age)) # OK. str() 로 바꿔 주면 된다+ 는 "문자열끼리만" 이어 붙일 수 있습니다. 숫자를 섞으려면 str() 로 변환해야 합니다. dataType1.py 가 이 세 줄을 나란히 놓고 보여 줍니다.
user = '이름 : %s\n나이 : %-10d\n' % ('뽀로로', 23)
# └────── 템플릿 ──────────┘ ↑ └── 값 ──┘
# 포매팅 연산자값이 둘 이상이면 튜플로 묶어야 합니다. 하나면 그냥 써도 됩니다.
| 지시어 | 의미 |
|---|---|
%s |
문자열 |
%d |
정수 |
%c |
문자 하나 |
%f |
실수 (기본 소수점 6자리) |
숫자를 붙이면 폭과 정밀도를 지정합니다. dataType2.py 의 tall 4형제를 실행해 비교해 보세요.
'%f' % 183.4 # 183.400000 기본
'%.2f' % 183.4 # 183.40 소수점 2자리
'%10.2f' % 183.4 # ' 183.40' 전체 10칸, 오른쪽 정렬
'%-10.2f' % 183.4 # '183.40 ' 전체 10칸, 왼쪽 정렬 (- 가 왼쪽 정렬)# 한 줄 주석
'''
여러 줄 주석
'''
"""
Doc String — 함수·클래스 바로 아래 쓰면 설명서가 된다
"""''' 와 """ 는 사실 주석이 아니라 문자열입니다. 아무 데도 대입하지 않아 그냥 버려질 뿐이라 주석처럼 쓰입니다. 그래서 sumTest.py 의 특수문자 목록 같은 것도 여기 넣을 수 있습니다.
sumTest.py의 특수문자 목록에는 백슬래시(\)가 들어 있습니다. 문자열 안의\는 특별한 뜻이 있어서 Python 3.12부터 경고가 나고 앞으로는 에러가 됩니다. 그래서 이 파일은r'''''로 시작하는 raw string(있는 그대로 읽는 문자열)으로 바꿔 두었습니다.
f-string 이 표준입니다. Python 3.6부터 쓸 수 있었지만 이 수업 시점에는 아직 % 를 먼저 가르쳤습니다.
# 이 챕터
print('이름 : ' + name)
print('나이 : ' + str(age))
user = '이름 : %s\n나이 : %-10d\n' % ('뽀로로', 23)
# 지금
print(f'이름 : {name}')
print(f'나이 : {age}') # str() 불필요 — 알아서 문자열로 바꾼다
user = f'이름 : {name}\n나이 : {age:<10d}\n'f-string은 값이 쓰이는 자리에 그대로 보여서 읽기 쉽습니다. % 방식은 템플릿과 값이 떨어져 있어 개수가 많아지면 짝을 맞추기 어렵습니다.
정렬·자릿수 지정도 그대로 됩니다.
f'{183.4:.2f}' # '183.40'
f'{183.4:10.2f}' # ' 183.40'
f'{183.4:<10.2f}' # '183.40 ' (%- 대신 < 를 쓴다)그렇다고
%를 몰라도 되는 건 아닙니다. 오래된 코드와 로깅(logging)에서 여전히 만납니다.
dataType1.py에서print('나이 : ' + age)를 직접 써 보고TypeError메시지를 읽어 보세요. 어떤 타입끼리 안 된다고 하나요?dataType2.py의 출력을 전부 f-string으로 바꿔 결과가 같은지 확인하세요.test2.py에 평균을 추가하고 소수점 둘째 자리까지 출력하세요.nameCard.py를 f-string 한 줄로 다시 쓰세요.complex_num = 3+4.07j의 실수부와 허수부를 각각 꺼내 출력하세요. (힌트:.real,.imag)