Data Analysis/Python Basic

[파이썬] 함수 기본

뉴욕킴 2023. 5. 7. 01:39
함수: '무엇'을 넣으면 '어떤 것'을 돌려주는 상자
(함수는 외부에 별도로 존재, 메서드는 클래스 안에 존재)

예제1. 커피를 타는 과정 코드 만들기
coffee=0

coffee=int(input('어떤 커피 드릴까요? 1.보통 2. 설탕 3.블랙'))

if coffee==1:
    print('종이컵을 준비한다')
elif coffee==2:
    print('설탕 커피를 탄다')
elif coffee==3:
    print('블랙커피를 탄다')
else:
    print('아무거나 탄다')
어떤 커피 드릴까요? 1.보통 2. 설탕 3.블랙3
블랙커피를 탄다

 

예제1-1. 커피를 타는 과정 코드 만들기(함수 사용: 여러잔 사용시 용이)
coffee=0

def coffee_machine(button):
    if coffee==1:
        print('종이컵을 준비한다')
    elif coffee==2:
        print('설탕 커피를 탄다')
    elif coffee==3:
        print('블랙커피를 탄다')
    else:
        print('아무거나 탄다')
        
coffee=int(input('어떤 커피 드릴까요? 1.보통 2. 설탕 3.블랙'))
coffee_machine(coffee)
print('손님 커피 드세요.')
어떤 커피 드릴까요? 1.보통 2. 설탕 3.블랙2
설탕 커피를 탄다
손님 커피 드세요.

2. plus 함수 사용하여 두 숫자의 합 구하기 
def plus(v1,v2):
    result=0
    result=v1+v2
    return result

hap=0

hap=plus(100,200)
print('100과 200의 plus() 함수 결과는 %d' %hap)
100과 200의 plus() 함수 결과는 300

3. 덧셈, 뺄셈, 곱셈, 나눗셈 하는 계산기 함수 작성하기
def calc(v1,v2,op):
    result=0
    if op=='+':
        result=v1+v2
    elif op=='-':
        resul=v1-v2
    elif op=='*':
        result=v1*v2
    elif op=='/':
        result=v1/v2
    return result

res=0
var1, var2, oper=0,0,""

oper=input('계산을 입력하세요(+,-,*,/): ')
var1=int(input('첫 번째 수를 입력하세요:'))
var2=int(input('두 번째 수를 입력하세요:'))

res=calc(var1,var2,oper)

print('##계산기: %d %s %d = %d' % (var1, oper, var2, res))
계산을 입력하세요(+,-,*,/): +
첫 번째 수를 입력하세요:2
두 번째 수를 입력하세요:5
##계산기: 2 + 5 = 7

4. 로또 추첨 코드 작성
import random

def getNumber():
    return random.randrange(1,46)

lotto=[]
num=0

print('** 로또 추첨을 시작합니다. **\n');

while True:
    num=getNumber()
    if lotto.count(num)==0:
        lotto.append(num)
        
    if len(lotto) >= 6:
        break
        
print('추첨된 로또 번호 ==>', end='')
lotto.sort()
for i in range(0,6):
    print('%d '%lotto[i], end='')
** 로또 추첨을 시작합니다. **

추첨된 로또 번호 ==>12 17 20 21 26 34 

5. 문자와 숫자가 섞여있는 데이터가 있을 때 숫자를 기준으로 데이터를 정렬하는 프로그램 만들기
# A37B, 23CC, 88D9, BB8F, 3A9A의 값 5개를 정렬한다.
이 값들에서 문자는 무시하고 숫자만 취급하여 37, # 23, 889, 8, 39를 정렬하시오. 
import random

def getNumber(strData):
    numStr=''
    for ch in strData:
        if ch.isdigit():
            numStr += ch
    return int(numStr)

data=[]
i,k=0,0

if __name__=="__main__":
    for i in range(0,10):
        tmp=hex(random.randrange(0,100000))
        tmp=tmp[2:]
        data.append(tmp)
        
    print('정렬 전 데이터: ', end='')
    [print(num,end='') for num in data]
    
    for i in range(0,len(data)-1):
        for k in range(i+1, len(data)):
            if getNumber(data[i]) > getNumber(data[k]):
                tmp=data[i]
                data[i]=data[k]
                data[k]=tmp
    print('\n 정렬 후 데이터: ', end='')
    [print(num,end='') for num in data]
정렬 전 데이터: 13a55b97be15bac3755bd8bd7845a1333dd24f14e54
 정렬 후 데이터: e15bd24fac3755bd8bd7b97b845a1333d13a5514e54