3. TYPE 01 숫자형과 문자형

azuremei
이동: 둘러보기, 검색

TYPE

  • Type : print()함수에서 사용할수 있는 타입의 종류, 자료의 형태

숫자형

숫자형(number)

  • 정수(int) : -1, 0, 1 등 소수점이 없는 숫자는 양, 음수 관계 없이 모두 포함
  • 실수(float) : 소수점이 있는 숫자.
  • 지수(exponent) : 2-.1e1, 20.1E-1...
    • e, E의 오른쪽 숫자만큼 왼쪽 숫자에서 소수점 이동(e, E의 차이는 없다)
    • 양수이면 그 숫자만큼오른쪽으로 이동, 음수이면 그 숫자만큼 왼쪽으로 이동한다.
    1. 20.1e2 = 20.1 * 10^2(10의 2승) = 2010.0
    2. 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) 남자

풀이 결과

>>>>>펼치기

[펼치기]