728x90

014. error message - list is not callable

 

에러 종류 : type 에러

발생 이유 :

1)함수명과 변수명이 중복 되었을 때

2)앞에서 선언한 변수명을 밑에서 함수로 호출할려고 하면 둘의 명칭이 겹치면서 오류

 

해결법 : 함수명과 겹치는 변수가 있는지 다른 겹치는 네이밍이 있는 확인할 것!

 

728x90
반응형
728x90

013. 결과값과 변수

 

위에서 myDiv는 나누기를 하고 난 후 몫과 나머지를 구하는 식인데 결과값이 2,1이다

a,b = 결과값 2, 1이

a=2, b=1로 들어간다

 

변수가 두개 있는 것 같은 것에서 멘붕왔던 때를 기억하며...

왼쪽꺼는 왼쪽으로 오른쪽꺼는 오른쪽으로 들어가는 걸 알아두자!

 


 

이번 개념은 간단하면서 중요하다. 추후에 알고리즘에서도 사용되는

a=b
b=c
c=a

이 개념에도 이어지기 때문인데, 처음 저걸 들었을 때 진짜 멘붕오고 무슨 말인지...ㄷㄷ

나중에 차차 또 알아보자. 일단 이런게 있다는 것만 알아두고 skip

 


 

❓튜플이 소괄호 생략하고 써도 되는데 혹시 무슨 관련이...?❓

❓ 아니면 구분하는 방법을 알아둬야 할 것 같기도 하고?❓

그래서 한번 type()를 찍어보았다.

변수를 복수로 지정할꺼면 넣을 값이랑 변수의 수를 맞춰줘야하고,

아래 에러메세지에서처럼 변수가 2개면 2개의 값을 넣어달라고 한다.

변수명 한개에 콤마( , )로 구분해주면 소괄호를 생략해도 튜플로 인식한다

 

 

❓변수명이 2개인데 tuple을 쓰고 싶다면❓

z값에 튜플 (1,2) 값이

y값에 튜플 (2,3) 값이 잘 들어가있다

결론 : 가능!

 

*ipynb 파일(주피터)에서 그냥 변수명만 쳐도 프린트함수처럼 출력이 되는데

print()를 써서 출력하는거랑 이상하게 결과값이 좀 다르게 나온다. 이전 포스팅에서 좀 다뤄봤는데 

아직도 이해가 다 안되서 죽겠다. 여튼 이런게 있다고 알고 넘어가자!

 

 

728x90
반응형
728x90

012. for문 - 행열이해 및 1,2차원 list생성법


행열이 각각 가로인지 세로인지 너무 햇갈렸다. 줄을 세운다해도 가로로 세울수도 세로로 세울 수도 있으니 줄개념도 아리송하고 오와 열을 맞춰서 서라 뭐 이런말로 기억하는 사람도 있다는데 나는 헷갈리더라.
이럴 때는 아테네 신전에 기둥을 생각해보자 이게 영어로 컬럼(column)인데 자연스럽게 세로인걸 알 수 있다. 나는 이렇게 해서 기억했으니 도움 되길 바란다.

range()

for문에 많이 쓰는 range는 숫자만 가능
for문 이외에도 40줄에서처럼 list(range(5))로 리스트를 만들수도 있다

.append()

추가시킬려는 변수명.append(추가할 값을 받는 변수명. 위에서는 for문의 변수)

2차원 리스트

2차원 리스트란 리스트 안에 하나의 값이 리스트로 이루어진 즉, 리스트 안에 리스트가 존재하는 리스트를 말한다.
나중가면 마치 수학의 행렬처럼 위의 예제에서 나왔듯이 2차원 리스트를 세로로 쭉 나열에서 잘 쓴다고한다.
- 1차원 리스트 : a = [1,2,3]
- 2차원 리스트 : a = [1,2,[3,4]]
위에서
1차원 리스트에서 마지막 값이 5인데,
2차원 리스트는 마지막 값이 [5,6]이다

1차원 리스트 마지막값과 2차원 리스트 마지막 값을 각각 type() 함수를 통해 찍어보면,
1차원은 평범한 숫자형
2차원은 list임을 알 수 있다

728x90
반응형
728x90

011. for문 - list와 for문의 변수 작동원리 이해

 

 

종종 for문이 반복되면서 이게 식안에서 어떻게 작동되는지 햇갈릴 때가 있었다. 어떤 때는 잘 알겠고 어떤 때는 햇갈려서 뭘 모르는지 잘모르는 상태였는데 계속 보다보니 

range를 사용하면 숫자여서 이해하기가 좀 쉬웠는데 변수명이 들어간다거나 다른 자료형이 들어가면 햇갈리는 걸 발견했고, 어떻게 작동하는지 방법을 찾아내서 팁을 공유할까한다.

 

<문장 안에서 해당 코드가 어떻게 작동하는지 확인하는 팁!>

print() 함수를 알고 알고 싶은 코드 중간중간에 넣어서 해당 값이 어떤건지 출력하게끔해서 중간중간 값을 체크하면 어떻게 돌아가는지 알 수 있다. for문 뿐만 아니라 다른 곳에서 가능!!

 

 

 

728x90
반응형
728x90

010. for문 - dict와 for문의 받는값 & tuple

위는 for문에 연산자 in으로 딕셔너리 값을 받아서 값을 도출하는 식이다

 

