이유는 함수 내에서 정의되어진 변수 result는 그 함수 내에서만 작동하고 함수가 끝나면 메모리를 잃게 되어
변수가 사라진다. 그래서 print(result)문을 실행하면 name 'result' is not defined라고 오류문을 내뱉는다.
def calculate_area(radius):
result = 3.14 * radius **2
return result
r = float(input('원의 반지름: '))
area = calculate_area(r)
print(result)
지역변수, 전역변수 개념을 확고히 하자.
r은 지역변수로서, 함수 내에 r을 활용하여도 전역변수 r에 할당된 값이 작용한다.
def calculate_area():
result = 3.14*r**2
return result
r = float(input('원의 반지름: '))
area = calculate_area()
print(area)
para_func 함수는 3개의 파라미터를 입력받는다. 여기서 주목할 것이,
v3 = 0으로 인해 v3의 default값이 0으로 주어진다.
따라서, para_func(10,20)으로 입력해도 오류가 나지 않는다. why?
para_func(10,20)은 para_func(10,20,0)으로 작동하기 때문이다.
para_func(10,20,30)을 해주면 v3=0의 default값에 v3 = 30이 들어간다.
def para_func(v1,v2,v3=0):
result = 0
result = v1 + v2 + v3
return result
##전역 변수 선언 부분 ##
hap = 0
##메인 코드 부분 ##
hap = para_func(10,20)
print(hap)
hap = para_func(10,20,30)
print(hap)
*para를 활용하면, 파라미터 값 갯수 제한이 없어진다. 1개만 넣어도 되고, 2개, 3개 , etc...
넣는 만큼 파라미터로써 작용할 수 있도록 *를 붙여준다.
여기서 주목할 것이, *para에서 para는 튜플 형태로 들어가게된다.예를들어,
para_func(10,20)을 하게 되면 para = (10,20) tuple형식이 된다.
def para_func(*para):
result = 0
for num in para:
result += num
print(type(para))
return result
##전역 변수 선언 부분 ##
hap = 0
##메인 코드 부분 ##
hap = para_func(10,20)
print(hap)
hap = para_func(10,20,30)
print(hap)
for 문은 in 뒤의 값을 iterating하는 반복문이다.
in 뒤에는 다양한 자료형이 올 수 있고, 다음과 같이 string을 넣어주면, string을 값 하나하나씩
뽑아서 보여준다. string 자체를 넣어도 되고, string이 할당된 변수를 입력해주어도 상관없다.
for x in 'hello python':
print(x)
aStr = 'hello python'
for ch in aStr:
print(ch)
for 문에서 가장 많이 사용하는 것이 range함수이다.
range(start,end,step)순으로 입력하면 되며, start, step은 각각 0,1의 default값을 갖는다.
import random
numbers = []
for num in range(0,10):
numbers.append(random.randrange(0,10))
print('생성된 리스트',numbers)
for num in range(0,10):
if num not in numbers:
print('숫자 {}는(은) 리스트에 없네요.'.format(num))
생성된 리스트 [4, 0, 3, 3, 5, 8, 9, 5, 5, 3]
숫자 1는(은) 리스트에 없네요.
숫자 2는(은) 리스트에 없네요.
숫자 6는(은) 리스트에 없네요.
숫자 7는(은) 리스트에 없네요.
sort함수와 sorted함수의 차이점은?
sort는 리스트에 적용을 시키면 그 리스트 자체가 바뀌고,
sorted는 리스트에 적용시켜도 따로 할당을 시키지 않으면 적용되지 않는다.
time 함수는, 현재 시간을 기록시켜주는 함수이다.
import time
n1 = input('Press Enter and wait for 20 seconds.')
start = time.time()
n2 = input('Press Enter and wait for 20 seconds')
end = time.time()
real_time = end - start
if real_time>20:
print(real_time-20)
else:
print(20-real_time)
Press Enter and wait for 20 seconds. Enter
Press Enter and wait for 20 seconds Enter
10.602973222732544
random.randint를 사용하여 문제의 index번호를 활용하였다.
import random
import time
test = ['snake','frog','fox','cat','dog']
num = 1
start = time.time()
while test:
print('*문제{}'.format(num))
question = random.randint(0,len(test)-1)
print('{}'.format(test[question]))
while True:
answer = input()
if test[question] == answer:
print('통과!')
num +=1
del test[question]
break
else:
print('다시푸세요.')
print('{}'.format(test[question]))
continue
end = time.time()
print('걸린시간 %1.1f'%(abs(start-end)))
*문제1
cat
c
다시푸세요.
cat
cat
통과!
*문제2
frog
frog
통과!
*문제3
dog
dog
통과!
*문제4
fox
fox
통과!
*문제5
snake
snake
통과!
걸린시간 6.7
random.choice를 활용하였고, 해당 값을 통과하면 list자료형 내에 존재하는 remove함수를 활용하여
통과한 문제를 제거한다.
import random
import time
test = ['snake','frog','fox','cat','dog','mouse','sheep','deer']
num = 1
num2 = 1
start = time.time()
while test:
num +=1
print('*문제',num)
question = random.choice(test)
print(question)
while True:
num2+=1
answer = input()
if question == answer:
print('통과!')
test.remove(question)
break
else:
print('다시푸세요.')
print(question)
continue
end = time.time()
print('걸린시간 %1.1f'%(abs(start-end)))
print('정답률:',num/num2*100,'%')