3. TYPE 01 숫자형과 문자형
azuremei
목차
[숨기기]TYPE
- Type : print()함수에서 사용할수 있는 타입의 종류, 자료의 형태
숫자형
숫자형(number)
- 정수(int) : -1, 0, 1 등 소수점이 없는 숫자는 양, 음수 관계 없이 모두 포함
- 실수(float) : 소수점이 있는 숫자.
- 지수(exponent) : 2-.1e1, 20.1E-1...
- e, E의 오른쪽 숫자만큼 왼쪽 숫자에서 소수점 이동(e, E의 차이는 없다)
- 양수이면 그 숫자만큼오른쪽으로 이동, 음수이면 그 숫자만큼 왼쪽으로 이동한다.
- 20.1e2 = 20.1 * 10^2(10의 2승) = 2010.0
- 20.1e-2 = 20.1 * 10^-2 = 0.201
- 2진수(binary number) : 0b10(2진수는 반드시 앞에 0b가 온다), 0b11,
- 8진수() : 0o10, 0o16
- 16진수() : 0xa0, 0xb1......
타입 | 입력창 | 결과창 |
---|---|---|
정수 | print(20., -20, 0) | |
실수 | print(20.1, -20.1, ) | |
지수 | print(20.1e1, 20.1E1) | |
지수 | print(20.1e-1, 20.1E-1) |
숫자형 자료의 연산
- 사칙연산 : +, -, *, /
- 제곱연산 : ** >> 2**3의 결과(2*3) = 8
- 나머지 연산 : % >> 5%3의 결과 = 2
- 몫 연산 : // >> 5//3의 결과 = 1
입력창 | 결과창 |
---|---|
num1, num2=1, 3 #[nun1=1, mun2=3] print("[num1 =", num1, ", [num2=", num2, "]", sep="") print("num1+num2=", (num1+num2)) |
※값을 연산하는 행위를 연산이라고 한다.
- 연산을 하는 기호 : 연산자
- 연산의 대상 : 피연산자
- 하나의 값을 만드는 연산을 할 때는 바드시 ()로 묶는다
문자형
문자열
- "123" "abcd"와 같이 따음표로 묶는 것
- 문자열을 만드는 방법
'value', "value", '''value''', """value"""
입력창 | 결과창 |
---|---|
print("1. happy day") print('2. happy day') print("""3. happy day""") print('''4. happy day''') |
1. happy day 2. happy day 3. happy day 4. happy day |
- 각 방법의 사용 용도
- 문자열 내에 , ""룰 삽입할 때 문자열을 나타내는 기호와 동일한 기호로 인식되는 것을 방지하기 위해 쓴다.
입력창 | 결과창 |
---|---|
print(문자열'입니다') | 오류! |
print("'문자열'입니다") | 문자열입니다 |
- 여러 줄 문자열 다루기 :
''', """을 사용한다.
입력창 | 결과창 |
---|---|
print('''파이썬 재밌다''') |
파이썬 재밌다 |
my_string = """파이썬 제밌네?""" print(my_string) print() |
파이썬 재밌네? |
- 문자열을 만드는 escape문자(정규식이나 다른 언어에서도 사용하는 문자이므로 외워두면 좋다.)
- \n 줄바꿈
- \t tab키만큼의 간격
- \\ \하나만을 사용
- \', \" \ 뒤의 문자, 즉 '나 " 하나만을 사용함
- 부득이하게 문자열 내의 따음표와 같은 기호를 사용해야 할 때는 이스케이프 문자를 쓰면 된다.
입력창 | 결과창 |
---|---|
print('\'문자열\'입니다') | '문자열'입니다 |
문자열 연산
- 덧셈(+) : 문자열과 문자를 연결
- 곱셈(*) : 문자열 반복
입력창 | 결과창 |
---|---|
print("안녕"+"하세요") | 안녕하세요 |
print("곱하기"*3) | 곱하기곱하기곱하기 |
my_str="곱셈"*2 print(my_str) |
곱셈곱셈 '곱셈'을 곱한 변수 my_str을 만든 뒤 변수에 대입 |
- '+'과 ','의 차이
- '+' : 연산으로 하나의 문자열을 만들어서 출력
- ',' : 여러 개의 문자열을 나열하여 출력할 뿐
입력창 | 결과창 |
---|---|
print("안녕"+"하세요") | 안녕하세요 |
print("안녕", "하세요") | 안녕 하세요 |
print("안녕", "하세요", sep="") | 안녕하세요 |
- 문자열을 연산할 때 ()를 쓰면 하나의 연산 결과물이 나오게 된다. 두 단계 이상의 연산을 할 때는 괄호를 생활화하자~
- 예) print( ("안녕" + "하세요") *2 )
- print( ("안녕" + "하세요" + "여러분"))
문자열 인덱싱
- indexing : index(색인, 무언가를 가리킨다)
- 인덱싱의 개념을 이해하기 앞서 문자열은 나열된 문자 하나하나의 조합 혹은 나열이라는 것을 먼저 이해해야 한다.
예)"hello" >> h, e, l, l, o
- 이렇게 조합, 혹은 나열된 문자열 중 몇 번재 문자를 사용하고자 할 때 사용한다.
예)"hello" >> h, e, l, l, o >> 이 중에 특정한 문자인 'e'를 뽑아낼 수 있다.
- 인덱싱의 구조 : 문자열 혹은 변수[인덱싱할 문자의 숫자]
- 숫자가 0부터 시작 : 컴퓨터는 0부터 순서를 센다. 즉, 위의 예문으로 보면 h는 사람이 읽을 때는 첫 번째 글자지만 컴퓨터는 0으로 읽는다. 이는파이썬에서 뿐만 아니라 sql이나 엑셀 등에서 문자 관련 함수를 쓸 때도 유념할 것
- 거꾸로 인덱싱하기 : 인덱싱 범위에 음수(-1, -2..)를 넣으면 뒤에서부터 센다. 인덱싱에서 0은 문자열의 가장 앞 글자이기 때문에 사용할 수 없으며 가장 가장 뒷 글자는 -1이 된다.
입력창 | 결과창 |
---|---|
my_str = "without haste, but without rest."32글자 | |
print(my_str) | without haste, but without rest. |
print(my_str[0], my_str[10]) | w s |
print(my_str[32]) | 오류! 인덱스 범위를 초과했기 때문에 오류가 뜬다. |
print(my_str[-1]) | . |
print(my_str[-32]) | w |
print(my_str[-33]) | 오류! 인덱싱 범위를 초과했으므로 오류가 뜬다. |
문자열 슬라이싱
- slicing : 문자를 조각낸다.
- 문자열 인덱싱 개념의 확장으로 인덱싱이 특정 문자 한 개만 추출한다면 인덱싱은 추출하는 문자의 시작 범위와 끝 범위를 제시하여 원하는 만큼 뽑아낼 수 있다.
- 인덱싱의 구조
a=[hello]
- a[0:3] :을 이용해서 인덱스 범위를 지정 >0, 1, 2번쨰의 문자를 추출한다. a[시작 인덱스:끝 인덱스] : 인덱싱에서는 끝 인덱스의 문자는 뽑지 않는다.(시작 인덱스 < a =< 끝 인덱스)
- a[시작 인덱스:] 시작 인덱스에서 끝까지
- a[:끝 인덱스] 처음부터 끝 인덱스 까지
- a[:] 처음부터 끝까지=전체
입력창 | 결과창 |
---|---|
my_str = "without haste, but without rest."32글자 | |
print(my_str) | without haste, but without rest. |
print((my_str[0] + my_str[1] + my_str[2] + my_str[3])) | with |
print(my_str[0:4]) | with |
print(my_str[8:13]) | haste 시작이 0일 필요 없다. |
print(my_str[8:35]) | haste, but without rest. 슬라이싱의 경우 인덱스 초과시 자동으로 마지막까지 출력. |
print(my_str[8:]) | haste, but without rest. 시작 인덱스만 지장(끝까지) |
print(my_str[:4]) | with 끝 인덱스만 지정 |
print(my_str[:-7]) | without haste, but withou 음수로도 슬라이싱 가능 |
print(my_str[:-200]) | 슬라이싱 자체에서 오류는 나지 않지만, 시작부터 뒤에서 200번째는 문자가 없으므로 빈 값이 출력된다 |
print(my_str[:]) | without haste, but without rest. print(my_str)과 같으므로 거의 쓰지 않는다. |
- 슬라이싱의 사용처 : 기존 문자열에서 추출해서 새로운 문자열을 만들 때 사용한다.
- 이미 만들어진 문자열은 변경할 수 없다.
- 문자열을 변경하고 싶을 때는 새로운 문자열을 생성하는 방법밖에 없다. 이 떄 인덱싱을 이용하면 편리하다.
입력창 | 결과창 |
---|---|
my_str = "without haste, but without rest."32글자 | |
print(my_str) | without haste, but without rest. |
my_str[0] = "w" | 오류! 이미 생성된 문자열이라 변경x |
new_str = "W" + my_str[1:] print(new_str) |
Without haste, but without rest. |
문자열 포매팅
- 포매팅 : 문자열 내에 '어떤 값'을 삽입하는 방법
- 문자열 내에서 사용할 값이 변할 때 편리하다. (일반적으로는 변수에서 유용하다.)
- 포멧 코드(서식문자)
- %s : 문자열
- %c : 문자 1개
- %d ; 정수
- %f : 실수(소수)
- %o : 8진수
- %x : 16진수
- 포맷 코드로 포매팅하는 방법 : %(포맷코드)가 삽입된 문자열 %(포매팅 값) 예)print("정수 : %d입니다." % 10)
- 포매팅의 출력 형태
- 원래 정수더라도 포멧코드로 출력되는 순간 '문자열'로 출력된다. -->문자열화
print("문자열 : %s" % "문자열!") -->문자열로 출력 print("16진수 : %x" % 16) / print("16진수 : %x" % 0x10) --> 어떤 값이 오더라도 16진수 형태로 문자화하겠다
- 형변환
- 포캣 코드로 포매팅할 때는 포멧코드의 형식과 값의 형식(type)이 반드시 같아야 한다. 예를 들어 문자열에 삽입하고 싶은 포매팅값이 정수일때는 문자열에 정수의 포맷 코드인 %d를 붙여야 한다.
- 포맷코드와 포맷값이 다를 경우 자동적으로 코드에 따라 형태가 변환된다. 이 때 숫자와 숫자로 타입이 같으면 형태가 변하고 숫자-문자와 같이 타입이 다르면 오류가 발생한다.
- 포매팅 자체가 문자열에서만 사용되며 출력 결과도 문자열로 삽입되므로 %s(문자열 코드)는 모든 포맷값에 사용 가능하다.
입력창 | 결과창 |
---|---|
print("정수>실수 >> %f" % 10) | 10.000000 |
print("실수>정수 >> %d" % 10.123456) | 10 정수화 하기 때문에 소수점은 날아감, 소수점손실 |
print("정수 : %d" % "숫자(str)") | 오류! 문자열>정수(숫자) |
print("문자열 : %s" %10) | 10 |
- 포매팅과 print()함수의 연관성
- 문자열 포멧팅은 프린트함수와 관련이 없다. print는 완성된 물자열을 출려가는 것 뿐이다. 그러브로 print()를 쓰지 않고 변수나 다른 함수에도 사용할 수 있다.
입력창 | 결과창 |
---|---|
my_str = "정수 : %d" %10 print(my_str) |
정수 : 10 |
- 변수를 사용하는 경우
- 계속해서 수정을 해줘야 하는 경우 변수값으로 포멧팅하는 편이 편리하다.
입력창 | 결과창 |
---|---|
year = 2018 | |
print("%d년 입니다." % year) | 2018년 입니다. |
year += 1 print("%d년 입니다." % year) |
2019년 입니다. |
year -= 2 print("%d년 입니다." % year) |
2017년 입니다. |
※ +=/-=은 복합대입연산자이다. 원래 =은 우측->좌측으로 대입하는 것을 나타낸다. +=같은 경우는 year = year+1(-->2018+1=2019)를 가리킨다. 그러나 복합대입연산자는 변수인 year는 그대로 두고 변수값에 +/-를 연산하여 사용할 뿐이다. 그러므로 변수인 year 자체가 변하는 것은 아니다.)
- 실수 포매팅
- %f는 기본적으로 6자리의 소수점이 '반올림으로' 출력된다.
- 포맷코드를 사용한 소수점 지정 : %숫자f
입력창 | 결과창 |
---|---|
print("기본 6자리, 자동반올림 : %f" % 3.166666666666) | 기본 6자리, 자동반올림 : 3.166667 |
print("소수점 지정 (1) : %.1f" % 3.123112354) | 소수점 지정 (1) : 3.1 |
print("소수점 지정 (3) : %.3f" % 3.123112354) | 소수점 지정 (3) : 3.123 |
- 여러 개의 포맷코드를 이용한 포매팅
- % 뒤에다가 소괄호로 묶은 뒤 값을 나열한다.
입력창 | 결과창 |
---|---|
print( "%d개 이상의 %s넣기" % (2, "문자열") ) | 2개 이상의 문자열넣기 |
문자열 연습
1. 출력 연습 [출력 결과] 철수 "안녕? 파이썬 재밌지??" 영희 "응, 너무 재밌어!" 1)두 가지 방식으로 출력 1. 작은따음표 3개 문자열, 이스케이프 문자 사용x 2. 큰따음표 1개 문자열, 이스케이프 문자 사용 o 2)연산 연습 [출력 결과] ******************** <20개 파이썬 최고 <앞에 빈 칸 5칸(띄어쓰기 하지마세요) 파이썬 최고 파이썬 최고 ******************** <20개 1. print()함수 세 개만 사용해서 출력 3)슬라이싱 연습 phone_number = "010-1234-5678" phone_number에서 숫자만 추출하여 number에 저장하기 print(numer) 01012345678만 나오도록 4)슬라이싱 연습2 my_info = "홍길동 - 남자" print(name) 홍길동 print(gender) 남자
풀이 결과
>>>>>펼치기
[펼치기]