데이터분석 study/Python

TIL(Today I Learned) 24.07.01

justdata 2024. 7. 1. 20:30

● 함수 

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

def hello():
		print("안녕!")
    print("또 만나요!")


hello()
hello()

 

 - 단순한 출력 말고도 결과 값을 돌려주도록 함수를 만들 수도 있다.

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


money = bus_fee(28)
print(money)

 

 만약 "2" 라는 문자열을 숫자로 바꾸려면 int("2") 이렇게 int로 감싸준다.

 

***여기서 print 와 return 의 차이는 

print는 출력하는 것이고, 

return은 정의된 함수의 값을 반환하는 것이다.

def foo():
    print("hello")
def poo():
   return "hello"

a = foo()
b = poo()
print("a:",a)
print("b:",b)

 

이 값을 출력하면, 

● 튜플, 집합

 - 튜플(tuple)은 리스트와 비슷하지만 불변인 자료형, 순서가 존재는 하나 튜플 안에 추가를 하거나 삭제는 불가능

예시 )

a = (1,2,3)
a[0] = 99

이 경우 99라는 숫자가 튜플안에 추가 될 수 없다.

 

 - 튜플은 딕셔너리 대신 리스트와 튜플로 딕셔너리 비슷하게 만들어 사용해야 할 때 많이 쓰인다.

예시)

a_dict = [('bob','24'),('john','29'),('smith','30')]

 

● 집합 (set)

  - 집합은 말 그대로 집합을 구현하는 방법인데 , 중복이 제거 되어 좋다.

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set)

 

출력 시,

 

 - 교집합/합집합/차집합도 구할 수 있다.

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

a_set = set(a)
b_set = set(b)

print(a_set & b_set)  # 교집합
print(a_set | b_set)  # 합집합

 

 - 차집합은 print(a_set - b_set)

 

● f-string 

 - 변수로 직관적인 문자열 만들기

만약 아래 리스트가 있다는 가정하에 ,

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]

 

이름과 점수를 모두 출력한다면 , 

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(name,score)

 

 

이런 방법보다 f-string 을 이용하면 훨씬 간단하게 쓸 수 있다.

예시)

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}은 {score}점입니다')

 

출력하면, 

 

●예외처리 try - except

 -주의 사항!!!! : 어디서 에러가 났는지 알 수 없을 수도 있으니 실제 프로젝트에 남용하는 것은 안하는 것이 좋다.

예를 들어 아래 코드에서 20세보다 큰 사람만 출력하려는 데 'bobby'가 age를 갖고 잊지 않아 처리해야 한다면?

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

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

 

출력하면,

 

 

● 파일 불러오기

   - main_test.py 와 main_func.py 이 두개의 파일을 만들었다는 가정하에 

    main_func.py 파일의 함수를 main_test.py에서 쓰고 싶다면?

 

일단, main_func.py 에 함수를 만들고,

def say_hi():
	print('안녕!')

 

 

main_test.py 파일에 와서 아래 코드처럼 작성하면 다른 파일에서 정의내린 함수를 사용할 수 있다.

from main_func import *

say_hi()

 

●if 문 - 삼항연산자

 - 만약 조건에 따라 다른 값을 변수에 저장하고 싶다면,

num = 3

if num % 2 == 0:
	result = "짝수"
else:
	result = "홀수"
    
print(f"{name}은 {result}입니다.")

 

 - 이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식이다. 

    (참일 때 값) if (조건) else (거짓일 때 값) 으로 항이 3개라 삼항 연산자 

num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

 

●for문 - 한방에 쓰기

 - 만약 a_list의 각 요소에 2를 곱한 새로운 리스트를 만들고 싶다면?

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

b_list = []
for a in a_list:
    b_list.append(a*2)

print(b_list)

 

 - 이것을 한 번에 쓴다면?

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

b_list = [a*2 for a in a_list]

print(b_list)

 

두 코드 모두 값이 동일하게 출력 된다!!