[Python] 11. DEF

Min's Study NoteΒ·2023λ…„ 11μ›” 7일

Python

λͺ©λ‘ 보기
12/21

πŸ”³ def : define

  • λͺ©μ  : μ€‘λ³΅λœ μ½”λ“œλ₯Ό 쀄일 수 있고, μ½”λ“œμ˜ 가독성을 높이고, μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯상
  • κΈ°λŠ₯λ“€μ˜ 묢음

πŸ”΅ ν•¨μˆ˜ μ •μ˜ (λ§€κ°œλ³€μˆ˜ μ—†κ³ , 리턴 νƒ€μž… μ—†μŒ)

def lines():
  print("==" * 12)

def lines(str):
  print(f'{" "+str+" ":=^30}')
#lines()   #μ—λŸ¬ λ°œμƒ
#overloading κ°œλ…μ΄ νŒŒμ΄μ¬μ—μ„œλŠ” μ—†κΈ° λ•Œλ¬Έμ— μ΅œμ’…ν•¨μˆ˜λ‘œ 적용
lines("μ•ˆλ…•")   #============= μ•ˆλ…• =============

πŸ”΅ ν•¨μˆ˜ μ •μ˜ (λ§€κ°œλ³€μˆ˜ 있고, 리턴 νƒ€μž… μ—†μŒ)

def lines(str):
  print(f'{" "+str+" ":=^30}')
#lines() # μ—λŸ¬: νŒŒμ΄μ¬μ—λŠ” overloading이 μ—†κΈ° λ•Œλ¬Έμ— μ΅œμ’… ν•¨μˆ˜λ‘œ 적용
lines("def")
print()   #============ def =============

πŸ”΅ ν•¨μˆ˜ μ •μ˜ (λ§€κ°œλ³€μˆ˜ μ—†κ³ , 리턴 νƒ€μž… 있음)

def lines():
  return f"{'':=^30}"
print(lines())    #==============================

πŸ”΅ ν•¨μˆ˜ μ •μ˜ (λ§€κ°œλ³€μˆ˜ 있고, 리턴 νƒ€μž… 있음)

def lines(str):
  return f"{" "+str+" ":=^30}"
print(lines("python"))    #=========== python ===========

πŸ‘‰ μ—°μŠ΅λ¬Έμ œ - 리슀트, λ¬Έμžμ—΄, ν•¨μˆ˜
(πŸ“–νŒŒμ΄μ¬ 데이터 뢄석 for beginner P.174~180)

import random

## Q1
## 리슀트λ₯Ό μƒμ„±ν•˜λŠ” 방법
nn = [100, 200, 300]

## Q2
## λ¦¬μŠ€νŠΈμ— 10개의 κ°’ 랜덀 λŒ€μž… ν›„, 합계 좜λ ₯
nn=[]
for _ in range(10):
    num=random.randrange(1,100)
    nn.append(num)
    print(num)
    # 73
    # 27
    # 94
    # 33
    # 81
    # 63
    # 13
    # 97
    # 96
    # 44
hap=0
for i in range(10):
    num=nn[i]
    hap+=num
print(hap)    #621

## Q3
## 배열을 μ—­μˆœμœΌλ‘œ λ§Œλ“€κΈ°
ary1=[1,2,3,4]
ary2=[]
for i in range(3,-1,-1):
    ary2.append(ary1[i])
print(ary1)   #[1, 2, 3, 4]
print(ary2)   #[4, 3, 2, 1]

## Q4
## 리슀트 ν•¨μˆ˜
# (1) len() : 리슀트의 전체 개수λ₯Ό μ„Όλ‹€.
# (2) extend() : 두 리슀트λ₯Ό μ—°κ²°ν•œλ‹€.
# (3) pop() : 리슀트 맨 λ’€μ˜ ν•­λͺ©μ„ μΆ”μΆœν•œλ‹€.
# (4) index() : μ§€μ •ν•œ 값을 μ°Ύμ•„μ„œ μœ„μΉ˜λ₯Ό μ•Œμ•„λ‚Έλ‹€.
# (5) count() : λ¦¬μŠ€νŠΈμ—μ„œ νŠΉμ • κ°’μ˜ 개수λ₯Ό μ„Όλ‹€.

