2023. 2. 15. 07:12ㆍIT/PYTHON
인프런에 있는 남박사님의 강의 남박사의 파이썬 기초부터 실전 100% 활용 를 듣고 정리한 필기입니다. 😀
변수 및 사용 방법
변수란?
- 변수는 데이터를 저장하는 바구니 입니다.
👱 변수 이름 정하는 규칙
- 변수명은 반드시 영문자로 시작해야합니다.
- 변수명은 대소문자를 구분합니다.
- 변수명은 권장하진 않지만 한글로도 가능합니다.
- 변수명은 띄어쓰기를 할 수 없습니다.
- 변수명은 내장 키워드를 사용 할 수 없습니다.
자료형 int, float, bool, None
파이썬에서의 자료형
파이썬에서는 변수를 선언할 때 자료형을 따로 선언하지 않고 사용합니다.
C# 에선
var썼는데 파이썬에서는 이것조차 생략하나보다.
정수(int)
- 정수는 수학에서 자연수, 자연수의 음수 및 0을 통틀어 이르는 말입니다. 즉, ...-2, -1, 0, 1, 2... 등의 따위의 수를 말합니다.
a = 0
b = -1
c = 1
print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))
💎출력💎
0
<class 'int'>
-1
<class 'int'>
1
<class 'int'>type()- 괄호안에 임의의 자료형을 넣으면 어떤 자료형인지 알려주는 역할을 합니다.
print()- C#의 Console.WriteLine()과 동일하게 화면에 문자열을 출력하는 역할을 합니다.
실수(float)
- 실수는 유리수와 무리수를 통틀어 이르는 말입니다. 즉, 정수에 소숫점이 달려있는듯한 모습을 하고 있습니다.
a = 0.0
b = -0.1
c = 0.1
print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))
💎출력💎
0.0
<class 'float'>
-0.1
<class 'float'>
0.1
<class 'float'>불리언(bool)
- True, False만을 가지는 자료형입니다. 주로 조건문의 결과, 함수를 실행했는데 실행 결과가 참이냐 거짓이냐 판별할 때 사용합니다.
True와 False의 첫글자는 꼭 대문자를 써야만 인식하네요.
a = True
b = bool(False)
c = 2 > 1
d = bool(1)
e = bool(0)
print(a)
print(type(a))
print(b)
print(type(b))
print(c)
print(type(c))
print(d)
print(type(d))
print(e)
print(type(e))
💎출력💎
True
<class 'bool'>
False
<class 'bool'>
True
<class 'bool'>
True
<class 'bool'>
False
<class 'bool'>bool()- 0이외의 숫자를 입력하면 True가 되고, 0이 입력되면 Fasle가 됩니다.
C언어에서 동작했던거랑 똑같네!
- 0이외의 숫자를 입력하면 True가 되고, 0이 입력되면 Fasle가 됩니다.
None
- 아무것도 없는 자료형입니다.
C#에서는
null과 동급입니다.
a = None
print(a)
print(type(a))
💎출력💎
None
<class 'NoneType'>문자열(str)
- 문자열은 문자들의 모임을 말합니다. 파이썬에서는 문자면 모두 문자열이라고 생각하면 됩니다.
a = "Hello python"
b = """Hello python
"""
c = '''Hello python
'''
print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))
💎출력💎
Hello python
Hello python
Hello python
<class 'str'>
<class 'str'>
<class 'str'>"Hello python"- 쌍따옴표를 문자열 시작점과 끝점에 붙이면 파이썬은 str자료형으로 인식합니다.
""" """- 쌍따옴표 3개를 붙이고 문자열 안에 [Enter]를 입력하면, 자동으로 \n 이 붙습니다. 따옴표 3개도 동일하게 동작합니다.
이스케이프 문자
- 문자열 중간에 \n과 같이 입력되는 형태를 이스케이프 문자라고 합니다.
- \n : 줄바꿈
- \t : 탭
- \ : ''(역슬래쉬)
- ' : '(따옴표)
- " : "(쌍따옴표)
문자열 연산
- 문자열끼리 합치거나, 특정 문자열을 몇 번 반복할 지 표현할 수 있는것이 문자열 연산입니다.
a = "Hello"
b = "python"
print(a + "\t" + b)
print("*" * 40)
💎출력💎
Hello python
****************************************👱문자열 인덱싱
- 문자열 인덱싱은 어떤 요소들의 집합에서 내가 원하는 뭔가 한개를 꺼내오는 것을 말합니다. 예를 들어서,
a = "test python string"이라는 문자열에서 첫번째 글자인 't'를 가지고 오려면a[0]이라고 표현하면 됩니다. 맨 마지막 글자인 'g'를 가지고 오려면a[17]로 표현 할 수 있지만a[-1]로도 표현이 가능합니다.
a = "test python string"
print(a[0])
print(a[17])
print(a[-1])
💎출력💎
t
g
g👱문자열 슬라이싱
- 문자열 슬라이싱은 어떤 요소들의 집합에서 내가 원하는 범위 만큼 잘라내는것을 말합니다. 예를 들어서,
a = "test python string"이라는 문자열에서 첫번째 글자부터 2개의 문자열을 잘라낼려면a[0:2]로 표현합니다. 또한a[:2]처럼 첫번째 글자부터 슬라이싱 하는 경우라면 0은 생략이 가능합니다. 세번째 글자부터 맨끝까지 슬라이싱 하려면a[3:]으로 표현 할 수 있습니다.
a = "test python string"
print(a[0:2])
print(a[0:10])
print(a[0:1000])
print(a[:10])
print(a[3:])
💎출력💎
te
test pytho
test python string
test pytho
t python string👱문자열 포맷팅
- 문자열 속 특정한 위치에 특정한 값을 삽입해주는것을 의미합니다. 문자열의 {} 순서에 맞게
format()안에 표시할 변수나 상수를 입력합니다.
old = 40
speed = 12.5
print("나는 {}살이고 100미터 기록은 {}초 입니다.".format(old,speed))
💎출력💎
나는 40살이고 100미터 기록은 12.5초 입니다.- 파이썬 3.6 이상부터는 보간법을 지원합니다.
f"난 {country}사람이고 이름은 {name} 입니다"형태 처럼 순서를 생각할 필요 없이 문자열 알에 바로 변수를 넣어주는 방식입니다.개인적으로는 이게 제일 직관적이고 코딩양도 적어보임.
name = "쿠루가이"
country = "한국"
age = 40
print(f"난 {country}사람이고 이름은 {name}이며 나이는 {age}입니다.")
💎출력💎
난 한국사람이고 이름은 쿠루가이이며 나이는 40입니다.문자열 메서드
- 문자열에는 특정 문자열 찾기, 치환하기, 공백 지우기 등 여러 유용한 메서드들이 있습니다.
메서드는 어떤 행위를 해서 결과를 알려주는 목적으로 기능을 하는 놈입니다. C언어의 함수랑 동일한 기능을 합니다.
👱문자열에서 특정 문자열을 찾는데 사용하는 메서드
str.find()와str.index()는 사용법도 같고, 문자열을 찾았을 때 문자열 인덱스를 리턴하는 값도 동일합니다. 다른점은 문자열을 찾지 못했을 때 입니다.str.find()는 -1을 리턴하는것에 반해str.index()는 에러를 표시합니다.
test = "abcd 가나다라마바사"
print(test.find("가"))
print(test.index("가"))
print(test.find("zz"))
print(test.index("zz"))
💎출력💎
5
5
-1
Traceback (most recent call last):
File "c:\Users\hwyoo\Documents\int.py", line 7, in <module>
print(test.index("zz"))
ValueError: substring not foundstr.find()메소드는 찾은 문자열의 인덱스를 리턴하니까문자열 슬라이싱에 응용할 수 있습니다. 가령path = "C:\\test\\abcd\\abcde.jpg"의 경로를 가진 문자열이 있는데 경로명은 지우고 파일명만 가져오고 싶다면str.rfind()메서드와문자열 슬라이싱조합을 이용하면 됩니다.
path = "C:\\test\\abcd\\abcde.jpg"
print(path[path.rfind("\\") + 1:])
💎출력💎
abcde.jpgstr.rfind("\\")+1- 찾는 방향이 문자열을 오른쪽 부터 찾아서 인덱스 값을 리턴하는 메소드입니다. 여기서 +1을 해준 이유는 우리가 원하는 파일명만 출력할 수 없기 때문입니다. +1 없이 사용한다면
"\abcde.jpg"형태로 리턴합니다.파일명은 오른쪽에 위치하므로
str.rfind()와는 찰떡 궁합입니다.
- 찾는 방향이 문자열을 오른쪽 부터 찾아서 인덱스 값을 리턴하는 메소드입니다. 여기서 +1을 해준 이유는 우리가 원하는 파일명만 출력할 수 없기 때문입니다. +1 없이 사용한다면
특정 문자열을 기준으로 문자열을 잘라서 리스트 형태로 저장하는 메서드
str.split()메서드를 사용하면 지정한 문자열을 기준으로 문자열을 잘라서 리스트 형태로 저장합니다.
path = "C:\\test\\abcd\\abcde.jpg"
result = path.split("\\")
print(result)
print(result[0])
💎출력💎
['C:', 'test', 'abcd', 'abcde.jpg']
C:str.split("\\")\\을 기준으로 4개의 문자열 리스트가 만들어졌습니다. 이 잘라진 문자열 리스트에 접근하기 위해서는 문자열 인덱싱에서 표현했던것과 동일하게 하면 됩니다. 소스에서와 같이 0번째 인덱싱하려면result[0]으로 표현합니다.남박사님이 리스트는 아직 배우지 않았기 때문에 여기서는 간단하게만 설명한다고 합니다.
👱문자열을 치환하는 메서드
str.find()가 문자열을 찾는 기능이였다면str.replace()는 찾은 문자열을 지정한 문자열로 치환(바꿔주는)하는 기능입니다.MS OFFICE의
찾아 바꾸기기능이라고 이해하면 편합니다.
a = "안녕"
result = a.replace("안녕","헬로")
print(result)
💎출력💎
헬로str.replace("안녕","헬로)- "안녕" 이라는 문자열을 찾아서 "헬로"로 변경하였습니다.
C#에서는 정규 표현식 써서 바꿨었는데 파이썬은 엄청 쉽게 되네~
- "안녕" 이라는 문자열을 찾아서 "헬로"로 변경하였습니다.
👱문자열의 공백을 지워주는 메서드
- 공백은 눈에 보이지 않아서 문자열 처리를 할 때 의도치 않은 결과를 낳는 경우가 비일비재합니다. 이때 사용하는 것이
str.strip()을 사용하면 문자열 기준으로 앞뒤 공백을 지워줍니다.가운데 공백은 못 지우네~
a = " 안 녕 "
result = a.strip()
print(a)
print(result)
💎출력💎
안 녕
안 녕대문자와 소문자로 바꿔주는 메서드
"AbCd"라는 대소문자가 섞여 있는 문자열이 있다고 합시다. 이것을 모두 대문자 또는 소문자로 바꿔주는 메서드가 있습니다. 대문자로 바꿀려면str.upper()를 사용하면 되고 소문자로 바꿀려면str.lower()를 사용하면 됩니다.당연하겠지만...한글은 대소문자가 없으니 무의미한 짓이다!!!!
a = "AbCd"
print(a.upper())
print(a.lower())
💎출력💎
ABCD
abcd
대소문자 구분 없이 입력되는 시스템을 만들 때 유용할 것 같은 느낌적인 느낌이 있다!
👱문자열 길이 및 특정 문자열 개수를 세어주는 메서드
"aaaabbbbccccdddd"라는 문자열에서"a"의 개수를 알고 싶다면str.count()를 사용하면 됩니다.str의 전체 길이가 알고 있다면str.len()메소드를 사용합니다.
a = "aaaabbbbccccdddd"
print(a.count("a"))
print(len(a))
💎출력💎
4
16어떤 데이터 타입인지 확인하는 메서드
- 사용자에게 문자열을 입력 받았을 때, 이게 숫자인지, 알파벳인지 검사해야 될 때 사용하는 메소드는 다음과 같습니다.
str.isalpha()bool타입으로 알파벳이면True, 아니면False를 리턴합니다.
str.islower()bool타입으로 소문자면True, 아니면False를 리턴합니다.
str.isupper()bool타입으로 대문자면True, 아니면False를 리턴합니다.
str.isdecimal()bool타입으로 10진수이면True, 아니면False를 리턴합니다.
str.isdigit()bool타입으로 아라비아 숫자이면True, 아니면False를 리턴합니다.
str.isnumeric()bool타입으로 로마 숫자, 아라비아 숫자이든 숫자 자체인지 판단하는 메서드로 숫자이면True, 아니면False를 리턴합니다.iii같은 로마 숫자,½같은 숫자관련 특수문자 등도True로 반환합니다. 신기신기!
👱클래스 구조를 확인하는 메서드(str 메서드 아님)
- 지금까지 문자열 관련 메서드를 살펴보았는데 소개한 것 이외에도 다양한 메서드가 존재합니다. 이럴경우 구글에서 api문서를 찾아보거나
dir()메서드로 클래스의 구조를 살펴볼 수 있습니다. 사용 방법은()안에 살펴볼 클래스명을 입력하면 됩니다. 이때까지 사용했던 str 클래스를 볼려면dir(str)을 입력합니다.
a = "abcd"
print(type(a))
print(dir(str))
💎출력💎
<class 'str'>
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']type(a)- a라는 변수의 타입을 먼저 조사합니다. 여기서는
str이라는 클래스 타입이라고 출력되었습니다.
- a라는 변수의 타입을 먼저 조사합니다. 여기서는
dir(str)- str 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던,
find(),count()등 이 보입니다.
- str 클래스의 구조를 살펴봅니다. 우리가 앞에서 배웠던,
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄'IT > PYTHON' 카테고리의 다른 글
| [Python] Selenium 설치 및 기본적인 웹 자동화 해보기 (0) | 2023.05.05 |
|---|---|
| [PYTHON] Ch 2-1. 파이썬의 데이터 구조 : 리스트 list() (0) | 2023.02.15 |
| [PYTHON] 숫자 야구: 프로젝트 (0) | 2020.12.27 |
| [PYTHON] 로또시뮬레이션 (0) | 2020.12.27 |
| [PYTHON] 파일 읽고 쓰기(과제 : 코딩에 빠진 닭, 단어장만들기, 단어퀴즈, 고급단어장) (0) | 2020.12.26 |
| [PYTHON] RANDOM 모듈, DATETIME 모듈, INPUT함수(과제 : 숫자맞추기 게임) (0) | 2020.12.26 |
| [PYTHON] 리스트와 문자열 관계 정리(과제 : 자릿수 구하기, 주민등록번호 가리기, 팰린드롬) (0) | 2020.12.25 |
| [파이썬] 사전(Dictionary) 문제 / 정답 (0) | 2020.12.19 |