Search

반응형

'파이썬'에 해당되는 글 26건

  1. 2024.02.04 [파이썬 for AI]인공지능 머신러닝, 딥러닝 프로그래밍을 위한 파이썬 기초 1
  2. 2021.04.10 [왕초보]파이썬 변수 이해하기 편. ( Python variable)
반응형

안녕하세요. 신기한 연구소입니다.

카테고리를 보면 Software>Python(파이썬)에 파이썬 프로그래밍 포스팅을 예전에 올렸는데 갑자기 왜 파이썬일까요?

2020.09.28 - [Software/Python(파이썬)] - 파이썬(Python) 처음 시작하기 앞서...

 

파이썬(Python) 처음 시작하기 앞서...

안녕하세요. 신기한 연구소입니다. 파이썬(Python)이 존재하고 유명하다는 건 오래전 알았지만 최근까지 자바(Java)로 개발을 해 왔기에 접할 기회가 없었습니다. 공부하기 위해 책도 몇 권 사뒀지

tiboy.tistory.com

 

20년 9월 28일부터 시작해서 25개의 글을 포스팅했었네요.

20년 도면 시간이 정말 많아서 아마 집중해서 스터디하고 포스팅했던 기억이 있습니다.

대학 시절부터 Lisp 강의를 듣고 인공지능에 대한 환상 같은 것이 있었는데 21년도에 우연히 딥러닝 책을 보게 되었고 인공지능의 재미에 슬슬 빠져들기 시작했습니다.

수학 내용이 포함되어 있지만 나름 대학에서 미적분학 A+였던지라 재미있게 읽게 되었습니다.

20년이 훌쩍 지났지만 아직은 수학에 즐거움이 있고 인공지능이 점점 발전하고 필요성을 느끼고 있기에 나이를 떠나 올해는 인공지능에 올인해 볼 계획을 세웠습니다.

그전에 인공지능을 스터디하려면 머신러닝과 딥러닝을 스터디해야 하는데 보통 파이썬(python)으로 프로그래밍하거나 관련 라이브러리가 있기에 다시 복습하는 의미로 간단하게 인공지능을 위한 파이썬(python)을 정리하고자 이 포스팅을 시작해 봅니다.

내년에는 나름 인공지능 전문가가 되길 희망하면서 올해 열심히 달려보겠습니다.

아래 테스트 소스는 VSCode에서 파이썬을 설치 후 실행한 결과입니다.

 