## Q5
## νŠœν”Œμ— λŒ€ν•œ μ„€λͺ…
# 4. νŠœν”Œμ€ 변경이 λΆˆκ°€λŠ₯ν•œ(immutable) μžλ£Œν˜•μ΄λ―€λ‘œ insert()와 같은
# λ©”μ†Œλ“œλ‚˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠœν”Œμ˜ λ‚΄μš©μ„ λ³€κ²½ν•˜λŠ” 것은 λΆˆκ°€λŠ₯

## Q6
## λ”•μ…”λ„ˆλ¦¬μ— λŒ€ν•œ μ„€λͺ…
# 3. λ”•μ…”λ„ˆλ¦¬λŠ” λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œκ³ΌλŠ” λ‹€λ₯΄κ²Œ μˆ«μžν˜• 첨자(index)둜
# μ ‘κ·Όν•˜μ§€ μ•ŠλŠ”λ‹€. λŒ€μ‹ μ—, λ”•μ…”λ„ˆλ¦¬λŠ” ν‚€(key)λ₯Ό μ‚¬μš©ν•˜μ—¬
# κ°’(value)에 μ ‘κ·Όν•œλ‹€.

## Q7
## 리슀트의 κ³±μ…ˆ μ—°μ‚°
myData=[[n*m for n in range(1,3)] for m in range(2,4)]
print(myData)   #[[2, 4], [3, 6]]

## Q8
## 자료ꡬ쑰 μ΄ˆκΈ°ν™”
# (1) aa = [] β‡’ λ‚˜.리슀트
# (2) bb = {} β‡’ λ‹€.λ”•μ…”λ„ˆλ¦¬
# (3) cc = () β‡’ κ°€.νŠœν”Œ
# (4) dd = None β‡’ 라.μΌλ°˜λ³€μˆ˜

## Q9
## 리슀트 μ‘°μž‘ν•¨μˆ˜
# (1) extend() : 리슀트의 뒀에 리슀트λ₯Ό μΆ”κ°€ν•œλ‹€.
# (2) remove() : λ¦¬μŠ€νŠΈμ—μ„œ μ§€μ •ν•œ 값을 μ œκ±°ν•œλ‹€.
# (3) reverse() : 리슀트 ν•­λͺ©μ˜ μˆœμ„œλ₯Ό μ—­μˆœμœΌλ‘œ λ§Œλ“ λ‹€.
# (4) pop() : 리슀트 맨 λ’€μ˜ ν•­λͺ©μ„ λΉΌλ‚΄κ³ , λΉΌλ‚Έ ν•­λͺ©μ€ μ‚­μ œν•œλ‹€.

## Q10
myList=[[1,2,3,4],
        [5,6,7,8],
        [9,10,11,12]]
print(myList[0][1])    #2
print(myList[1][3])   #8
print(myList[2])    #[9, 10, 11, 12]

## Q11
ss='IT_CookBook'
print(ss[0])        #I
print(ss[1:2])      #T
print(ss[0:-1])     #IT_CookBoo
print(ss[:4])       #IT_C

## Q12
## λ¬Έμžμ—΄μ„ λ°˜λŒ€λ‘œ 좜λ ₯ν•˜λ©΄μ„œ 짝수 번째 λ¬Έμžμ—΄μ€ #으둜 ν‘œμ‹œ
inStr='IT_CookBook_Python'
outStr=''
for i in range(0,len(inStr)):
    if i%2==0:
        outStr+=inStr[len(inStr)-(i+1)]
    else:
        outStr+='#'
print("μ›λ³Έλ‚΄μš©-->",inStr)      #μ›λ³Έλ‚΄μš©--> IT_CookBook_Python
print("λ°”λ€λ‚΄μš©-->",outStr)     #λ°”λ€λ‚΄μš©--> n#h#y#_#o#B#o#C#T#

## Q13
## λ¬Έμžμ—΄ ν•¨μˆ˜
# (1) title() : 각 λ‹¨μ–΄μ˜ 첫 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ λ³€κ²½
# (2) upper() : λͺ¨λ‘ 영문 λŒ€λ¬Έμžλ‘œ λ³€κ²½
# (3) swapcase() : 영문 λŒ€μ†Œλ¬Έμžλ₯Ό μƒν˜Έ λ³€κ²½
# (4) lower() : λͺ¨λ‘ 영문 μ†Œλ¬Έμžλ‘œ λ³€κ²½

