본문 바로가기

학습 내용 정리/python

파이썬 문법 뽀개기 : 기초

728x90

1. 변수 선언과 자료형

사람 : 변수는 값을 담는 상자. (쉽게 생각)

컴퓨터 : 값이 담긴 위치를 가리킨다. 메모리에 올려져 있다. (유식하게 생각)

값에는 여러가지 종류가 들어갈 수 있다. (정수, 실수, 문자열, 참/거짓 형...)

a = 3
b = 2

print(a+b) # 5
print(a ** b) # a의 b제곱
print(a%b) # 나머지

a = (3 > 2) 
print(a) # True

a = (3 == 2)
print(a) # False

 

2. 문자열 다루기

first_name = 'dayoung'
last_name = 'lee'

print(first_name + last_name) # dayounglee

a = 2
b = 'a'
print(b) # a 
# 따옴표 붙으면 무조건 문자열 a

a = '2'
b = 'hello'
print(a + b) # 2hello

a = 2
b = 'hello'
print(a + b) # error : 숫자와 문자를 더할 수 없다

a = str(2) # 문자열 string으로 형변환
b = 'hello'
print(a + b) # 2hello


text = 'abcdefghijk'

result = len(text) # 11
result = text[:3] # abc
result = text[3:] # defghijk

print(result)

myemail = "abc@sparta.co"

result = myemail.split(@)[1].split('.')[0]
print(result) #sparta

 

코딩은 시험이 아님.

대략 범위를 잡고 print.

아닌 것 같으면 고쳐서 돌리기.

 

Quiz. sparta에서 spa만 출력해 보기 

나의 답안

sparta = 'sparta'
print(sparta.split('r')[0])

 

정답

sparta = 'sparta'
print(sparta[:3])

 

나의 생각

r이 나올 때까지 문자열 탐색하는 것보다 앞의 3개만 자르는 게 더 빠를 수도 있다고 생각함

 

Quiz. 전화번호의 지역번호를 출력해 보기

나의 답안

phone = '02-123-1234'
print(phone.split('-')[0])

정답

phone = '02-123-1234'
result = phone.split('-')[0]

print(result)

나의 생각

result라는 변수에 담으면 결과가 뭔지 직관적으로 이해 가능

 

 

3. 리스트와 딕셔너리

list 리스트

리스트에는 숫자 문자 자료형 리스트 전부 담을 수 있다. 

a_list = ['사과', '배', '감']
print(a_list[0]) # 사과

a_list = ['사과', ['배', '감']]
print(a_list[1][1]) # 감

a_list.append(99)
print(a_list[2]) # 99

print(a_list[:1]) # ['사과', ['배', '감']]
print(a_list[-1]) # 맨 마지막 친구가 출력 99
print(len(a_list)) # 3

a_list = [3, 2, 1, 4]
print(a_list.sort()) # 오름차순 정렬 [1,2,3,4]
print(a_list.sort(reverse=True)) # 내림차순 정렬 [4,3,2,1]
print(5 in a_list) # 존재확인 False
print(1 in a_list) # 존재확인 True

 

dictionary 딕셔너리

순서가 없다. 

a_dict = {'name' : "dayoung", 'age' : 29, 'friend':['호상','은한']}
result = a_dict['age'] #29
result = a_dict['friend'][0] #호상

a_dict['height'] = 165 # a_dict에 삽입

print(result)
print('height' in a_dict) # 존재 확인 True

 

리스트 안에 딕셔너리

pepople = [
    {'name' : "dayoung", 'age' : 29},
    {'name' : "john", 'age' : 30}
]

print(pepople[1]['age']) #30

 

Quiz. smith의 science 점수 출력

people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

print(people[2]['score']['science'])

 

4. 조건문

내용물이 되려면 Tab으로 들여쓰기 해서 Depth를 맞춰 줘야 함.

money = 5000

if money > 5000:
    print("택시를 타자")
elif money < 5000:
    print("택시를 못 타")
    print("그럼 뭘 타지?")
else: 
    print("고민해 볼까?")
    
print("밥도 먹어야 해")

 

5. 반복문

fruits = ['사과', '배', '감', '귤']

for fruit in fruits:
    print(fruit)

 

Quiz. 나이가 20보다 큰 사람만 출력합니다.

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)

 

enumerate : 순서(index) 부여하기

break : 멈추기

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

 

Quiz. 리스트에서 짝수만 출력하는 함수 만들기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

def odd_printer(num_list):
    for num in num_list:
        if num % 2 == 0:
            print(num)

odd_printer(num_list)

 

Quiz. 리스트에서 짝수의 개수를 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

def odd_sum(num_list):
    count = 0
    for num in num_list:
        if num % 2 == 0:
            count = count + 1
    print(count)

odd_sum(num_list)

 

Quiz. 리스트 안에 있는 모든 숫자 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

def add_all(num_list):
    sum = 0
    for num in num_list:
        sum = sum + num
    print(sum)

add_all(num_list)

 

Quiz. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

def biggest_num_printer(num_list):
    num_list.sort(reverse=True)
    print(num_list[0])

biggest_num_printer(num_list)

 

TypeError: 'NoneType' object is not subscriptable sort

sort 함수는 원래 list의 순서를 바꾸고 아무것도 return 하지 않기 때문에 변수에 담길 수 없다. 

 

https://stackoverflow.com/questions/36738141/typeerror-nonetype-object-is-not-subscriptable-scores-sort

6. 함수

def bus_fee(age):
	if age > 65:
	    return 0
	elif age > 20:
	    return 1200
	else:
	    return 0     


money = bus_fee(28)
print(money)

 

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

id = "950717-2034567"

def gender_printer(id):
    if id.split("-")[1][0] == "2" or (id.split("-")[1][0] == "4"):
        print("여자입니다.")
    elif id.split("-")[1][0] == "1" or (id.split("-")[1][0] == "3"):
        print("남자입니다.")
    else:
        print("성별을 판단할 수 없습니다.")


gender_printer(id)

 

참고 강의 : 스파르타 코딩클럽 - 파이썬 문법 뽀개기