for문에 딕셔너리 값을 받으면 뭘로 값이 나올까?

키값이 나온다

 

for문의 결과값을 밸류값으로 받고 싶다면?

변수명.values()

 

for문의 결과값을 키값, 밸류값 둘 다 받으려면?

변수명.items()

 

for문에서 tuple은 for문의 변수를 두개 써도 된다

ex) for a,b in dData:

예처럼 a와 b 두개의 변수를 써도 된다. 튜플로 변수을 지정할 때 괄호를 생략해도 튜플로 인식하는거랑 같다

(원래는 양쪽 다 괄호를 쳐줘야한다)

 

 

728x90
반응형
728x90

009. while문 - 가진 물품수에서 판매될시 차감 및 소진시 

 

 

내가 만약 자판기의 자동화를 프로그래밍 한다면?

이라는 자기물음에 매번 단순한 변수지정이나 +1을 많이보다가 -1로 한정된 재화 안에서 소진되는 물품을

만들 때 자주 쓰일 것 같아서 복습하기 위해 가져왔다.

 

유용한 쓰임새

한정된 재화 안에서 소진되는 물품의 수 카운트할 때

728x90
반응형
728x90

008. 초기값 지정의 의미 

 

 

초기값 지정이란?

위의 이미지처럼, 미리 변수를 만들어두는 것이다.

 

초기값 지정이란 용어를 왜 알아야할까?

일을 혼자하는게 아닌 협업이기 때문에 이런 용어들을 알아야 소통이 쉬워진다!

 

초기값 지정, 왜 하는걸까?

복잡한 여러 식과 계산을 하기 전에, 미리 변수를 만들어둔다. 변수는 프로그래밍에서 어떤 값이나 데이터의 주소를 저장해두는 공간이라고 할 수 있다. 즉, 복잡한 식들에서 중간의 값을 저장해두거나 결과값을 도출하기 위해 쓴다고 볼 수 있다. 

위의 예제에서 처럼 

728x90
반응형
728x90

007. str과 repr 차이

 

 

 

여러 자료 찾아보다가 그나마 이해가 잘되는 분의 글을 기억할려고 캡쳐해뒀는데 누구인지까지 캡쳐가 안되서 작성자분 보시면 양해부탁드립니다ㅠㅜ

 

__str__과 __repr__

배우던 도중 퀘스쳔 마크가 뜬 것과 위의 둘이 관련이 있어서 찾아찾아보게되었다

사실 이 글을 쓰는 지금도 정확히 파이썬에서 어떻게 어우려서 작동하는지 완전히 이해하지 못했다

앞으로도 계속 배울꺼지만 일단 잊지않게 복습해둔다

 

간단하게 둘은 메소드(method)이며,

__str__ : 사람이 보기(인식) 쉽게 출력하는 방법 // 객체의 비공식적 문자열 출력

__repr__ : 컴퓨터가 인식할 수 있게 출력하는 방법 // 객체의 공식적 문자열 출력

 

주피터를 쓰면서 변수명을 그냥 적으면 print()를 쓰지 않아도 결과값이 출력이 되는데

위의 이미지처럼 결과 값이 다르다

그래서 다시 한번 관심을 갖게 되었는데 이번에 새로 알게 된 것은, 

 

변수명만 선언한 것이 __repr__이고, 주피터에서 자동으로 이렇게 한다고 한다.

print() 함수를 사용한게 __str__이다.

 

 

 

 

datetime 모듈을 써보다가 __repr__ 과 __str__의 출력 차이가 모듈에서 이렇게 날 줄 몰랐다...ㄷㄷ

차차 더 깊은 이해를 위해 나올 때마다 찾아보고 물어봐야겠다

아직은 찾아보다가 이해도 다 안되고 번아웃 될 것 같아서 패스

 

*프로그램에서 편의를 위해 자동적으로 이것저것 해주는 것만큼 왜 그런지 작동 원리를 알고,

더 내 수족처럼 사용할 수 있게 정진해야겠다!!!

 

728x90
반응형
728x90

006. 조건문 - 조건부 표현식 if문 

 

 

 

 

조건부 표현식에서 if문을 연속으로 써보자

(조건부 표현식에서는 elif 사용불가)

 

x = 0
do_it = "양수" if x > 0 else "zero" if x == 0 else "음수"
print(do_it)

if문이 추가 된 것을 나누어 보자

# 위의 if문 두개가 연결 된 것을 쉽게 이해하기 위해 나눠보자

x = 0
do_it = "양수" if x > 0 else "zero or 음수"

#"zero" if x == 0 else "음수"
print(do_it)

이러면 결과값이 false이므로 zero or 음수로 나온다

728x90
반응형
728x90

005. 조건문 - 조건부 표현식 if문 

 

 

 

조건부 표현식이란?

조건문을 한줄로 짧게 표현할 수 있게 해주는 식

 

콜론(:) 사용x

반드시 if, else와 사용해야함

elif 사용 불가하며, if를 연속적으로 사용해야함

*lambda 함수도 응용가능

 

 

조건부 표현식 사용법

ㅣTrue일 경우의 식ㅣ if ㅣ조건식ㅣ else ㅣFalse일 경우의 식ㅣ
score = 50
message = "pass" if score >= 50 else "non-pass"
print(message)

다음 페이지에서 if 연속문을 쓴 조건부 표현식을 해본다

728x90
반응형

+ Recent posts