혼공파 05-3함수고급

암영·2022년 4월 29일
0

튜플

함수와 함꼐 많이 사용되는 리스트와 비슷한 자료형으로, 리스트와 다른점은 한번 결정된 요소를 바꿀 수 없다.

  • 튜플생성 방법
    (데이터,데이터,데이터.....)

텍스트 한줄씩 읽기

>>> tuple_test=(10,20,30)
>>> tuple_test[0]
10
>>> tuple_test[1]
20
>>> 

여기서 tuple_test[0]=50이렇게 값을 변경하려고 하면 에러가 발생한다. 다시 말하지만, 튜플은 내부요소 변경이 불가능하다.

괄호 없는 튜플

+)튜플 요소를 하나만 선언하는 경우 꼭! 뒤에 쉼표를 넣어야 한다. 쉼표가 없으면 튜플로 인식하지 않는다.
ex) (273,)

#리스트와 튜플의 특이한 사용
[a,b]=[10,20] //이와 같은 형태로 변수를 선언하고 할당할수 있다.
(c,d)=(10,20)

#출력합니다
print('a:',a)
print('b:',b)
print('c:',c)
print('d:',d)

[a,b]=10,20=(10,20)

리스트와 튜플은 이와 같은 형태로 변수를 선언하고 할당할 수 있다.
그런데! 튜플은 특이하게 튜플로 인식할 수 있는 경우는 괄호를 생략해도 된다.!

  • 괄호가 없는 튜플
# 괄호가 없는 튜플
tuple_test=10,20,30,40
print('#괄호가 없는 튜플의 값과 자료형 출력')
print('tuple_test:',tuple_test)
print('type(tuple_test):',type(tuple_test))
print()

#괄호가 없는 튜플 활용
a,b,c=50,60,70
print('괄호가 없는 튜플을 활용한 할당')
print('a:',a)
print('b:',b)
print('c:',c)
  • 변수의 값을 교환하는 튜플
a,b=10,20

print('교환전값')
print('a:',a)
print('b:',b)
print()

#값을 교환합니다 값을 바꾸는 거 아님 원래 있던 두개를 바꾸는거

a,b=b,a 
print('교환후 값')
print('a:',a)
print('b:',b)
print()

편리하게 사용할 수 있는 값교환 방법:a,b=b,a

튜플과 함수

튜플은 함수의 리턴에 많이 사용한다: 튜플을 사용하면 여러개의 값을 한번에 리턴할 수 있기 때문

  • 여러개의 값 리턴하기
#함수를 선언합니다.
def test():
    return(10,20)

#여러 개의 값을 리턴 받습니다.
a,b=test()

#출력합니다.
print('a:',a)
print('b:',b)

+) 튜플도 리스트처럼 +나 * 연산자를 사용가능하나 거의 사용하지 않는다.
-> 괄호없이 여러값을 할당할 수 있다는 점 기억하기!

랜덤하게 1000명의 키와 몸무게 만들기

#랜덤한 숫자를 만들기 위해 가져옵니다.
import random
#간단한 한글 리스트를 가져옵니다
hanguls=list("가나다라마바사아자차카타파하")
#파일을 쓰기모드로 엽니다
with open("info.txt",'w') as file:
    for i in range(1000):
    #랜덤한 값으로 변수를 생성합니다.
        name=random.choice(hanguls)+random.choice(hanguls)
        weight= random.randrange(40,100)
        height= random.randrange(140,200)
        #텍스트를 씁니다
    
        file.write("{},{},{}\n".format(name,weight,height))

반복문으로 파일 한줄씩 만들기

with open("info.txt",'r') as file:
    for line in file:
        (name,weight,height)=line.strip().split(",")
        #데이터에 문제가 있는지 없는지 확인합니다. 문제가 있으면 지나감
        if(not name) or (not weight)or(not height):
            continue
        
        #결과를 계산합니다
        bmi=int(weight)/((int(height)/100)**2)
        result=""
        if 25<=bmi:
            result='과체중'
        elif 18.5<=bmi:
            result='정상체중'
        else:
            result='저체중'
            
        #출력합니다
        print('\n'.join([
            '이름:{}',
            '몸무게:{}',
            '키:{}',
            'bmi:{}',
            '결과:{}'
            ]).format(name,weight,height,bmi,result))
        
        print()

문제

2.

numbers=list(range(1,10+1))

print('홀수만 추출하기')
print(list(filter(lambda x: x%2 == 1,numbers)))
print()

print('3이상 7미만 출력하기')
print(list(filter(lambda x: 3<=x<7,numbers)))
print()

print('제곱해서 50미만 추출하기')
print(list(filter(lambda x:x*x<50,numbers)))

괄호 주의해서 작성하기

profile
just do! -얼레벌레 굴러가는 공대생

0개의 댓글

관련 채용 정보