Lina's Toolbox

스파르타 내일 배움 캠프 AI 웹개발 과정 복습 | 파이썬 기초 문법 / 리스트, 딕셔너리, 인덱싱, 슬라이싱, split() 등 본문

스파르타 내일 배움 캠프 AI 웹개발 과정/python

스파르타 내일 배움 캠프 AI 웹개발 과정 복습 | 파이썬 기초 문법 / 리스트, 딕셔너리, 인덱싱, 슬라이싱, split() 등

Woolina 2024. 7. 5. 16:59

 

Pycharm 설치/ 등록은 다음 게시글 참조 : https://kimwoolina.tistory.com/8

 

스파르타 내일배움캠프 AI웹개발 과정 | 6일차 복습/Pycharm 설치, 파이썬 기초 문법

Pycharm 설치/ 등록0. Pycharm 다운로드 후 설치하기 https://www.jetbrains.com/pycharm/download/?section=macwindows 의 경우에는 installation options 다음과 같이 체크 1. JetBrains 회원가입https://account.jetbrains.com/licenses 

kimwoolina.tistory.com

 


 

변수

값을 담는 박스. 메모리 공간을 가리키고 있다. (이 공간과 연결)

변수이름 = 값의 형태로 작성.

 

연산

a//b  # 3 (몫)
a%b   # 1 (나머지)
a**b  # 49 (거듭제곱)

 

Boolean 자료형의 활용

x = True   # 참
y = False  # 거짓

# 소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러가 납니다~
z = true   # name 'true' is not defined

True = 1   # (에러) True/False는 변수명으로 쓸 수 없어요!

 

4 > 2      # True  크다
5 < 1      # False 작다
6 >= 5     # True  크거나 같다
4 <= 4     # True  작거나 같다
3 == 5     # False 같다
4 != 7     # True  같지 않다

a = 4 > 2  # True
not a      # False    NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다.

a and b    # False    AND 연산자로 모두 참이어야 참을 반환한다.
a or b     # True     OR 연산자로 둘 중 하나만 참이면 참이다.

# Print(4 > 2) -> True 출력
# 이런 형태로 활용 가능

 


문자열 자료형

 

'문자들의 모임'

# 작은 따옴표 또는 큰 따옴표. 둘 다 같아요!
a = "aa"
b = 'aa'

# 따옴표로 감싸지 않으면 변수이름을 뜻하기 때문에 꼭 구분해서 써야합니다!
a = 1
b = "a"
c = a
print(a, b, c) # 1 "a" 1

 

문자열 연산

first_name = "Harry"
last_name = "Potter"

first_name + last_name  # HarryPotter
first_name + " " + last_name  # Harry Potter

a = "3"
b = "5"
a + b    # 35

 

 

🚨 문자열과 정수를 더하면 에러가 발생하니 주의!

a = "3"
a + 5    # 문자열과 숫자형은 더할 수 없어서 에러!

 

문자열 메소드(method)

# 모든 알파벳을 대문자/소문자로 바꾸기

sentence = 'Python is FUN!'

sentence.upper()  # PYTHON IS FUN!
sentence.lower()  # python is fun!

 

# 특정 문자를 기준으로 문자열을 나누기

# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'

result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :))

result[0] # test (리스트의 첫번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소

result2 = result[1].split('.') # ['gmail','com']

result2[0] # gmail -> 우리가 알고 싶었던 것
result2[1] # com

# 한 줄로 한 번에!
myemail.split('@')[1].split('.')[0]

 

# 특정 문자를 다른 문자로 바꾸기

txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'

 

 

인덱싱과 슬라이싱

 

인덱싱 : 문자열을 한 글자 씩 부를 때는 몇 번째인지 '인덱스'를 넣어 불러서 인덱싱이라고 한다.

f="abcdefghijklmnopqrstuvwxyz"
f[1]   # b 파이썬은 숫자를 0부터 셉니다

 

 

슬라이싱 : 문자열의 일부를 잘라낼 때.

f[4:15]  # efghijklmno           f[4]부터 f[15] 전까지, 총 15-4=11개!

f[8:]    # ijklmnopqrstuvwxyz    f[8]부터 끝까지, 앞의 8개 빼고!
f[:7]    # abcdefg               시작부터 f[7] 전까지, 앞의 7개!

f[:]     # abcdefghijklmnopqrstuvwxyz  처음부터 끝까지

 

# 특정 문자열로 자르고 싶을 때 split('문자열')을 활용

myemail = 'abc@sparta.co'

domain = myemail.split('@')[1].split('.')[0]
print(domain)

 


리스트

   순서가 있는, 다른 자료형들의 모임

a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]

# 리스트에는 다른 자료형들을 한번에. 심지어 또다른 리스트도 넣을 수 있다 !
a_list = [2,'배', 'False', ['사과','감']]
print(a_list[3][1]) # 감

 

 

