공부/파이썬 2021. 9. 26. 19:12

20210926 점프 투 파이썬

04-1 함수

 

def 함수이름( 매개변수 ) :

    수행할 문장1

    수행할 문장2

....

 

def add(a,b,c):

    return a+b+c

def add_print(a,b,c):

    print("%d, %d, %d 의 합은 %d입니다" % ( a,b,c,a+b+c) )

def say():

    return 'hi world'

def test_func(a,b)

    return a-b

test_func(4,1) = 3

test_func(b=3, a=10) = 7

 

매개변수 갯수를 모르는 경우 *매개변수 로 한번에 받을 수 있다.

def add_all( *num )

    result = 0

    for i in num:

        result = result + i

    return result

매개변수 갯수를 모르는 경우2  *매개변수 앞에 추가로 매개변수 넣을 수도 있음

def add_choice( choice, *num )

    if choice == "add" :

        result = 0

        for i in num :

             result = result + i

    elif choice == "mul":       

        result = 1

        for i in num :

             result = result * i

    return result 

매개변수를 키워드포함으로 받을 수도 있다. 딕셔너리화 가능

def print_kwargs(**kwargs):

    print(kwargs)

print_kwargs( a=1 ) -> {'a':1}

print_kwargs( name='test', a=2) -> {'name':'test', 'a':2}

 

함수의 결과값은 언제나 하나지만 여러개를 반환하려고 할 경우 튜플로 반환해준다

def ttt(a,b):

    return a+b, a*b, a-b

print( ttt(2,3) )-> (5, 6, -1)

 

매개변수에 미리 초기값을 넣어서 입력을 생략하게 할 수도 있다. c랑 동일

def tttt( a,b=3)

    return a+b

print( tttt(6) ) -> 9

 

함수내의 변수는 함수 내에서만 쓸수 있지만

global 가능

 

a = 1

def test() :

    global a

    a = a+1

test()

print(a)

 

def 말고 간결하게 함수 선언시 사용하는 lambda 

add = lambda a, b : a+b

print( add( 3,4 ) ) ----> 7

def add2(a,b):

    return a+b

print( add2(3,4) ) -----> 7

한줄짜리 간결한 함수 만들때 쓴다.

 

 

 

 

    

 

공부/파이썬 2021. 9. 26. 18:30

20210918 점프 투 파이썬

- 18일 공부했지만 26일 문서 작성

 

03-3 for 문

파이썬과 C의 가장 큰 차이중 하나

C의 for문이 쓰기 편한 while 에 가깝다면

파이썬의 for문은 리스트나 튜플 문자열등의 순환을 위한 명령이다.

while 문과 동일하게 continue 사용 가능 

 

test_list = ['one', 2, 'three', 4]

for i in test_list:

    print(i)

test_list2 = [ (1,2), (3,4) , (5,6) ]

for (first, second) in test_list2:

    print( first + second )

 

for 문과는 별개지만 for와 자주 사용 하는 range

a = range(10)  <- range(0,10) <- 0,1,2,3,4,5,6,7,8,9

a = range(1,11)  <- 1,2,3,4,5,6,7,8,9,10

range 개채를 생성한다.

 

a = 0

for i in range(1,11):

    a = a+i

a == 55

즉 특정 범위를 가진 개채를 쉽게 만들어줘서 for에서 사용하기 쉽다.

 

for i in range(2,5) :

    for j in range(1,10):

        print ( i*j, end=" ")

    print( " " )

구구단 2~4단 출력

 

리스트 내포 

for문의 결과가 리스트로 나오는 경우가 많은데(반복 처리의 결과) 아예 처음부터 리스트생성 시 

for문을 초기화에 사용 할 수 있다.

 

a = [1,2,3,4]

result = [ num * 3 for num in a ]

이경우 result [3,6,9,12]

result = [num*3 for num in a if num % 2 == 0]

이경우 if문으로 걸러져서 [6,12]

result = [x*y for x in range(2,5)

                 for y in range(1,10)] 

이 경우 result  는 구구단 2~4단 [2, 4,8,10,12,14,16,18, 3,6,9,12,15,18,21,24,27, 4,8,12,16,20,24,28,32,36 ] 

공부/파이썬 2021. 9. 5. 18:56

20210905 점프 투 파이썬

03-1 if문

if 조건 :

    실행

    실행

elif 조건2 :

    실행

    pass

    실행(실행 안됨)

 else:

    실행

C랑은 다르게 중괄호로 문단이 구성되는게 아니라 들여쓰기로 실행 문단이 구성된다.

들여쓰기는 탭이나 공백문자 둘다 가능하지만 같은 너비여야 같은 문단으로 인식 되니까 잘할것

조건 은 비교 연산자, and, or, not 사용가능

특이하게 x in 리스트, x not in 리스트 도 사용 가능하다.

리스트 대신 문자열 튜플 등등 가능

pass 는 들여쓰기 문단 아래 를 실행하지 않는걸로 한다. 보통은 하나의 if문을 패스할때 사용

 

03-2 while 문

