Python 찍먹 - 기초 함수

조해빈·2023년 1월 18일
0

짧은이론

목록 보기
4/22

산수

f(x) = 2*x+3
y = f(2)

위에서, y의 값은? ----> 7

기본적으로 쓰는 게 다르다.
자바스크립트에서는,

function f(x) {
     return 2*x+3  # 7
}

반면 파이썬에서는,

def f(x):
    return 2*x+3   # 중괄호 대신에 들여쓰기로 각 블록의 범위를 표시한다.

f(2)               # 7

응용해보자.

def sum_all(a,b,c):
    return a+b+c

def mul(a,b):
    return a*b

result = sum_all(1,2,3) + mul(10,10)

# result라는 변수의 값은?


sum_all(1,2,3) ---> 6
mul(10,10) ---> 100
result는 106임을 확인.

조건문

def is_adult(age):
	  if age > 20:
		    print('성인입니다')    # 조건이 참이면 성인입니다를 출력
	  else:
		    print('청소년이에요')  # 조건이 거짓이면 청소년이에요를 출력

is_adult(30)                    # 성인입니다

else if ---> elif

def is_adult(age):
	  if age > 20:
		    print('성인입니다') 
	  elif age >= 13:
		    print('청소년이에요')  
    else:
        print('어린이네요!')

is_adult(30)              # 성인입니다

반복문

파이썬에서의 반복문은, 리스트의 요소들을 하나씩 꺼내쓰는 형태입니다.

fruits = ['사과','배','감','귤']
for fruit in fruits:
    print(fruit)
# 사과
# 배
# 감
# 귤


위를 자바스크립트처럼 쓰면 아래와 같기도 하다.

for i in range(len(fruits)):  # i 가 0, 1, 2, 3일 때 
    fruit = fruits[i]	
    print(fruit)

응용해보자.

Q1. 과일 갯수 세기 함수 만들기

fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']

사과의 갯수를 센다면 어떻게 하면 좋을지 슈도코드로 적는다.

과일 리스트가 있을 때,
결과를 저장할 변수를 만들고 초깃값은 0으로 한다.
리스트 안에 있는 각 과일에 대해서
이름이 사과이면
결과를 1 증가시킨다.
결과 출력

위를 코드로 작성.

fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']

count = 0

for fruit in fruits:
	if fruit == '사과':
		count += 1

print(count)

# 사과의 갯수를 세어 보여줍니다.

이때 알게된 것, 주목! 들여쓰기의 정도를 확인하자.
아래는 반복문 안의 print()라서

이렇게 count가 변동될 때마다 출력된다.
그러나 아래는 위와 다르게도

반복문이 다 돈 다음 최종적인 count가 출력된다.

위 함수를 범용화 해본다.

def count_fruits(target):
	count = 0
	for fruit in fruits:
		if fruit == target:
			count += 1
	return count

subak_count = count_fruits('수박')
print(subak_count) #수박의 갯수

gam_count = count_fruits('감')
print(gam_count) #감의 갯수

++ 이후 시간이 좀 지나고 혼자 다시 자력으로 해보기 연습을 했다.

# 과일 리스트가 있을 때,
# 결과를 저장할 변수를 만들고 초깃값은 0으로 한다.
# 리스트 안에 있는 각 과일에 대해서
# 이름이 사과이면
# 결과를 1 증가시킨다.
# > 결과 출력

fruits = ['사과','배','배','감','수박','귤','바나나','딸기','사과','배','수박','메론']

# z=0
# for x in fruits:
#   if x=='메론':
#     z+=1

# print(z)

def FruitCounter(target):
  z=0
  for x in fruits:
    if x == target:
      z+=1
  return z

apple = print( FruitCounter('사과') )
watermelon = print( FruitCounter('수박') )
pear = print( FruitCounter('배') )

Q2. 사람의 나이 출력하기

아래와 같이 각 사람의 이름과 나이가 든 딕셔너리가 각각의 요소인 리스트가 있을 때, 이름을 넣으면 나이를 돌려주는 함수를 만들어봅시다.

people = [{'name': 'bob', 'age': 20}, 
          {'name': 'carry', 'age': 38},
          {'name': 'john', 'age': 7},
          {'name': 'smith', 'age': 17},
          {'name': 'ben', 'age': 27}]
for person in people:
    if person["name"] == "bob":
        print(person['age'])
        
---->

def get_age(myname):
    for person in people:
        if person['name'] == myname:
            return person['age']
    return '해당하는 이름이 없습니다'

print(get_age('bob'))   #20
print(get_age('carry')) #38

위 코드를 보면 알 수 있듯, 들여쓰기로 if문의 안팍이 결정된다.
참이라 if문 안에 들어가면 return person['age'] 가 되고, 거짓이라 if문에서 튕겨져나오면 return '해당하는 이름이 없습니다'가 실행된다.

++ 이후 시간이 좀 지나고 혼자 다시 자력으로 해보기 연습 및 응용을 했다.

# 사람 정보가 담긴 리스트가 있을 때,
# 리스트 안의 딕셔너리인 각 사람에 대해서
# 만약 사람의 이름이 'bob'이면
# 그 사람의 나이를 출력해라.

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

# for x in people:
#   if x['name']=='bob':
#     print(x['age'])
    
def getAge(target):
  for x in people:
    if x['name'] == target:
      text = x['name'] + ' is ' + str( x["age"] ) + ' years old.'
      return text 
  return 'No one has that name here.'
  
print( getAge('ben') )


이때 자바스크립트처럼 동적으로 문자열+숫자를 해도 문자열이 되지 않아, int(), float(), str(), format()을 서치하여 습득했다. 위 답안은 str()을 이용하고 있다.
https://codechacha.com/ko/python-convert-string-to-integer/
https://codechacha.com/ko/python-convert-integer-to-string/

profile
UE5 공부하는 블로그로 거처를 옮겼습니다!

0개의 댓글