# 리스트의 길이도 len() 함수를 사용해서 잴 수 있어

a = [1, 5, 2]
print(len(a))   # 3

b = [1, 3, [2, 0], 1]
print(len(b))   # 4

 

 

# 순서가 있기 때문에, 문자열에서처럼 인덱싱과 슬라이싱을 사용할 수 있다.

a = [1, 3, 2, 4]
print(a[3])  # 4
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)

 

 

# -1 인덱스는 무조건 제일 마지막 요소가 출력됨 !

a_list = [1,5,6,3,2]

list[-1] = 2

 

 

# 요소가 리스트 안에 있는지 알아보기

print(5 in a_list)# True 혹은 False가 출력된다.

 

 

 

리스트 정렬(Sorting)

  • sort 함수는 리스트명.sort( ) 형식으로 "리스트형의 메소드"​​이며 리스트 원본값을 직접 수정 => return 을 해주는 게 아니므로 이 값을 변수에 넣어주면 None이 나오므로 주의!!
  • sorted 함수는 sorted(리스트명) 형식으로 "내장 함수"이며 리스트 원본 값은 그대로이고 정렬 값을 반환
# List Sorting

a_list = [1,5,6,3,2]

# sort()
# 원본을 정렬하고 수정(in-place)

# 오름차순
a_list.sort()

# 내림차순
b_list = a_list.sort(reverse = True) 

print(a_list) # [1, 2, 3, 5, 6]
print(b_list) # None

# sorted
# 원본은 유지하고 정렬한 새 리스트를 만듦
c_list = sorted(a_list)

 

 


딕셔너리

딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 자료의 모임. 리스트와 달리 순서가 없다.

# 딕셔너리를 만드는 데는 여러가지 방법을 쓸 수 있다.

a = {"one":1, "two":2}

# 빈 딕셔너리 만들기
a = {}
a = dict()

one이 two 보다 순서가 먼저인 게 아님. 순서라는 개념 자체가 없음!

 

# 딕셔너리의 요소에는 순서가 없기 때문에 인덱싱을 사용할 수 없다.

person = {"name":"Bob", "age": 21}
print(person[0])   # 0이라는 key가 없으므로 KeyError 발생!

 

 

# 딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있다.

person = {"name":"Bob", "age": 21}

person["name"] = "Robert"
print(person)  # {'name': 'Robert', 'age': 21}

person["height"] = 174.8
print(person)  # {'name': 'Robert', 'age': 21, 'height': 174.8}

 

 

# 딕셔너리의 밸류로는 아무 자료형이나 쓸 수 있다. 
# 심지어 다른 딕셔너리를 넣을 수도 있다.

person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"])             # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"])  # 92

 

 

# 딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때는 in을 사용

person = {"name":"Bob", "age": 21}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True

 

 

# 리스트와 딕셔너리의 조합

people = [{'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}]

# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'

person = {'name': 'john', 'age': 7}
people.append(person)

# people의 값은? [{'name':'bob','age':20}, {'name':'carry','age':38}, {'name':'john','age':7}]
# people[2]['name']의 값은? 'john'

 

 


조건문

# 다양한 조건을 판단할 때는 elif 사용

age = 27
if age < 20:
    print("청소년입니다.")
elif age < 65:
    print("성인입니다.")
else:
    print("무료로 이용하세요!")

 

 

 

반복문

# 나이 출력

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    if person['age'] > 20:
        print(person['name'])

 

 

# enumerate
#인덱스와 원소로 이루어진 튜플(tuple)을 만들어준다.

for entry in enumerate(['A', 'B', 'C']):
	print(entry)

#출력
#(0, 'A')
#(1, 'B')
#(2, 'C')

for i, letter in enumerate(['A', 'B', 'C']):
	print(i, letter)

#0 A
#1 B
#2 C

 

 

# break문

# 앞에 5개만 출력하고 싶은 경우

fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']

for i, fruit in enumerate(fruits):
    print(i, fruit)
    if i == 4:
        break

 

 

함수

반복적으로 사용하는 코드들에 이름을 붙여놓은 것

# 주민등록번호를 입력받아 성별을 출력하는 함수 만들기

def check_gender(pin):
    num = pin.split('-')[1][:1] 
    if int(num) % 2 == 0:
        print('여성')
    else:
        print('남성')

my_pin = "200101-3012345"
check_gender(my_pin)

[:1] 문자열 첫번째 글자


 

저번주에 웹종반을 완강하고 금요일부터 파이썬 기초/심화 강의들을 수강하기 시작했다!

프로그래밍 언어가 보통 비슷해서 90% 정도는 아는 내용

lambda나 filter처럼 코딩 하다가 본 적은 있지만 따로 문법 시간에 배운 적은 없었던 것도 있었다.