1. 파이썬 숫자(Number)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print(1+2)
print(10-5)
print(4*5)
print(8/2)
print(8%5)
print(8//5)
print(8/5)
print(4+4*4)
print((4+4)*4)
print(2**4)
 
first = 5
second = 10
print(first + second)
 
print(2+3j)
cs

1번 라인은 단순한 연산입니다. 1+2는 3이므로 3이 출력됩니다.

2번 라인은 빼기 연산입니다. 5가 출력됩니다.

3번 라인은 곱하기 연산입니다. 20이 출력됩니다.

4번 라인은 나누기입니다.  4.0이 출력됩니다.

5번 라인은 나머지를 구합니다. 3이 출력됩니다.

6번 라인은 몫을 구합니다. 1이 출력됩니다.

7번 라인은 소수점을 출력합니다. 1.6이 출력됩니다.

8번 라인은 연산자 우선순위로 4*4를 먼저 계산하고 4를 더합니다. 20이 출력됩니다.

9번 라인은 괄호를 먼저 계산합니다. 32가 출력됩니다.

10번 라인은 거듭제곱으로 2의 4제곱으로 16이 출력됩니다.

12, 13라인은 변수에 숫자 5, 10을 할당했습니다.

14번 라인은 두 변수를 더합니다. 15가 출력됩니다.

16번 라인은 복소수를 나타내며 2+3j가 출력됩니다. j가 복소수를 의미합니다.

 

2. 파이썬 문자(Text)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
print('my text')
print("don't")
print('don\'t')
 
print('D:\myproj\node')
print(r'D:\myproj\node')
 
print("""
      my name
      is
      tiboy
      """)
 
print('hi' * 3 + ' jenny')
print('hi' ' jenny')
 
data = ('Hello my friends.'
        ' Goodbye buddy')
print(data)
 
name = 'Tom'
 
print('hi~!' + name)
 
longText = "abcdefghijklmn"
 
print(longText[0])
print(longText[-1])
print(longText[0:2])
print(longText[1:2])
print(longText[1:])
print(longText[:2])
print(longText[0:50])
print(longText[40:50])
 
#longText[0] = 'A'
print(longText[0])
 
print(len(longText))
cs

1번 라인은 my text가 출력됩니다.

2번 라인은 don't가 출력됩니다.

3번 라인은 \를 사용해서 ' ' 내부에 '를 출력하게 했습니다. don't가 출력됩니다.

5번 라인은 D:\myproj이 첫 줄에 출력되고 \n때문에 다음줄에 ode가 출력됩니다.

6번 라인은 텍스트 앞에 r을 붙여서 \n의 기능이 작동되지 않게 해서 D:\myproj\node로 출력됩니다.

8번~12번 라인은 더블 세 개 """를 이용해서 줄 바꿈 그대로 출력하게 할 수 있습니다.

14번 라인은 hi*3으로 hi가 세 번 출력되고 jenny가 그 뒤로 붙습니다.  hihihi jenny

15번 라인은 hi jenny가 출력됩니다.

17번~19번 라인은 data에 텍스트를 할당하고 Hello my friends. Goodbye buddy로 출력됩니다.

21번 라인은 name에 Tom을 할당했습니다.

23번 라인은 hi~!에 Tom을 붙여 출력합니다.

25번 라인은 longText에 abcdefghijklmn을 할당합니다.

27번 라인은 0번째 글자 a가 출력됩니다.

28번 라인은 -1번째로 뒤에서 첫 번째 글자 n이 출력됩니다.

29번 라인은 [0:2]로 인덱스 값이기에 첫 글자 0부터 3번째 2 이전까지를 출력합니다. ab가 출력됩니다.

30번 라인은 [1:2]로 두 번째 값 b만 출력됩니다.

31번 라인은 [1:]로 1 이후로 쭉 출력합니다. a가 빠진 bcdefghijklmn이 출력됩니다.

32번 라인은 [:2]로 3번째 앞까지 출력하기에 ab가 출력합니다.

33번 라인은 [0:50]인데 50까지 없기에 abcdefghijklmn가 출력됩니다.

34번 라인은 [40:50]으로 해당 문자열이 존재하지 않기에 빈값이 출력됩니다.

36번 라인은 #으로 주석처리를 한 이유는 문자열을 [] 사용해서 변경할 수 없습니다. 재할당을 해야 합니다.

39번 라인은 len을 사용해서 문자열 길이를 출력합니다. 14가 출력됩니다.

 

3. 파이썬 리스트(List) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
num = [2,4,6,8]
print(num)
 
print(num[0+ num[1])
print(num[-2])
print(num[-3:])
print(num[:-3])
print(num[:])
 
num = num + [10]
 
print(num)
 
num = num + [1215]
 
print(num)
 
print(num[6])
num[6=14
 
print(num[6])
 
num.append(16)
print(num)
 
text = ['a','b','c','d','e']
print(text)
text[2:4= ['C''D']
print(text)
 
text[2:4= []
print(text)
 
text[:] = []
print(text)
 
db1 = ['a','b','c']
db2 = ['d','e']
db3 = [db1, db2]
 
print(db3)
print(db3[1][1])
cs

리스트는 대괄호 사이에 쉼표로 값을 구분합니다.

다른 타입의 값들을 가질 수 있습니다.

1번 라인은 num 변수에 값을 할당해서 리스트를 만들었습니다.

2번 라인은 [2, 4, 6, 8]을 출력합니다.

4번 라인은 0번째와 1번째 인덱스에 해당하는 값을 더해서 6을 출력합니다.

5번 라인은 인덱스 -2로 리스트 뒤에서 2번째 값인 6을 출력합니다.

6번 라인은 [-3:]로 뒤에서 세 번째 인덱스 값부터 출력하기에 [4, 6, 8]이 출력됩니다.

7번 라인은 [:-3]으로 처음부터 뒤에서 세번째 인덱스까지 출력하기에 [2]가 출력됩니다.

8번 라인은 [:]로 모두 출력합니다. [2, 4, 6, 8]

10번 라인은 num 리스트에 [10]을 더합니다.

12번 라인은 [10]을 더한 [2, 4, 6, 8, 10]을 출력합니다.

14번 라인은 num 리스트에 [12, 15]를 더합니다.

16번 라인은 [12, 15]를 더한 [2, 4, 6, 8, 10, 12, 15]가 출력됩니다.

18번 라인은 6번째 인덱스 값인 15를 출력합니다.

19번 라인은 num 리스트의 6번째 인덱스에 14를 재할당 합니다.

21번 라인은 이제 6번째 인덱스의 값이 15가 아닌 14로 바뀌어 출력됩니다.

 23번 라인은 num 리스트에 append 함수를 사용해서 16을 추가했습니다.

24번 라인은 [2, 4, 6, 8, 10, 12, 14, 16]를 출력합니다.

26번 라인은 text 변수에 문자 값으로 리스트를 만들었습니다.

27번 라인은 ['a', 'b', 'c', 'd', 'e']를 출력합니다.

28번 라인은 [2:4]에 'C', 'D'로 재할당했습니다.

29번 라인은 ['a', 'b', 'C', 'D', 'e']로 재할당 값으로 바뀌어 출력되었습니다.

31번 라인은 [2:4]에 []로 빈 값을 할당했습니다.

32번 라인은 [2:4] 값이 빠진 ['a', 'b', 'e']이 출력되었습니다.

34번 라인은 []으로 전체 값을 비웠습니다.

35번 라인은 []을 출력합니다.

37번~38번 라인에 db1, db2 리스트가 할당되었습니다.

39번 라인은 db3에 db1, db2값이 할당되었습니다.

41번 라인은 db3에 db1, db2가 할당된 값이 출력됩니다. [['a', 'b', 'c'], ['d', 'e']]

42번 라인은 [1][1]로 마치 2중 배열 출력을 연상케 합니다. e가 출력됩니다.

 

이번 포스팅은 숫자, 문자, 리스트를 다루는 방법을 아주 간단하게 복습해 봤습니다.

다음 포스팅은 파이썬 연산자를 복습해 보겠습니다.

즐코딩 하세요.

미래의 인공지능 전문가 신기한 연구소였습니다.

 

 

반응형
반응형

안녕하세요. 신기한 연구소입니다.

며칠 전 중학생 아이가 갑자기 파이썬 아는지 묻더군요.

학교에서 배우기 시작했다는데 궁금한 게 많은가 봅니다.

게다가 이제 초등학교 2학년 아이도 파이썬이 뭐냐면서 자기도 하고 싶다고 하더군요.

그래서 가장 쉬운 책을 가지고 집에 굴러다니는 노트북에 파이썬을 설치했습니다.

그런데 막상 설명을 하는데 과연 책의 내용을 그대로 전달하면

프로그램을 처음 하는 아이가 과연 이해할 수 있을까?라는 의문이 들더군요.

그래서 최대한 쉽게 설명을 해봤는데..

이해를 잘 하더군요.

그래서 그 방법을 공유해보려고 합니다.

요즘 코딩 열풍에 책만 가지고 공부하기 힘든 친구들을 위해 

최대한 쉽게 설명해볼게요.

 

이번 포스팅에서는 파이썬 프로그램을 시작할 때 가장 먼저 접하는 변수에 대해 알아봅니다.

보통 변수라고 하면 데이터를 담는 그릇이나

어떤 값에 이름을 지어준다고 설명을 하고 있습니다.

그렇게 설명하니 처음 게다가 초등학생 저학년 아이가 이해를 못하더군요.

그럼 최대한 쉽게 설명을 해볼게요.

 

변수 이해하기.

이제 여러분은 편의점에 갔습니다.

이유는 시원한 슬러시를 사기 위해서입니다.

딸기를 좋아하니 딸기맛 슬러시를 편의점 언니에게 주문합니다.

"딸기맛 슬러시 하나 주세요!"

이제 편의점 언니는 커다란 1회용 컵에 맛있는 딸기맛 슬러시를 담아 줍니다.

우리가 주문한 대로 잘 담겨서 왔습니다.

차갑고 새콤 달콤한 딸기맛 슬러시를 다 먹고 나니

시원한 물 한 잔이 마시고 싶어서

정수기로 가서 방금 슬러시를 다 먹고 비어있는  1회용 컵에

물을 가득 담아봅니다.

 

여러분은 방금 변수를 사용했습니다.

바로 컵이 변수가 됩니다.

여러분의 주문을 받은 편의점 언니가

새로운 변수(컵) 하나를 꺼냅니다.

당연히 비어있습니다.

이제 여기에 한 가지 음료를 채울 수 있습니다.

물, 아이스커피, 슬러시 등 다양한 값(음료)들을 채울 수 있습니다.

물과 슬러시를 같이 넣으면 물도 슬러시도 아닌 이상한 맛이 되겠지요?

그래서 하나만 담아야 합니다.

다른 값(음료)을 넣고 싶다면 변수(컵)의 내용물을 다 비워야 합니다.

먹던지 버리던지..

그리고 새로운 값(음료)을 넣으면 됩니다.

다 쓴 변수(컵)는 쓰레기통에 버립니다.

다시 사용할 수 없게 되었네요.

그럼 변수(컵)를 또 써야 한다면?

새로운 변수(컵)를 꺼내면 됩니다.

 

실제 파이썬 프로그램에서 사용하는 값(음료 같은 것)은

참/거짓, 정수(1, 299, 5000 등), 실수(소수점이 있는 3.14, 55.4 등), 문자열("가나다라", "abc")

같은 것이 있답니다.

 

변수 이름 붙이기

이제 변수에 이름을 붙여야 합니다.

여러분이 3개의 종이컵을 준비합니다.

3개의 변수겠지요?

물론 비어있습니다.

이제 하나는 콜라, 하나는 물, 그리고 마지막 하나는 우유를 담았습니다.

변수에 각 값들을 잘 담아서 냉장고에 넣었습니다.

이제 동생에게 부탁을 합니다.

"막내야~ 냉장고에 종이컵에 있는 우유 좀 가져다줘~~"

막내 동생이 냉장고 문을 열었는데

똑같은 컵이 3개가 있네요.

어떤 것이 우유가 담긴 컵인지 알 수 없습니다.

하나하나 직접 안을 들여다봐야 알 수 있습니다.

그래서 종이컵에 이름을 써 놓으면 좋겠다는 생각을 합니다.

콜라, 물, 우유라고 적어 둡니다.

이제 쉽게 구분할 수 있지요?

 

이렇게 변수는 이름을 잘 지어줘야 합니다.

그래야 나중에 쉽게 찾을 수 있거든요.

처음에 변수 이름을 a, b, c라고 지어두면

당장 구분하고 봤으니 기억이 나지만

시간이 지나면

a에 뭐가 들어있었지?라고 헷갈리기 시작합니다.

정확하게 콜라, 우유, 물이라고 써주면 

나뿐 아니라 다른 사람도 쉽게 이해가 되겠지요?

그래서 컵(변수) 이름을 잘 지어 줘야 합니다.

 

내용물을 바꿀 수 있다 vs 내용물을 바꿀 수 없다.

편의점에 다시 갔습니다.

아까 슬러시를 먹었기에 이제는 시원한 콜라를 사러 갔습니다.

냉장고에 콜라 한 캔을 꺼냅니다.

그런데 콜라 캔의 뚜껑이 따져 있네요?

여러분은 이 콜라를 살 건가요?

당연 안사고 편의점 언니에게 신고하겠지요?

누군가 콜라 뚜껑을 땄다고..

그럼 그 안에 콜라가 있을 수도 있지만

다른 이물질이 포함되어 있을 수도

비어 있을 수도 있겠지요?

원래 새 콜라는 뚜껑이 밀봉돼서 

열려 있으면 안 됩니다.

그래야 여러분은 그 안에 콜라가 있다고 확신하고

살 수 있으니까요.

빈 컵에 슬러시나 물을 담아 주는 것과 다르게

콜라, 페트병의 생수 등은 밀봉돼서 안의 내용물을

다른 것으로 넣어서 판매할 수 없습니다.

콜라라고 샀는데 안에 오렌지 주스가 있다면.. 큰일 나겠지요?

 

이렇게 밀봉돼서 그 내용물을 바꿀 수 없이 그대로 판매하는 것처럼

값을 바꿀 수 없는 것을 상수라고 합니다. 항상 콜라가 들어 있어야 한다는 것이지요.

밀봉이 바로 상수를 의미합니다.

밀봉을 해제하거나 밀봉하지 않는다면

내용물을 바꿀 수 있게 되므로 더 이상 상수가 아닌 변수가 됩니다.

 

리스트, 배열 이해하기

옛날에는 슈퍼나 시장에 가서 달걀을 1알씩 구매할 수 있었습니다.

하지만 지금 마트에 가면 10개, 30개 등 팩이나 판으로 구매해야 합니다.

이렇게 같은 물건을 하나로 묶어서 판매를 하는데

이것도 변수의 한 종류입니다.

하지만 위에서 본 컵과는 다르게 

여러 개를 담을 수 있습니다.

이제 캠핑을 가기 위해 엄마와 함께 달걀을 구매합니다.

그런데 30개짜리 달걀 한 판을 샀는데 계산할 때 보니 위에서 3번째 달걀이 깨져있네요.

그래서 고객센터에 가서 위쪽(위쪽의 판단은 달걀판의 상표를 바르게 보는 기준)

세 번째 달걀이 깨졌다고 이야기하면 쉽게 확인해 줍니다.

그냥 달걀 하나가 깨져 있네요.라고 고객센터에 이야기하면

30개의 달걀을 모두 확인해야 하는 상황이 발생하거든요.

이렇게 순번을 정하고 달걀을 확인할 수 있는 것을 배열이라고 보면 됩니다.

달걀 등 다양한 식재료를 사 왔고

이제 짐을 싸야 합니다.

먼저 칫솔, 치약 그리고 치실을 담은 작은 가방을 챙깁니다.

앗! 작은 가방도 변수네요.

그런데 변수는 하나의 값을 담는 줄 알았는데...

칫솔, 치약, 치실까지 여러 가지 값을 담았습니다.

달걀처럼 같은 종류도 아니네요.

바로 리스트로 보면 됩니다.

소중한 속옷도 다른 옷들과 구분되도록 작은 가방에 담았습니다.

이 또한 리스트가 됩니다.

엄마는 화장품을 담는다면서 작은 파우치에 간단한 화장품을 담습니다.

여러 개의 리스트가 생겼네요.

겉에 이름을 붙여주면 더 쉽게 찾을 수 있겠네요.

이때 아빠가 묻습니다.

"아빠 칫솔도 넣었니?"

그래서 칫솔 가방을 찾아서 안을 뒤져봅니다.

"네 넣었어요"

리스트 안의 값 중에 원하는 값이 있음을 확인합니다.

그리고 큰 여행용 가방을 가져와서

옷가지들과 함께 따로 챙겨 둔 칫솔 가방, 속옷 가방, 파우치를

같이 넣습니다.

커다란 리스트(여행용 가방)에 여러 값도 넣고(옷가지)

3가지의 리스트도 넣었습니다.

리스트 안에 다른 리스트를 넣을 수 있는 겁니다.

캠핑장에 도착해서 엄마가 부르네요.

"여행용 가방 안에 파우치 보면 핸드크림 있어. 가져다줘"

바로 리스트 안(여행용 가방)의 리스트(파우치)에서 값을 꺼내는 방식과 같습니다.

 

이제 변수와 상수에 대해 이해가 되었을까요?

우리 아이에게 설명하니 재미있게 잘 듣네요.

여러분에게도 도움이 되길 바라며...

다음에 다른 이야기로 만날게요.

 

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형