Introduction
- Python
- 1990년 암스테르담의 Guido van rossum이 개발한 interpreter 언어
- 본인이 좋아하는 코메디쇼에서 따옴.
- 소스 코드를 한줄씩 해석 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어
- 사전적 의미: 고대 신화에서 나오는 뱀 (그래서 마크가 뱀).
- Compiled language: Interpreter 언어와 반대. 코드가 실행되기 전 컴파일러를 거쳐 기계어로 모두 변환되어 실행되는 언어로 interpreter를 거치지 않아 속도가 상대적으로 빠름.
- Python의 이점: 공동 작업과 유지 보수가 쉽고 편리, 오픈소스(무료), 쉽게 직관적으로 뜻을 알 수 있음.
- Programming: 인간이 생각하는 것을 컴퓨터에 지시하는 행위.
- Python으로 할 수 있는 일
- 데이터 분석
- 인공지능과 머신러닝, 딥러닝
- 웹 프로그래밍
- 수치 연산 프로그래밍(C언어가 더 빠르나 Numpy 수치 연산 모듈로 가능)
- 데이터 베이스 프로그래밍
- 시스템 유틸리티 제작
- 사물 인터넷
- Python 으로 할 수 없는 일
- 시스템과 밀접한 프로그래밍 영역(엄청난 횟수의 반복 및 연산이 필요한 프로그램을 만드는 것은 어려움.
- 매우 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 적합하지 않음
- 모바일 프로그래밍(구글이 가장 많이 애용하는 언어지만, android native app을 개발하긴 어려움)
- Python 실행 방법: Google Colab, Jupyter Notebook
Today's Curriculum
- 자료형과 기본 자료형
- 자료형 확인하기
- 문자열 만들기
- 문자열 연산자
- 숫자 자료형
- 숫자 연산자
- 변수 설정
- 사용자 입력 받기: input()
- 숫자와 문자열의 다양한 기능: str.format() 메서드(함수)
- 대소문자 바꾸기
- 문자열 찾기: str.find(), str.rfind()
- 문자열 자르기: str.split()
- 문자열과 in 연산자
자료형
- 개발자들이 쉽게 사용할 수 있도록 기능과 역할에 따라 자료를 구분
- 문자열(string): 메일 제목, 메세지 내용 등 e.g. "안녕하세요", "Hello World"
- 숫자 (number, integer) : 물건의 가격, 학생의 성적 e.g. 52, 273, 103.3
- 불 (boolean) : 로그인 상태 e.g. True, False
자료형 확인하기 및 문자열 만들기
- type() 함수
- print() 함수
- 이스케이프(escape) 문자를 사용해 문자열 만들기
- \'(가독성을 위해 줄바꿈 한 것이지 실질적인 줄바꿈이 아니라는 것을 나타낼 때도 사용) , \'', \n (문단이 바뀜), \t(탭), \\
- \n을 일일이 입력해도 되지만, 따옴표 3개를 앞 뒤로 입력하면 자동 문단이 바뀜(""" """)
문자열 연산자
- 숫자에는 더하기, 빼기, 곱하기, 나누기 연산을 할 수 있음
- 연산자는 숫자나 집합과 같이 같은 특성을 가진 그룹에 종속 됨 (즉, 끼리끼리만 사용 가능)
문자열 연산자(인덱싱)
- 문자 선택 연산자는 문자열 내부의 문자 하나를 선택하는 연산자
- 대괄호 [] 안에 선택할 문자의 위치를 지정, 이 숫자를 인덱스(index)라고 함
- Python: 숫사를 0부터 셈 (zero index)
- 마이너스를 붙이면 역으로 세는 것. 이때는 -1부터 시작.
- 범위 지정시 '마지막 숫자를 포함'
- 범위 지정시 '마지막 숫자 미포함' (파이썬)
- :: 는 뒷 숫자만큼 띄어서 세는 것 e.g. ::3의 경우 세번씩 띄어서 글자를 세는 것, ::-2는 두번씩 띄어서 역으로 글자를 세는것.
- 문자열의 길이 구하기 print(len())
숫자 자료형
- 정수형: 소수점이 없는 숫자 (int)
- 실수형: 소수점이 있는 숫자 (float)
- 사칙연산자: +,-,*,/
- _는 인식하지않고 넘어감. 가독성을 높이기 위해 사용. e.g. 1000000 --> 100_00_00
변수: 값을 저장할 때 사용하는 식별자
- e.g. pi=3.14...
- Q) 원의 둘레와 넓이 구하기 (원주율: 3.14, 반지름: 10)
- 정의해 주는 자료형으로 인식하고 출력함 (?)
- 복잡 대입 연산자
변수명을 만들 때 지켜야할 사항
- 키워드를 사용하면 안됨: help("keywords")로 확인 가능
- 특수문자는 언더 바(_)만 사용가능
- 숫자로 시작하면 안됨
- 공백을 포함할 수 없음
사용자 입력 받기: input() **여기서부터 이해가 잘 안가기 시작, 집중!!**
- Input으로 사용자 입력을 받을 때, 자료형을 잘 파악하기 --> 아님 error
- 자료형을 모르겠으면 type()을 써서 확인하기
- 각 함수에 알맞은 자료형을 입력해야함 e.g. int(문자열 or 소수점) 입력하면 error
- 소숫점 or 실수 or 문자열 등 어떤 값을 넣어도 각 함수에 맞는 자료형으로 출력
e.g. int(5.23) --> 5, float(5) --> 5.0 - 이때, 문자열을 입력할 때는 함수에 맞는 값을 넣어줘야 error 나지 않음.
e.g. int('53') --> 53 (정수형), int('53.2') --> error, int(float('53.2')) --> 53.2 (정수형)--> ?? - Q) inch 단위를 입력으로 받아서 cm로 단위를 변경해주는 프로그램 만들기 (1 inch = 2.54 cm).
A) 1. 문제를 만들어주기 (다른사람이 보는 부분) a= input('숫자를 입력해 주세요>')
2. input의 문자열을 정수로 변환시켜주기 b= int(a)
3. 식의 조건 입력 one_inch=2.54, cm = one_inch*b
4. 출력되는 문구 입력 (다른사람이 보는 부분) print('입력값: ', b, 'inch', '출력값: ', cm, 'cm')
(이때 print 뒤에 순서대로 보여야하는 문자열은 "" 사용해서 입력한 뒤 콤마를 쓰면 그 문자열에 대한 설명)
format 함수
- format 함수: 문자열을 정리하거나 문자열 중간에 특정 변수의 값을 넣어주기 위해 사용하는 함수.
e.g. print('2*3=6') --> print('{0}*{1}'=6.format(a,b,a*b)) - format 함수 사용법: '{인덱스0},{인덱스1}'.format(값0,값1)
e.g. print('인치값 { } inch'.format(16.3)) --> 인치값 16.3 inch
number = 10, print('숫자는 { } 입니다.'.format(number)) --> 숫자는 10 입니다.
문자열 양옆의 공백 제거하기: str.strip( )
- print('a ',stript()) --> a
문자열 찾기: str.find( ), str.rfind( )
- str.find( ): 왼쪽부터 찾아서 처음 등장하는 위치를 찾음
- str.rfind( ): 오른쪽부터 찾아서 처음 등장하는 위치를 찾음
문자열 자르기: str.split( )
- str.split( ): 문자열을 특정한 문자로 자를때 사용
e.g. string="10 20 30" string.split(",") --> "10", "20", "30"
문자열의 in 연산자 및 find 함수
- 문자열 내부에 어떤 문자열이 있는지 확인할 때 사용
e.g. print("안녕" in "안녕하세요") --> True
'안녕하세요'.find('안녕') --> 0
Daily Quiz
- 구의 부피와 겉넓이를 구하는 프로그램을 만드시오 (반지름을 입력값으로 받기)
- 직각 삼각형의 밑변과 높이를 받아서 빗변의 길이를 구하는 프로그램을 만드시오.
질문) input 뒤에 단위를 넣으려면? e.g. 반지름의 값을 입력하세요 > xx cm
질문) 다른 답의 경우 format 함수를 사용했는데, 아래에서 {:2f}가 의미하는 것은?
느낀점
- 내용자체가 그리 어렵진 않은데, 입력값을 받는다할 때 개념이 없다보니 멘붕. 다시 찬찬히 보니 이해됨.
- 용어들이 일단 모두 생소해서 어렵게 느껴지지만 시간을 투자하는 방법 뿐일 듯 싶다.
- 하루에 진행되는 수업 진도가 꽤 많다. 바짝 따라가야함.
'TIL > Python (w Numpy)' 카테고리의 다른 글
24.05.13 API호출 (0) | 2024.05.13 |
---|---|
24.05.10 Python (0) | 2024.05.10 |
24.05.09 Python (0) | 2024.05.09 |
24.05.08 Python (0) | 2024.05.08 |
24.05.07 Python (0) | 2024.05.07 |