if문이랑 비슷한 형태로 사용한다

들여쓰기로 문단 구성.

while 조건 :

    실행

    실행

    if 조건2 :

        conticnue

    실행

    if 조건3 :

        break

continue 랑 break는 C랑 동일하게 사용

조건검사로 가던지 while문을 빠져나가던지

 

공부/파이썬 2021. 8. 22. 17:51

20210822 점프 투 파이썬

02-6 집합 자료형

리스트지만 중복과 순서가 없는 리스트

s1 = set([1,2,3,4])

순서가 제멋대로 라서 순서정렬해서 쓰려면 리스트나 튜플로 변환해서 사용

L1 = list(s1)

말그대로 집합이기 때문에 교집합이나 합집합, 차집합 연산이 가능하다.

교집합 s1 & s2       s1.intersection(s2)

합집합 s1 | s2        s1.union(s2)

차집합 s1 - s2       s1.difference(s2)

교집합, 합집합은 순서 무관 (s1&s2) is (s2&s1) true

집합에 값 하나 추가할땐 s1.add(값), 값 여러개 추가할 땐 s2.update(리스트)

집합내 값 제거는 s1.remove(값)

 

02-7 불 자료형

참거짓. True, False

2>1, 1==1

문자열에 값이 있으면 참 비어있다면 거짓

리스트, 튜플, 딕셔너리, 집합에 값이 있으면 참 비어있다면 거짓

숫자형에서 0은 거짓 그외의 숫자는 참, 숫자가 아니면 거짓

while 조건문:

if 조건문:

else:

bool(값) 으로 참거짓 식별 가능

 

02-8 변수

자료형을 지정하지 않고 사용. 

c나 c++ 과의 차이라면 값(숫자 문자)이 저장된 주소에 대한 저장이라서

a = 3 or "test"

b = 3 or "test" 

이면 a와 b의 id는 동일하다. id(a) == id(b) , a is b True

리스트같은 자료형에선 값에 상관없이 서로 다른 주소를 지정하는 차이가 있다.

a = [1,2,3]

b = [1,2,3] 

인 경우 a와b는 같은 주소가 아니다. 따라서 a리스트의 값을 변경해도 b에는 변화가 없다.

a is b False

하지만 위의 경우에서 

a = b 이렇게 하면 a 에 b의 주소값이 할당되서 같은 주소를 의미하게 된다. 

이경우 a를 변경하면 b도 변경이 된다(같은 리스트의 주소값이기 때문)

b리스트에 a와 동일한 값을 가진 다른 리스트를 넣으려면

b = a[:] 이렇게 리스트 내 값을 하나씩 따로 복사해야 한다.

혹은 

from copy import copy

b = copy(a)

이렇게 copy모듈을 사용해야한다.

a, b, c = 3, 5, 10

(a , b) = 'test1, 'test2'

a, b = ('test4', 590)

[a,b] = [999, 19238]

a = b = c = 'python'

예외

a, b = b, a

이경우 b와 a가 서로 바뀐다.

 

 

 

 

공부/파이썬 2021. 8. 8. 19:14

20210808 - 점프투파이썬

02-3 리스트 자료형 

 - 일단 C의 리스트보단 좀더 쓰기 편하다.

 - a = [ 1, 2, 'd' ] 요런 식으로 

 - 리스트의 인자로 리스트를 넣을 수도 있고

 - 서로 다른 타입의 데이터를 하나의 리스트로 관리하는 것도 가능

 - 데이터 추가, 삭제, 구간자르기, 찾기(인덱스), 벡터나 배열같은 접근 가능

 - 리스트끼리 더하거나( 리스트 뒤에 더해지는 리스트가 붙음)

 - 리스트 더하기를 반복하는 곱샘도 가능하다.

 - 전체를 정렬하거나 순서를 정반대로 바꾸는 것도 한번에 가능

 

02-4 튜플 자료형

 - 수정, 삭제, 추가를 못하는 리스트

 - a = ( 1, 2, 'd' ) 요런 식으로 

 - 상수 쓰듯 쓰면 될듯

 

02-5 딕셔너리 자료형

 - 이거.. std::map 이네 

 - dicTest = { 'anem':'dddd', 1:'vbbb', 'cdv':23234, 'lis':[1,2,3,'dd'] }

 - 리스트랑 마찬가지로 서로 다른 타입의 데이터를 같은 딕셔너리 내에서 관리 가능

 - 좀더 다른거라면 value가 아니라 key에 리스트를 넣을 순 없음

 - 키값만 리스트로 볼수도 있고 dicTest.keys()

 - 반대로 value만 리스트로 볼수도 있고 dicTest.values()

 - dicTest['anem'] 이렇게 value를 접근하거나 (key 없으면 오류 발생)

 - dicTest.get('anem') 이렇게도 가능 (key 없으면 오류대신 None 반환)

 - dicTest.get('oo', 'default?' ) 이러면 key가 없으니 None 반환이지만 'default?'를 대신 반환

 - 'ㅇㅇㅇㅇ' in dicTest 이건 있냐 없냐 없으니까 False