파이썬

[파이썬 기초] 함수와 노래방프로그램

묘 Myo 2022. 4. 11. 21:27

함수 3요소

1. input

매개변수 파라미터 인자 인수 입력값

 

2. output

반호나 결과값 리턴값 출력값

 

3. 기능==함수명

 

인자x 반환x

인자o 반환x

인자x 반환o

인자o 반환o

 

1. 인자x 반환x

def f1()
	print('>_<')
f1()
f1()
f1()

코드 재사용 → 효율적

>_< 은 결과값이 아닌 출력되는 것

 

2. 인자o 반환x

def f2(name,lv):
	print(name+'님은 lv'+str(lv))
f2('묘묘',13)
def f2(name,lv=1): #디폴트 매개변수
	print(name+'님은 lv'+str(lv))
f2('묘묘')
f2('묘묘',10)

디폴트 매개변수는 [모호성]이슈가 있으므로 항상 뒤에서부터 위치시킴

def f2(*args): #애스터리스크/가변 매개변수
  for v in args:
    print(v)
  print(tpye(args)) #튜플 > 외부에서 들어온 값 바뀌면 안되기 때문

f2(1,2,3,4,5)
f2('apple', 'banana')
def test(*args):
  print(sum(args))

test(1,2,3)

3. 인자x 반환o

def f3():
  num=int(input('정수입력:'))
  res=num**2
  print('입력한 %d의 제곱은 %d입니다'%(num,res))
  return res
a=f3()

4. 인자O 반환O

def f4(a,b,c):
  return (a+b+c)//3

a= f4(1,2,3)
print(a)

return은 함수 즉시 종료


노래방 프로그램

1. 동전 넣으세요 → 유효성검사(500미만)

2. 500원 당 1곡
1600
3곡 추가되었습니다. 100원 반환됩니다
2000
4곡 추가되었습니다

3. 3번 4번 → while VS for > for

4. 노래번호를 입력
→ 딕셔너리를 이용하여 노래를 저장

5-1 해당번호가 없음 → 다시 입력
5-2 노래를 play

6. wjatn (0~100점 랜덤부여)
+0~60 아쉬워요! 61~80 굳굳! 81~100 가수왕!
++100점일 때 보너스 1곡

7. 다음에 또 만나요~~!!

++무한루프로 해당 프로그램 감싸기
songlist = {1001:'strawberry moon', 1002:'antifreeze', 1003:'너'}
import time
import random
coin=int(input('동전을 넣으세요'))
song=coin//500
recoin=coin%500
print('%d곡 추가되었습니다'%song)
if recoin!=0:
  print('%d원 반환됩니다'%recoin)
else:
  print()
for i in range(song):
  songnum=int(input('노래번호입력:'))
  print(songlist[songnum]+'노래재생')
  for i in range(7):
    print('🎤🎤', end='')
    time.sleep(0.3)
  print()
  score=random.randrange(0,101)
  print(score,'점 입니다')
print('다음에 또 만나요!')

songlist={1001:'strawberry moon', 1002:'antifreeze', 1003:'신호등'}
import time
import random
while True:
    coin=int(input('동전을 넣으세요'))
    if coin>=500:
        break
    print('500이상의 동전을 넣어주세요!') #유효성검사

song=coin//500
recoin=coin%500
print('%d곡 추가되었습니다'%song)
if recoin!=0:
    print('%d원 반환됩니다'%recoin)
else:
    print()

for i in range(song):
    checklist=list(songlist.keys())
    while True:
        songnum=int(input('노래번호입력: '))
        if songnum in checklist:
            break
        print('해당 노래번호는 없습니다! 다시 입력해보세요')

    print(songlist[songnum]+'노래재생')
    for i in range(7):
        print('🎤🎤',end='')
        time.sleep(0.3)

    print()
    score=random.randrange(0,101)
    print(score,'점 입니다.')

    if score>80:
        print('가수왕!')

    elif score>60:
        print('굳굳!')

    else:
        print('아쉬워요!')

print('다음에 또 만나요!')

사용자 정의 함수를 만드는 방법

1) 기능을 우선 구현하고 → 함수로 따로 분리

def scoreprint(score): #1. 가변 매개변수 2. 디폴트 매개변수
  if score>80:
    pirnt('가수왕!')
  elif score>60:
    print('굳굳!')
  else:
    print('아쉬워요!')
#인자 o 반환 x

2) 함수를 만들어서 → 원하는 상황에 적용

def printmusic():
  for i in range(5):
    print('🎤🎤',end='')
    time.selep(0.2)
  priint()
#인자x 반환x

 

함수 사용 장점

1. 함수 재사용성이 증가

2. 유지보수 유리함

-낮은 결함도 높은 응집도-