2020년 8월 22일 토요일

[파이썬] 윤성우의 열혈 파이썬: 중급편, Story 15. 함수 호출과 매개변수 선언에 있어서 *와 **의 사용 규칙

Untitled
In [1]:
# -*- encoding : utf-8 -*-

# 함수 호출 시, dict 매개변수 앞에 ** 를 사용하여 dict의 values 를 전달할 때 주의하여야 할 사항
#
# 1) 함수 정의에 있는 매개변수의 갯수와
#    함수 호출 시, 전달하는 dict 매개 변수의 구성 요소 갯수가 같아야 함.   ( 쉬움 )
#
# 2) 함수 정의에 있는 매개변수의 이름들과
#    함수 호출 시, 전달하는 dict 매개 변수의 key 이름들이 같아야 함. ( 책의 앞 부분에 설명되어 있으나 91 page 에서 강조가 안 되어 있음. )
#    
#    who_2 함수의 정의에 매개변수 이름은 ( c, b, a ) 임.
#
#    해당 함수 호출 시, 
#    who_2( **{ 'a' : -1, 'b' : -2, 'c' : -3 } )
#    key 이름과 동일한 매개변수에 각 value 가 전달됨.



def who ( a, b, c):
    print( a, b, c)
    print( "1st ", a)
    print( "2nd ", b)
    print( "3rd ", c, "\n------\n")

def who_2 ( c, b, a):
    print( c, b, a)
    print( "1st ", c)
    print( "2nd ", b)
    print( "3rd ", a, "\n------\n")


list_3 =  [ 11, 12, 13 ] 
who( *list_3 )

who( *[21, 22, 23 ] )
who( *(21, 22, 23 ) )
who( * "abc" )

who( * [ 1, 2, [ 3, 4, 5 ] ] )

# dictionary 를 전달할 경우,
# func( * dict ) 하면 , key 값이 풀어서 매개변수에 할당한다. 
who( *{ 'x' : -1, 'y' : -2, 'z' : -3 } )

# dictionary 를 전달할 경우,
# func( ** dict ) 하면 , value 값이 풀어서 매개변수에 할당한다. 
# who( **{ 'x' : -1, 'y' : -2, 'z' : -3 } )  # 이렇게 하면 dict의 key 가 함수 매개변수 이름과 달라서 안 된다.
who  ( **{ 'a' : -1, 'b' : -2, 'c' : -3 } )


who_2( **{ 'a' : -1, 'b' : -2, 'c' : -3 } )
11 12 13
1st  11
2nd  12
3rd  13 
------

21 22 23
1st  21
2nd  22
3rd  23 
------

21 22 23
1st  21
2nd  22
3rd  23 
------

a b c
1st  a
2nd  b
3rd  c 
------

1 2 [3, 4, 5]
1st  1
2nd  2
3rd  [3, 4, 5] 
------

x y z
1st  x
2nd  y
3rd  z 
------

-1 -2 -3
1st  -1
2nd  -2
3rd  -3 
------

-3 -2 -1
1st  -3
2nd  -2
3rd  -1 
------

2020년 8월 7일 금요일

주피터 노트북 구동 시, chrome 새 창 연결시키기.

Windows 10 에서 

Jupyter notebook 이나

jupyterlab 을 구동시킬 때, 


기본적으로는 Microsoft Edge 로 창이 띄워지고,

여기서 시작된다. 


Window 에서 default browser를 변경시키지 않고,

설정만으로 Edge 가 아닌 chrome 을 동작시키려면,

 jupyter_notebook_config.py 에서

와 같이 기입해 주면 된다. 


--new-window 옵션을 주어서

이미 구동되어

여러 창이 띄워져 있는 chrome 창이 아니라,

새로운 chrome 을 새로 띄우고, 

여기에 jupyter notebook을 띄워 준다. 



2020년 7월 18일 토요일

[python ] find 와 rfind 사용 예제

str = "what isAisBisCis"

print( "location : ", str.find("is") )
print("\n\n")


############ finding from first #####################
index = -1
while True:
    index = str.find( "is", index + 1 )


    if (index == -1) :
        break

    print("num : {:3d} : {}".format( index, str[index:] )  )

print("\n\n")
location :  5



num :   5 : isAisBisCis
num :   8 : isBisCis
num :  11 : isCis
num :  14 : is



In [2]:
print( "location : ", str.rfind("is"                        ) )
print( "location : ", str.rfind("is", 0         , len(str)  ) )



############ finding from first #####################
index =len(str) 
while True:
    index = str.rfind( "is", 0, index )


    if (index == -1) :
        break

    print("num : {:3d} : {}".format( index, str[index:] )  )

# num :  14 : is
# num :  11 : isCis
# num :   8 : isBisCis
# num :   5 : isAisBisCis
location :  14
location :  14
num :  14 : is
num :  11 : isCis
num :   8 : isBisCis
num :   5 : isAisBisCis

2020년 5월 28일 목요일

javascript 의 ==, === , if 연산자 비교

https://dorey.github.io/JavaScript-Equality-Table/

2020년 5월 9일 토요일

k * nCk = n * ( n-1 C k-1) : 공식 연상 방법

 
k * nCk = n * ( n-1 C k-1)

해당 식의 증명은

https://www.youtube.com/watch?v=E0T5D5vczhg
의 10:00 에 수악중독님이 설명해 주심.

쉽게 연상하는 방법도 수악 중독님이 댓글에 설명해 주심.

n명 중 k명의 임원진을 뽑고, 그 중에 한 명을 대표로 결정하는 방법이 nCk * k 가지가 있다고 볼 수 있죠. 아니면 대표를 한 명 먼저 뽑고, 나머지 k-1 명의 임원진을 뽑는다고 본다면 경우의 수는 n * (n-1 C k-1) 이 됩니다.


이렇게 빨리 답변 주셔서 감사합니다. 선생님께서 알려주신 방법대로 임원진 k 명을 뽑고, 임원진 중 1명은 대표인 이 경우를 생각하니까, 1) 임원진 k명 먼저 선택하고, 선택된 k명의 임원진에서 대표 1명을 선택하면, nCk * kC1 = nCk * k = k * nCk 2) 대표이자 임원이 될 사람을 먼저 1명 선택하고, 나머지 n-1 명에서 k-1 명의 임원진 선택 nC1 * (n-1 C k-1 ) = n * (n-1 C k-1 ) 선생님 덕분에 이 공식 아주 오랜 시간 잊지 않을 것 같고, 잊더라도, 금방 다시 생각해 낼 수 있을 것 같습니다. 정말 감사합니다 X 10!

2020년 5월 8일 금요일

k (n C k )^2 정리

https://www.youtube.com/watch?v=XQ2IgQs9a-4


이항정리 - 대표유형12

9분 43초 부터...

k (n C k )^2 정리하는 것 복습하기.


또 k * nCk = n *  n-1 C k-1

이것의 단순 증명 말고...
직관적으로 이 정리가 어떤 내용인지 고민해 보기.

팔로어