TIL(Today I Learned) 24.07.01
● 함수
- 함수는 반복적으로 사용하는 코드들에 이름을 붙여놓은 것.
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)
두 코드 모두 값이 동일하게 출력 된다!!