## Q14
str1="μ½”λ”© μ€‘μ—μ„œ 파이썬 코딩이 κ°€μž₯ 즐거운 μ½”λ”©"
print(str1.count('μ½”λ”©'))     #3 #λ¬Έμžμ—΄μ΄ μΆœν˜„ν•˜λŠ” 횟수
print(str1.rfind('μ½”λ”©'))     #22 #λ¬Έμžμ—΄μ΄ λ§ˆμ§€λ§‰μœΌλ‘œ μΆœν˜„ν•˜λŠ” μœ„μΉ˜
print(str1.startswith('μ½”λ”©'))      #True #μ£Όμ–΄μ§„ λ¬Έμžμ—΄λ‘œ μ‹œμž‘ν•˜λŠ”μ§€ μ—¬λΆ€
print(str1.find('파이썬'))     #7 #λ¬Έμžμ—΄μ΄ 처음으둜 μΆœν˜„ν•˜λŠ” μœ„μΉ˜

## Q15
## μž…λ ₯ν•œ λ¬Έμžμ—΄μ—μ„œ 숫자, 영문 μ†Œλ¬Έμž, 영문 λŒ€λ¬Έμž, ν•œκΈ€, 기타 문자 κ³¨λΌμ„œ 좜λ ₯
inStr1=input("λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš” :")
# IT CookBook 데이터 뢄석을 365일 κ³΅λΆ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ^___^
upper=""
lower=""
number=""
korean=""
etc=""

for i in inStr1:
    if ord('A')<=ord(i)<=ord('Z'):
        upper+=i
    elif ord('a')<=ord(i)<=ord('z'):
        lower+=i
    elif ord('0')<=ord(i)<=ord('9'):
        number+=i
    elif ord('κ°€')<=ord(i)<=ord('힣'):
        korean+=i
    else:
        etc+=i
print("λŒ€λ¬Έμž:%s,μ†Œλ¬Έμž:%s,숫자:%s,ν•œκΈ€:%s,기타:%s" % (upper,lower,number,korean,etc))

## Q16
## ν•¨μˆ˜μ˜ μ„€λͺ…
# 1. νŒŒμ΄μ¬μ—μ„œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ 이름 뒀에 μ†Œκ΄„ν˜Έ ()κ°€ λΆ™λŠ”λ‹€.
# λŒ€κ΄„ν˜Έ []λŠ” 리슀트(list)λ‚˜ λ‹€λ₯Έ μžλ£Œκ΅¬μ‘°μ—μ„œ μ‚¬μš©.
# 3. νŒŒμ΄μ¬μ€ λ‚΄μž₯ν•¨μˆ˜ μ œκ³΅ν•¨.

## Q17
def plus(v1,v2,v3):
    result=0
    result=v1+v2+v3
    return result

hap=plus(100,200,300)
print(hap)      #600

## Q18
def f1():
    print(var)
def f2():
    var=10
    print(var)

var=100
f1()        #100
f2()        #10

## Q19
## pass μ˜ˆμ•½μ–΄
# 3. κ·Έλƒ₯ 아무 것도 ν•˜μ§€ μ•Šκ³  λΉ„μ›Œ 놓을 λ•Œ μ‚¬μš©ν•œλ‹€.

## Q20
## ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ μ„€λͺ…
# 2. λ§€κ°œλ³€μˆ˜λŠ” 2개일 μˆ˜λ„ μžˆλ‹€.

## Q21
def sum(v1,v2):
    result=0
    result=v1+v2
    return result

## Q22
## κΈ°λ³Έκ°’(default value) : ν•¨μˆ˜ μ •μ˜ μ‹œ λ§€κ°œλ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” μ΄ˆκΈ°κ°’
def myFunc(p1=1,p2=2,p3=3):
    ret=p1+p2+p3
    return ret
print("λ§€κ°œλ³€μˆ˜ 없이 호좜----->",myFunc())
#λ§€κ°œλ³€μˆ˜ 없이 호좜-----> 6
print("λ§€κ°œλ³€μˆ˜ 1개 호좜----->",myFunc(1))
# λ§€κ°œλ³€μˆ˜ 1개 호좜-----> 6
print("λ§€κ°œλ³€μˆ˜ 2개 호좜----->",myFunc(1,2))
# λ§€κ°œλ³€μˆ˜ 2개 호좜-----> 6
print("λ§€κ°œλ³€μˆ˜ 3개 호좜----->",myFunc(1,2,3))
# λ§€κ°œλ³€μˆ˜ 3개 호좜-----> 6

## Q23
def func(v1,v2=0,v3=0):
    result=0
    result=v1+v2+v3
    return result
print(func(1))      #1
print(func(1,2))        #3
print(func(0,0,0))      #=
# print(func())     #error

0개의 λŒ“κΈ€