본문 바로가기
First step/AI 기초반

[TIL]21.06.21

by Joshua21 2021. 6. 23.

'''
#계산기 문제
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