'''
#계산기 문제
def plus(a,b):
return a+b
def minus(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
return a/b
def etc(a,b):
return a%b
print('='*30,'\n1.더하기\n2.뺴\n3.곱하기\n4.나누기\n5.나머지구하\n6.나가\n','='*30)
result=0
while True:
x=int(input('원하는 연산자를 입력해 주세요.'))
if 0< x <6:
y=int(input('첫번쨰 숫자를 입력하세요.'))
z=int(input('두번쨰 숫자를 입력하세요.'))
if x==1:
result=plus(y,z)
print('결과는',result,'입니다.')
elif x==2:
result=minus(y,z)
print('결과는',result,'입니다.')
elif x==3:
result=mul(y,z)
print('결과는',result,'입니다.')
elif x==4:
result=div(y,z)
print('결과는',result,'입니다.')
elif x==5:
result=etc(y,z)
print('결과는',result,'입니다.')
elif x==6:
break
else:
print('잘못 입력 하셨습니다.')
#함수 하나에 기능 여러개 넣기
def cal(a,b,c):
if c == '+':
return a+b
elif c == '-':
return a-b
elif c == '*':
return a*b
elif c == '/':
return a/b
elif c == '%':
return a%b
else:
return print('잘못 입력 하셨습니다.')
print('='*30,'\n1.더하기\n2.뺴\n3.곱하기\n4.나누기\n5.나머지구하\n6.나가\n','='*30)
result=0
while True:
x=int(input('원하는 연산자를 입력해 주세요.'))
if 0< x <6:
y=int(input('첫번쨰 숫자를 입력하세요.'))
z=int(input('두번쨰 숫자를 입력하세요.'))
if x==1:
result=cal(y,z,'+')
print('결과는',result,'입니다.')
elif x==2:
result=cal(y,z,'-')
print('결과는',result,'입니다.')
elif x==3:
result=cal(y,z,'*')
print('결과는',result,'입니다.')
elif x==4:
result=cal(y,z,'/')
print('결과는',result,'입니다.')
elif x==5:
result=cal(y,z,'%')
print('결과는',result,'입니다.')
elif x==6:
break
else:
print('잘못 입력 하셨습니다.')
if eval(('3+5')==8):
else:
#연습문제 계산기 게임만들기
import random
def make_question(): # 계산기 문제만드는 함수
a=random.randint(-99,99)
b=random.randint(-99,99)
op=random.randint(1,3)
q=str(a)
if op==1:
q= q+'+'
elif op==2:
q= q+'-'
elif op==3:
q= q+'*'
q=q+str(b)
return q
sc1=0
sc2=0
for i in range(5):
q=make_question()
print(q)
ans=(input('='))
r= int(ans)
if eval(q) == r:
print('정답')
sc1=sc1+1
else:
print('오답')
sc2=sc2+1
print('정답',sc1,'오답',sc2)
#연습문제 학생인적 관리
person={}
while True:
print('1.인적사항 등록\t2.학생 검색\t3.학생 수정\n4.학생 삭제\t5.전체학생 보기\t6.프로그램 종료')
select = int(input('원하는 번호를입력하세요 :'))
if select ==1:
nschno=int(input('학번'))
stname=input('이름')
score=input('학점')
person[nschno]=[stname,score]
elif select == 2:
serch=int(input('검색을 원하는 학생의 학번을 입력 :'))
print('학번 :',serch)
print('이름 :',person.get(serch)[0])
print('학점 :',person.get(serch)[1])
elif select == 3:
serch=int(input('수정을 원하는 학생의 학번을 입력 :'))
print('학
번 :',serch)
print('이름 :',person.get(serch)[0])
print('학점 :',person.get(serch)[1])
inmodify=input('수정할 값을 입력하시오(이름,학점) :')
outmodify=input('수정할 값 :')
if inmodify=='이름':
person.get(serch)[0]=outmodify
elif inmodify=='학점':
person.get(serch)[0]=outmodify
print('수정 완료되었습니다.')
elif select == 4:
serch=int(input('삭제를 원하는 학생의 학번을 입력 :'))
print(person.get(serch),'삭제 완료 되었습니다.')
del person[serch]
elif select == 5:
print(person)
elif select == 6:
print('종료')
break
else:
print('잘못 입력하셨습니다.')
#연습문제 터틀대포 만들기
import turtle as t
def turn_up():
t.left(2)
def turn_down():
t.right(2)
t.goto(300,0)
t.up()
t.goto(250,2)
t.down()
t.color('green')
t.pensize(4)
t.goto(200,2)
t.up()
t.goto(0,0)
t.pensize(1)
t.color('black')
t.shape('turtle')
print(h)
#람다 표현식 lambda expression 함수를간편하게작성할수 있어서 다른함수의 인수로 넣을때사용
def plus_ten(x):
return x + 10
print(plus_ten(1))
#lambda에 매개변수를 지정하고 : 뒤에 반환값을 사용 이름이없어 익명함수 라고도함
plus_ten = lambda x :x+10
print(plus_ten(1))
#람다 표현식은 변수에 할당하지않고 자체로 호출가능
print((lambda x: x+10)(1))
#변수 가 필요한 경우 def로 함수를 작성하는게 나음
print((lambda x:y = 10; x+y)(1))
y=10
print((lambda x:y x+y)(1))
def plus_ten(x):
return x + 10
print(list(map(plus_ten,[1,2,3])))
#람다표현식을 인수로 사용하기
print(list(map(lambda x: x+10,[1,2,3])))
a=[1,2,3,4,5,6,7,8,9,10]
print(list(map(lambda x: str(x) if x %3==0 else x,a)))
#/ 식1(참) if 조건식1/ [else 식2(거짓)if 조건식2] /else 식3 /
a=[1,2,3,4,5,6,7,8,9,10]
print(list(map(lambda x: str(x) if x ==1 else float(x) if x==2 else x+10,a)))
#['1'(식1), 2.0(식2), 13, 14, 15, 16, 17, 18, 19, 20(식3)]
def cal (x):
if x==1:
return str(x)
elif x==2:
return float(x)
else :
return x+10
a=[1,2,3,4,5,6,7,8,9,10]
print(list(map(cal,a)))
#map에 객체를 여러개 넣기
a=[1,2,3,4,5,]
b=[2,4,6,8,10]
print(list(map(lambda x,y:x*y,a,b)))
plus_ten = lambda x : x+10
print(lambda x : x+10) #함수오브젝트값나옴
print(plus_ten) #함수오브젝트값나옴
data=plus_ten(1)
print(data)#11
a1=lambda x : x+10
print(a1(1))#11
a2=(lambda x : x+10)(1)
print(a2)#11
y=10
a_10 = lambda x : y+10
print(a_10(10))#20
a=[1,2,3,4]
b=[2,4,6,8]
a_l=list(map(lambda x,y : x*y,a,b,))
print('a_l=',a_l)
#filter 사용하기반복가능한 객체에서 특정 조건에 맞는 요소만 가져옴
def f(x):
return 5< x <10
a=[8,3,2,10,15,7,1,9,0,11]
print(list(filter(f,a)))
a=[8,3,2,10,15,7,1,9,0,11]
print(list(filter(lambda x: 5<x<10,a)))
#reduce는 반복가능한 객체의 각 요소를 지정된 함수로 처리한뒤 결과를 누적해서 반
def f(x,y):
return x+y
a=[1,2,3,4,5]
from functools import reduce
print(reduce(f,a))
print(reduce(lambda x,y:x+y,a))
#변수의 사용범위 알아보기 지역변수,전역변
x=10
def foo():
print(x)
foo()
print(x)
x=10#전역변수
def foo():
x=20 #지역변수
print(x)
foo()
print(x)#전역변수
#함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 써야함
x=10#전역변수
def foo():
global x
x=20 #지역변수
print(x)
foo()
print(x)#전역변수
def print_hello():
hello = 'hello, world!'
def print_message():
print(hello)
print_message()
print_hello()
def A():
x=10
def B():
x=20
B()
print(x)
A()
'''
#함수 바로 바깥쪽의 지연변수값을 변경하려면 nonlocal
def A():
x=10
def B():
nonlocal x #바로 바깥쪽의지역변수 값을변경 위쪽 x=20
x=20
B()
print(x)
A()
'First step > AI 기초반' 카테고리의 다른 글
[TIL]21.06.23 GUI기초2,계산기만들기 (0) | 2021.06.23 |
---|---|
[TIL]21.06.22 텍스트파일 읽기,수정하기,타자연습만들기,GUI기초1 (0) | 2021.06.23 |
[TIL]21.06.18 (1) | 2021.06.23 |
[TIL]21.06.17 (0) | 2021.06.23 |
[TIL]21.06.16 (0) | 2021.06.23 |