ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python
    PYTHON 2022. 2. 23. 00:20
    '''
    * 변수 (variable)

    1. 변수는 데이터를 저장하기 위한 공간에 이름을 붙인 것입니다.
    2. 하나의 변수에는 하나의 데이터만 저장 가능합니다.
    3. 언제든지 변경이 가능합니다.
    '''

    # 파이썬은 타입을 작성하지 않습니다.
    # 타입이 없는 게 아니라 동적 타이핑 언어입니다
    num = 10 + 9
    print(type(num))

    num = 50 + 40 # 변수의 값 변경도 일반 선언과 동일합니다.
    print(num)

    # 선언되지 않은 변수는 사용이 불가능합니다.
    # print(result)

    apple = '사과'
     
    '''
    * 식별자 (identifier)

    1. 식별자: 사용자 정의로 데이터에 이름을 붙인 것
    2. 모듈, 패키지, 변수, 함수, 클래스 등의 이름을 식별자라고 합니다.
    3. 식별자 이름은 중복해서 지정할 수 없습니다.
    '''

    # 식별자 이름을 숫자로 지정하거나 숫자로 시작하면 안 됩니다.
    # 7 = 777 (x)
    # 7number = 7
    number7 = 7
    num7ber = 7

    # 식별자 이름에 공백 포함 안 됩니다.
    # my birth day = 19910101 (x)
    my_birth_day = 19910101

    # 키워드를 식별자로 지정할 수 없습니다. (if, while, for)
    # if = '만약에' (x)
    If = '만약에' # 별로...

    # print = '출력하다'
    # print(print)

    #한글, 한자 등 영어 이외의 문자도 가능하긴 하지만 사용을 권장하지 않습니다.
    야옹이 = '고양이' # 별로...
    print(야옹이)
     
    '''
    * 표준 출력 함수 print()
    () 안에 출력하고 싶은 변수, 리터럴 상수, 수식 등을 적으면 터미널에 텍스트 출력을 실행합니다.
    '''

    # 출력할 데이터가 여러 개라면 괄호 안에 출력할 데이터들을 콤마로 나열해서 작성합니다.
    # 여러 개의 값들을 공백과 함께 가로로 나란히 출력합니다.
    dog = '멍멍이'
    cat = '야옹이'
    print(dog, cat, '좋아요~')

    '''
    - print 함수 내부에는 sep이라는 속성이 존재합니다.
    - sep은 separator의 약자로 구분자라고도 부릅니다.
    - sep 속성은 기본값이 ' '(공백 문자열)로 지정되어 있으며,
    만약 변경을 원한다면 sep 속성을 직접 작성하여 변경합니다.
    '''

    print('----------------------------')
    # print(dog, cat, '좋아요~', sep= ' ') --> 기본값
    print(dog, cat, '좋아요~', sep= '')

    '''
    - end 속성은 데이터 출력 이후 맨 끝에 포함할 문자를 지정하는 용도입니다.
    -기본 값은 '\n'이 지정되어 있기 때문에,
    print 함수를 사용할 때마다 자동으로 줄 개행이 되어 있는 것처럼 보입니다.
    '''

    # print(dog, cat, '좋아요~', end= ' ')
    print(dog, cat, '좋아요~', end= ' ')
    print('이 문장은 줄 개행이 됐을까요?')

    print(dog, cat, '좋아요~', sep= '~', end=' ')

    #출력할 내용이 먼저 전달되어야 합니다.
    # print(sep= '~', end=' ', dog, cat, '좋아요~') (x)
     
    '''
    * 정수형 (Integer)
    - 수치형 타입 중 정수형(int)은 양수, 음수의 정수값을 표현하며
    소수점 이하 자리는 표현할 수 없습니다.

    - 다른 언언는 저장 범위가 타입마다 정해져 있지만, 파있너은 메모리가 허용하는 한
    무수히 많은 정수를 저장할 수 있습니다.
    '''

    num = -4321
    print(type(num))

    # 2진수(0b), 8진수(0o), 16진수(0x)를 접두어로 붙여서 표현이 가능합ㄴ디ㅏ.

    a = 0b1011
    b = 0o77
    c = 0xAC00

    # 정수를 다른 진법으로 변경하려면 2진수 변환함수 bin(), 8진수 oct(), 16진수 hex()
    print(bin(33))
    print(oct(0b1110011))
    print(hex(8923))

    '''
    * 실수형 (floation point)
    - 실수형 자료에는 10진수형 소수점 표현 방식과
    지수형 표현 방식을 사용한 실수값을 저장할 수 있습니다.
    '''

    f = 85.432
    print(type(f))

    g = 9.832e13
    print(g)

    h = 9.832e-4

    '''
    * 복소수형 (complex)

    - 복소수는 제곱해서 음수가 되는 가상의 수입니다.
    - 허수를 나타내는 접미사는 j를 사용합니다.
    '''
    i = 1 + 2j
    print(type(i))

    '''
    * 논리형 (boolean)

    - 논리형 데이터 타입은 명제가 참이면 True,  거짓일 경우 False 값을 가집니다.
    '''
    b1 = True
    b2 = False
    #b3 = true (x) 변수로 인식합니다. (앞글자를 대문자로 합니다.)

    # 파이썬은 무자열도 동등 비동등 비교가 가능합니다.
    # 대/소문자까지 정확하게 일치해야만 True를 도출합니다.
    password = 'abc1234!'
    print(password == 'Abc1234!')

     

    '''
    * 문자열 (string)

    - 단일 문자들을 따옴표('', "")로 감싸서 나열한 문자 데이터의 집합 형태입니다.
    - 따옴표 안에 어떤 형태의 데이터가 들어가도 문자로 인식합니다.
    - 전 세계의 모든 문자를 저장할 수 있고, 길이에도 제한이 없습니다.
    '''

    # 나는 그에게 "도와줘" 라고 말했다.
    # 탈출문자를 적용해서(\) 따옴표를 문자로 표현할 수 있습니다.
    s1 = "나는 그에게 \"도와줘\" 라고 말했다."

    # Let's get together!
    s2 = 'Let\'s get together!'

    file1 = 'C:\\temp\\new.jpg'
    print(file1)

    # 문자열 앞에 r이라는 접두어를 붙이면 해당 문자열은 탈출 문자를 적용하지 않습니다.
    file2 = r'C:\temp\new.jpg'
    print(file2)

    anthem = """동해물과 백두산이 마르고 닳도록
    하느님이 보우하사 우리나라만세
    무궁화 삼천리 화려강산
    대한사람 대한으로 길이 보전하세
    """
    print(anthem)

    # \를 문장 끝에 붙여주면 line continue 효과가 있습니다.
    anthem2 = """동해물과 백두산이 마르고 닳도록 \
    하느님이 보우하사 우리나라만세 \
    무궁화 삼천리 화려강산 \
    대한사람 대한으로 길이 보전하세
    """
    print(anthem2)

    '''
    * 문자열 연산

    - 파이썬은 문자열의 덧셈 연산과 곱센 연산을 지원합니다.
    - 덧셈 연산은 문자열을 서로 연결하여 결합합니다.
    '''
    s3 = '오늘 저녁은 '
    s4 = '치킨입니다.'
    print(s3 + s4 + ' 와 맛있겠다')

    '''
    - 파이썬에서는 문자열의 곱셈 연산 또한 지원하고 있습니다.
    - 곱셈 연산자 (*)로 문자열을 정해진 수만큼 반복 연결합니다.
    '''
    print('배고파' * 4)
    print('-' * 30)

    # print(s3 * 1.7) (x)
    # print(s3 * s4) (x)





    name = '홍길동'
    score = 90

    '''
    - 문자열과 정수의 + 연산 진행 시  타입이 일치하지 않아서 에러가 발생하므로,
    타입을 어느 한 쪽으로 맞춰야 합니다.

    -정수나 실수를 문자열로 변환할 때는 str() 내장 함수를 사용합니다.
    '''


    print(name + '의 점수는 ' + score + '점 입니다.')

    # 숫자로 이루어진 문자열을 정수로 변환할 때는 int()를 사용합니다
    n1 = 10
    n2 = '34'
    print(n1 + int(n2))

    # 실수가 저장된 문자열을 실수로 변환할 때는 float()를 사용합니다.
    s = '2.34'
    print(10 + float(s))
    print(10 + float('3.14e-2'))

    #반올림을 할 때는 round() 함수를 사용합니다.
    print('-' * 30)

    print(round(4.78))

    #반올림 할 자리수를 선택하려면 함수의 두번째 값으로 자리수를 지정합니다
    print(round(4.78, 1))




    '''
    * 표준 입력 함수 input()

    -함수 괄호 안에 사용자에게 질문할 내용을 문자열 형태로 작성합니다.

    -input()과 함께 항상 변수를 선언해서 입력값을 받아줘야 하며,
    입력받은 데이터의 타입은 str로 작성합니다.
    '''

    nick = input('별명이?')
    print('내 별명은 ' + nick + '입니다.')

    # 입력값이 만약 정수, 실수라면
    # input 함수 자체를 int(), float() 함수로 감싸면 됩니다.
    # input 함수의 리턴값이 문자열이라고 했으니, 변환함수로 변환해서 사용합니다.

    price = input('음식의 가격: ')
    people = input('사람 수: ')

    print('지불할 가격: ', price * people, '원')


    '''
    * 탈출문 (흐름 제어문) - break, continue, return

    - 반복문은 조건을 만족하는 동안 계속 반복 실행하기 때문에
     한 번 반복이 시작되면 반복 횟수가 끝날 때 까지
     멈추지 않고 반복을 실행합니다.

    - 하지만 중간에 어떠한 이유로 반복을 중지해야 한다거나
     현재 반복을 건너뛰어야 할 경우에 탈출문을 사용합니다.

    * break
    - break는 현재 반복문을 즉시 종료시키고 반복문을 탈출합니다.
    - 일반적으로 특정 조건 하에서 반복문을 종료시키기 때문에
     if문과 같이 사용합니다.
    '''

    for n in range(1, 11):
        if n == 7:
            break
    print(n, end=' ')
    print('\n반복문 종료')

    points = [92, 56, 77, -33, 48]

    for p in points:
        if p < 0 or p > 100:
            print('문제가 발생했습니다')
            print('문제 있는 점수: ', p)
            break

        print(p, '점 처리 완료.')

    '''
    * 무한 루프

    - 무한 루프는 반복 횟수를 정하지 않고 무한하게 반복문을
     실행하는 구조입니다.

    - 사전에 정확한 반복 횟수를 알 수 없을 때 구현합니다.
     탈출문을 통해 종료할 수 있도록 설계하면 됩니다.

    - 파이썬의 무한루프는 while문으로만 작성하며
     for문으로는 구현이 불가능합니다.
    '''

    print('# 먹고 싶은 음식을 입력하세요.')
    print('입력을 중지하려면 "그만" 이라고 입력하세요.')

    while True:
        food = input('> ')
        if food == '그만':
            print('입력을 종료합니다.')
            break

    '''
    * continue

    - break가 반복문을 강제로 종료시켰다면, continue는
    이번 반복 1회차만 건너뛰고, 다음 반복부터는 정상적으로
    실행을 계속하게 하는 탈출문입니다.
    '''
    for n in range(1, 21):
        if n % 3 == 0:
            continue
        print(n, end=' ')



    '''
    * 문자열 인덱싱

    - 파이썬은 문자열을 기본 타입으로 지정했을 뿐만 아니라
    문자열을 관리하는 풍부한 명령을 가지고 있습니다.

    - 문자열은 메모리상에 낱말(단일문자) 하나하나가
    일렬로 늘어선 형태로 저장되는 시퀀스 구조입니다. (순차적 구조)

    - 문자열의 각 문자들은 인덱스(index)로 관리되며
    맨 앞글자부터 0번이 저장되며, 그 뒤로 1씩 순차적으로 증가합니다.
    '''

    s = 'python'
    # [p, y, t, h, o, n]
    print(s)
    print(s[2])
    print(s[-1])
    print(s[-5])

    # 인덱스 범위를 초과한 값을 참조하면 에러가 발생합니다.
    # print(s[6]) (x)

    #문자열도 리스트처럼 순차적 자료형이기 때문에 반복문 for를 통해 단일문자 반복이 가능합니다.
    for n in s:
        print(n, end="!")

    print()

    for day in '월화수목금토일':
        print(day + '요일')



    '''
    * 문자열 슬라이싱

    - 문자열 인덱싱이 단일 문자를 취할 때 사용했다면
    슬라이싱은 문자열 내부의 데이터를 범위를 지정해서
    부분 추출할 때 사용하는 방법입니다.

    ex) 문자열데이터[begin:end:step]

    - range함수처럼 시작인덱스는 포함이지만
    끝 인덱스는 포함하지 않습니다. (미만)
    '''

    s = 'python'
    print(s[2:5:1])
    print(s[1:4]) # step 생략 시 1로 처리됩니다.
    print(s[3:]) # 3번부터 문자열 끝까지 추출합니다.
    print(s[:4]) # 처음부터 4번 미만까지 추출합니다.
    print(s[:]) # ==print(s)

    week = '월화수목금토일'
    print(week[::2])
    print(week[1:6:2])




    '''
    * 문자열 포맷팅

    - 포맷팅은 문자열 사이사이에 다른 타입의 데이터를 넣어서 문자열을 조립하는 방식입니다.
    '''

    apple = 3
    print('사과가', apple, '개 있습니다.')
    print('사과가 %d개 있습니다.' % apple)

    '''
    - 여러 개의 데이터도 하나의 문자열에 포맷팅을 할 수 ㅣㅇㅆ는데,
    이 때는 % 연산자 뒤에 나열할 변수를 ()로 묶어 줍니다.
    '''

    month = 12
    day = 25
    anni = '크리스마스'

    print(month, '월', day, '일은', anni, '입니다.' %(month, day, anni))

    '''
    * format 함수를 사용한 형식 지정 출력

    - 문자열의 format 함수를 사용하면 서식 문자를 지정하는 것보다
    좀 더 유용하고 편하게 문자열 포맷을 사용할 수 있습니다.
    '''
    point = 90
    print('수학 점수: {}점'.format(point))
    print('{}{}일은 {}입니다.'.format(month, day, anni))

    print('{1}{2}일은 {0}입니다.'.format(month, day, anni))

    # 소수점 표현
    pi = 3.141592
    print('원주율은 %.2f입니다.' % pi)
    print('원주율은 {:0.2f}입니다..'.format(pi))

    # f 문자열 포맷팅
    # 파이썬 3.6버전 이후로 사용할 수 있는 기능입니다.
    # 접두어 f를 문자열 앞에 붙여서 사용합니다.
    print(f'{month}{day}일은 {anni}입니다.')

    # {} 안에서는 수식도 사용할 수 있습니다.
    print(f'점수는 {point + 10}점 입니다.')

    print(f'원주율은 {pi:0.4f}입니다.')






    ssn = input('주민등록번호를 입력하세요.')

    print('주민등록번호 앞자리:', ssn[:6])
    print('주민등록번호 뒷자리:', ssn[7:])

    year = ssn[:2]
    month = ssn[2:4]
    day = ssn[4:6]
    gender_num = ssn[7]

    if gender_num == '1' or gender_num == '3':
        gender = '남'

    birth_year = 0

    if gender_num == '1' or gender_num == '3':
        birth_year = 1900 + year
    else:
        birth_year = 2000 + year

    age = 2022 - birth_year

    print(f'{birth_year}{month}{day}{age}{gender}')




    '''
    * 문자열 관리 함수, 메서드

    - 함수: 모듈 내부에서 공용적으로 사용할 수 있는 기능.(단독 호출)
    - 메서드: 클래스에 소속된 함수, 특정 자료형 전용 함수.
     (참조할 문자열을 .앞에 붙임)
    '''

    # 내장 함수 len(): 순차형 자료(sequence)의 내부 데이터 개수를 구합니다.

    s = 'python programming'

    count = 0
    for c in s:
        count += 1
    print('s의 글자 수: ', count)
    print('s의 글자 수: ', len(s))

    '''
    # 문자열 메서드 find(), rfind()
    - 문자열 메서드
    인덱스 번호를 알려줍니다.
    -find()는 앞에서부터, rfind()는 뒤에서부터 탐색합니다.
    '''

    print('-' * 40)
    print(s.find('o'))
    print(s.rfind('o'))

    # program이 문자열 변수 s에 있다면 해당 단어의 첫번째 인덱스를 반환합니다.
    print(s.find('program'))
    # 탐색 시 문자를 발견하지 못했다면 -1를 반환합니다.
    print(s.find('메롱'))

    # 메서드 count(): 문자열 내부에 찾는 단어의 출현 횟수를 반환합니다.
    message = """
    내가 그린 기린 그림은 목이 긴 기린 그림이고
    니가 그린 기린 그림은 목이 짧은 기린 그림이다.
    """

    print('"기린" 단어의 출현 횟수: ', message.count('기린'))
    '''
    - 특정 문자가 있는 인덱스 번호 및 횟수는 관심이 없고,
    단순히 포함 여부만 빠르게 확인하고 싶다면 in 키워드를 사용합니다.
    '''
    print('-' * 30)
    print('a' in s)
    print('q' in s)
    print('z' not in s)
    print('pro' in s)

    '''
    - 사용자에게 데이터를 입력받을 때 입력값의 형태를 검사하는 메서드

    1. isdecimal(): 모든 문자가 숫자 형태인지를 검사합니다.
    2. isalpha(): 모든 문자가 영문 알파벳인지를 검사합니다.
    3. islower(): 모든 문자가 영문 소문자인지를 검사합니다.
    4. issupper(): 모든 문자가 영문 대문자인지를 검사합니다.
    '''

    print('-' * 30)

    print('15 + 8 = ?')

    while True:
        answer = input('> ')

        if answer.isdecimal():
            answer = int(answer)
        else:
            print('정답은 숫자로만 입력해 주세요.')
            continue
       
        if answer == 23:
            print('정답입니다.')
            break
        else:
            print('틀렸습니다.')



    'PYTHON' 카테고리의 다른 글

    python  (0) 2022.03.01
    python  (0) 2022.02.25
    python  (0) 2022.02.25
    python  (0) 2022.02.23
    Python  (0) 2022.02.21
Designed by Tistory.