2023. 3. 17. 15:55ㆍ카테고리 없음
함수호출
def my_function():
print("Hello from a function")
my_function()
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
매개변수 또는 인수?
함수의 관점에서 :
매개변수는 함수 정의에서 괄호 안에 나열된 변수입니다.
인수는 함수가 호출될 때 함수로 전송되는 값입니다.
임의 인수, *args
함수에 전달될 인수 수를 모르는 경우 매개변수 이름 앞에 *을 붙이면
입력값을 전부 모아서 튜플로 만들어 준다.
def add_many(*args):
... result = 0
... for i in args:
... result = result + i
... return result
만약 add_many(1, 2, 3)처럼 이 함수를 쓰면 args는 (1, 2, 3)이 되고,
add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)처럼 쓰면 args는 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이 된다.
여기에서 *args는 임의로 정한 변수 이름이다.
함수값의 반환
def add_mul(choice, *args):
... if choice == "add":
... result = 0
... for i in args:
... result = result + i
... elif choice == "mul":
... result = 1
... for i in args:
... result = result * i
... return result
>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul', 1,2,3,4,5)
>>> print(result)
120
함수 안에서 선언한 변수의 효력 범위
def vartest(a):
a = a + 1
vartest(3)
print(a)
vartest(3)을 수행하면 vartest 함수 안에서 a는 4가 되지만
함수를 호출하고 난 뒤에 print(a) 문장은 오류가 발생하게 됩니다.
그 이유는 print(a)에서 사용한 a 변수를 어디에서도 찾을 수가 없기 때문입니다.
- 함수 안에서 선언한 매개변수는 함수 안에서만 사용될 뿐 함수 밖에서는 사용되지 않습니다.
함수 안에서 함수 밖의 변수를 변경하는 방법
1. return 사용하기
a = 1
def vartest(a):
a = a +1
return a
a = vartest(a)
print(a)
>>>2
2 . global 명령어 사용하기
a = 1
def vartest():
global a
a = a+1
vartest()
print(a)
>>>2
내장 함수
파이썬 모듈
➢하나의 파일을 여러개로 나누어 관리
➢프로그램에서 공통적으로 사용되는 함수들을 모아서 별도의 파일에 저장하는 기능을 제공
➢필요한 모듈 파일을 불러와서 파일 내에 정의 된 함수들을 쉽게 이용
math 모듈의 모듈 함수
round() 함수
time 모듈의 모듈 함수
현지 시간 구하기
strftime() 함수에서 쓰이는 포맷 기호
실행 시간 지연시키기
random 모듈의 모듈 함수
import random
#1) random() 0~1사이의 임의의 실수 값을 반환(0,1은 포함되지 않음)
print(random.random())
#2) randint(시작범위, 종료범위) 특정구간의 임의의 정수 값을 반환(범위값을 포함)
print(random.randint(1, 6))
#3) choice(리스트) 리스트, 튜플 ,문자열의 요소 중 임의의 요소를 반환
print(random.choice([1,2,3,4,5,6,]))
print(random.choice(["가위","바위","보"]))
#4) shuffle(리스트) 리스트 요소의 순서를 임의로 섞음
list1 = ["가위", "바위", "보"]
print("원래의 리스트: ",list1)
random.shuffle(list1)
print("순서가 변경된 리스트", list1)
### result ###
0.13014957645371716
2
2
보
원래의 리스트: ['가위', '바위', '보']
순서가 변경된 리스트 ['보', '가위', '바위']
ex ) 주사위 만들기 게임
"""
주사위 게임 만들기
- 게임 시작 시간 표시 -> 주사위 던지기 -> 승부 판정하기 -> 계속 여부 확인
y -> 반복, n-> 게임 종료
"""
import time
import random
# 게임 시작 시간 표시
start = time.localtime(time.time())
print("게임 시작 시간: ", time.strftime("%H:%M:%S %p", start))
# 게임 여부 확인 변수 초기화
again = "y"
while True :
if again == "y" :
print("two dice are rolling...")
time.sleep(2)
me = random.randint(1, 6)
computer = random.randint(1, 6)
print("나", me)
print("컴퓨터", computer)
# 승부 판정
if me > computer :
print("나의 승리")
elif me < computer :
print("컴퓨터의 승리")
else:
print("무승부")
print("-" * 50)
else:
break
again = input("계속하시겠습니까?(y:예, n:아니오) ")
print("게임이 종료되었습니다.")
end = time.localtime(time.time())
print("게임 종료 시간: ",time.strftime("%H:%M:%S %p", end))
print("게임 사용 시간 ",end-start)
계속하시겠습니까?(y:예, n:아니오) y
two dice are rolling...
나 5
컴퓨터 1
나의 승리
--------------------------------------------------
계속하시겠습니까?(y:예, n:아니오)
>파일과 예외 처리
텍스트 파일에 데이터를 저장하기
"""
텍스트 파일에 데이터를 저장하기
"""
f = open("new_file.txt","w", encoding="utf-8")
names = ["홍지수", "안지영", "김연수","김예린","한정연"]
for name in names:
f.write(name + "\n")
print("파일 쓰기 완료!")
f.close()
텍스트 파일 읽기
#텍스트 파일 읽기
f = open("new_file.txt", "r", encoding="utf-8")
lines = f.readlines() # 리스트 반환
name_list = []
for line in lines:
temp = line.replace("\n","")
name_list.append(temp)
print(name_list)
open() 함수의 파일 모드
csv 파일 읽기
"""
CSV 파일 읽기
"""
import csv
file_name = "weather.csv"
f = open(file_name, "r", encoding="utf-8")
lines = csv.reader(f)
header = next(lines)
for line in lines :
# 특정 데이터 추출 -> 12월 25일의 최저기온 찾기
# 지점명[0], 일시[1],평균기온[2],최고기온[3]
# 최저기온[4], 강수량[5], 습도[6]
if line[1] =="12월 25일":
day = line[1]
min_temp = line[4]
print("%s 최저기온 : %s도" %(day, min_temp))
f.close()
### result ###
12월 25일 최저기온 : -1.2도
try ~ except ~ 구문
try:
print(x)
except NameError: # NameError
print("변수가 정의되지 않아 오류가 발생함!")
try ~ except ~ finally ~ 구문
def get_value(list1, n):
try:
result = list1[n]
except IndexError: # IndexError : 리스트의 인덱스 오
print("인덱스가 범위를 벗어남!")
result = -1
finally:
return result
data = [10, 20, 30]
print(get_value(data, 3))
print(get_value(data, 1))
인덱스가 범위를 벗어남!
-1
20