파이썬에서 Python Shell "IDLE (Python GUI)"을 처음 봤을 때...
메모장인가? 하는 생각이 들었다.

허연... 화면에, 글꼴도 꾸지고...
그래서 어떻게 바꿔볼까 생각해보다가

메뉴를 뒤적이기 시작했다.
그리고... 설정도 뒤적뒤적 수정하기 시작했다.

그러다가... 뒷걸음질 치다가 쥐를 잡았다.... ^^;

하나 하나 차근차근 설명을 드릴테니...
잘 보고 따라하시길 바란다.
참고로, 취향따라 다를 수 있으므로,
반드시 본인의 취향에 잘 맞춰 사용하시길...

>>> 첫번째

Options - Configure IDLE 를 클릭한다.



>>> 두번째
 
글꼴을 바꾼다. (Fonts/Tabs 에서...)
Courier 도 좋은 글꼴이긴 하지만 좀 식상한데다가... 보기도 싫다. ^^;
그래서 "나눔고딕코딩"으로 바꿨다.
"나눔고딕코딩"의 장점은 영문 O와 숫자 0(zero)의 차이가 확실하다는 것과
Courier 처럼 들쭉 날쭉하지 않다는 거다.
그래서 쭉~ 선호하고 있는 중이다.



>>> 세번째

드디어 색상을 바꾸본다. (Highlighting 에서...)

설정화면 구성이 좀... 그렇다.
하지만 나름의 아이디어가 묻어있는 것이므로 욕하지 말고 그냥 쓰자...

(1) Choose Color for : 버튼을 클릭해서 색상을 지정해자.
  이미 Normal Text 가 선택되어져있으므로
  기본 글자의 색상을 바꾸는 것이 되겠다.
  (색상은 바꿔가면서 본인이 좋아하는 색상을 찾길 바란다.)

(2) 그러고 나면 "New Custom Theme" 라는 작은 창이 뜨게 된다.
  이건 지정된 설정을 저장하겠다는 거다.
  본인은 tso_type 이라고 정했다. 왜냐하면 검정배경의 tso와 닮게 만들고 싶었기 때문에...
  (LCD도 보호하고, 전기도 적게 소모될 것만 같은 느낌 때문에...
   인류의 평화와 우주의 발전을 기원하는 마음이라고나 할까...)

(3) 아래에 보면 "Background"가 있다. 이게 배경이다.
  "Foreground"는 앞에 보이는 글씨를 말한다.
  "Foreground"와 "Background" 를 같이 바꿔주는 쎈쓰...~

(4) 아래가 본인이 설정한 세팅이다.
  나름 한다고 했는데... 어떠실런지...
  보이시는가... 날짜를 보게되면 숫자 0 안에 점 하나 더 들어있는 거...
  영문 O와 확실하게 구분되는 거다.
  글꼴도 참 좋은 것 같다.

여기에다가.... 조금더 발전시킨... 것이...
어떤가...!! 좀 더 보기 좋아졌지 않은가???

ㅎㅎㅎ 요정도에서 마무리하도록 하겠습니다.


시간이 많이 없어서 그냥...
시간이 조금이라도 나는대로 하나씩 해볼까 한다.

(한컴 오피스 2010에서는 블로그로 올리기기능을 제공한다.
그래서 간편하게 올릴 수 있다....
하지만 줄 간격이 너무 벌어져서 좀 그렇다.
아쉽지만... 쉽고 빠르게 올릴 수 있으므로
계속 이걸로 파이썬 강좌를 올려보고자 한다.
 
편리한 점은 화면 캡쳐를 해서 일일이 올릴 필요가 없다는 것이다.
한방에 올라간다.
그림이든, 내용이든...
물론 몇가지는 수동으로 해야하지만,
그정도 불편이야 감수할 수 있다.

블로그 포스팅의 든든한 조력자가 아닐 수 없다
.)



프로그래밍에서 가장 기본 되는 if 절이 나왔다.
대충 간단하다만...
if와 elif, else 가 세트를 이루게 된다.

elif는 좀... 어색한 감이 없지 않으나...
else if 나 elif 나.... 줄여쓰는 거라 생각하고, 좋게 생각하자.
짧으니, 더 좋다고...


>>> x = int(input("제발 정수를 입력하고 엔터쳐주세요!:"))

제발 정수를 입력하고 엔터쳐주세요!:42

>>> if x < 0:

        x = 0

        print('마이너스값이면 0로 바꿉니다.Negative changed to zero')

elif x == 0:

        print('0입니다.Zero')

elif x == 1:

        print('1입니다.Single')

else :

        print('더 큰 숫자입니다More')


        

더 큰 숫자입니다More

>>> 



>>> x = -2

>>> if x < 0:

        x = 0

        print('마이너스값이면 0로 바꿉니다.Negative changed to zero')

elif x == 0:

        print('0입니다.Zero')

elif x == 1:

        print('1입니다.Single')

else :

        print('더 큰 숫자입니다More')


        

마이너스값이면 0로 바꿉니다.Negative changed to zero

>>> x

0

>>> 


생각보다 간단하다는 생각이 든다.
물론 if절이야... 어려울 것이 없지...


수행했던 내용을 그대로 갈무리 한거다...
그러면서 설명을 간단히 곁들여볼까 한다.
그냥 해보시라...


1. if 문...

Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> the_world_is_flat = 1
>>> if the_world_is_flat:
 print("Be careful not to fall off!")

 
Be careful not to fall off!


위엣것을 설명하자면... (필요할지 모르겠지만)

the_world_is_flat 에다가 1을 세팅하는 것이다.
그리고는 if the_world_is_flat 이면은... 아래의 print를 수행하라는... 극히 기본적인....
그래서 그러니까, 아래에...  Be careful not to fall off! 라는 문구가 프린트된 것이다.

>>> if not the_world_is_flat:
 print("Falled off!!")


 


not 이냐고 물었더니... 아무 반응 없었다. ㅋㅋㅋ


2. 계산기 기능...

2.1 단순 산수...
 
>>> 2+2
4
>>> # This is a comment
 2+2
4
>>> 2+2  # and a comment on the same line as code
4
>>> (50-5*6)/4
5.0
>>> 8/5 # Fractions aren't lost when dividing integers
1.6

( / 와 // 의 차이점을 설명하시는 것이겠다...)

>>> 7//-3 # Integer division returns the floor
-3
>>> 7//3
2
>>> 7.//-3
-3.0
>>> 7.//-3.
-3.0

(혹시나.... -2.3 정도가 나올 수 있을까? 하는 심정으로 해봤으나... 아니다...)


>>> x=y=z=0
>>> x
0
>>> y
0
>>> z
0

(한방에 변수에다가 initial 시키는 거겠다.)



>>> # try to access an undefined variable
>>> n
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    n
NameError: name 'n' is not defined

(변수에 아무것도 세팅하지 않고, 그냥 실행하면 에러를 맛보게 된다.
 이건 아니잖아... 하면서...)

>>> 7/3
2.3333333333333335
>>> 7/-3
-2.3333333333333335
>>> 7.0/2
3.5

2.2 복소수였던가.... 그놈이다...

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)
>>> a = 1.5 + 0.5j
>>> a.real  #실수부겠지...
1.5
>>> a.imag #허수부겠지...
0.5
>>>
>>> a=3.0+4.0j
>>> float(a)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    float(a)
TypeError: can't convert complex to float

(복소수를 float로 바꿀 수 없다는 것이겠지...)

>>> a.real
3.0
>>> a.imag
4.0
>>> abs(a)
5.0
>>> tax = 12.5 /100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> price + tax
100.625
>>> _
100.625
>>> round(_,2)
100.62
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_,2)
113.06
>>> round(113.0625,2)
113.06
>>> price + 12.5625
113.0625

( _ 가 뭔지 한참 헤맸다. 그러나... 바로 직전의 계산결과값이란 걸 알게됐다...)

2.3 문자열 처리...

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t' # single quotation 이겠지...
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said." # double quotations 이겠지...
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
>>> hello = "This is a rather long string containing\n\ # 줄바꿈 이겠지...
several lines of text just as you would do in C.\n\
    Note that whithespace at the beginning of the line is\
 significant."
>>> print(hello)
This is a rather long string containing
several lines of text just as you would do in C.
    Note that whithespace at the beginning of the line is significant.

>>> print("""\    triple quotations 은 줄바꿈이나 탭마져도 그대로 살려주는 기능 되시겠다....
Usage : thingy [OPTIONS]
       -h     Display this usage message
       -H hlostname    Hostname to connect to
""")
Usage : thingy [OPTIONS]
       -h     Display this usage message
       -H hlostname    Hostname to connect to

>>> hello = r"This is a rather long string continaing\n\
several lines of text much as you yould do in C."
>>> print(hello)
This is a rather long string continaing\n\
several lines of text much as you yould do in C.

( "raw" 문자열은 있는 그대로 보여주게된다. 그냥 문자로만 인식하게 하는 거겠다.)

이렇게 변수에 넣어서 print 해도 잘 된다는 걸 보여준거겠다.
물론 차이는 그냥... 그대로 들어갔고, 그대로 나왔다는 것이 차이점이겠다...)



아래부터는 문자열 지지고 볶는 부분이다.
tutorial에 나와있는 것보다 몇개 더 해봤다.
이유는 잘 이해가 되질 않아서였다.
그래서 좀 더 해보니... 이해가 좀 되었다.

천천히 들여다보거나, 직접 해보게되면 이해되는 부분 되시겠다...(모르면 pass....)



>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>'
>>> '<' + (word-1)*5 + '>'
Traceback (most recent call last):
  File "<pyshell#72>", line 1, in <module>
    '<' + (word-1)*5 + '>'
TypeError: unsupported operand type(s) for -: 'str' and 'int'
>>> '<' + (word-'A')*5 + '>'
Traceback (most recent call last):
  File "<pyshell#73>", line 1, in <module>
    '<' + (word-'A')*5 + '>'
TypeError: unsupported operand type(s) for -: 'str' and 'str'
>>> '<' + word[0:4]*5 + '>'
'<HelpHelpHelpHelpHelp>'
>>> '<' + word[0:4] + ' ' *5 + '>'
'<Help     >'
>>> '<' + (word[0:4] + ' ') *5 + '>'
'<Help Help Help Help Help >'
>>> word[4]
'A'
>>> word[0:6]
'HelpA'
>>> word[2:4
     ]
'lp'
>>> word[:2]
'He'
>>> word[2:]
'lpA'
>>> word[2] = 'x'
Traceback (most recent call last):
  File "<pyshell#83>", line 1, in <module>
    word[2] = 'x'
TypeError: 'str' object does not support item assignment
>>> 'x'+word[1:]
'xelpA'
>>> 'Splat'+word[4]
'SplatA'
>>> word[:2]+word[2:]
'HelpA'
>>> word[0]
'H'
>>> s='supercalifragilisticexpialidocious'
>>> len(s)
34
>>> "Äpfel".encode('utf-8')
b'\xc3\x84pfel'
>>> b'\xc3\x84pfel'.encode('
        
SyntaxError: EOL while scanning string literal
>>> a = ['spam','eggs',100,1234]
>>> a
['spam', 'eggs', 100, 1234]
>>> a[0]
'spam'
>>> a[1]
'eggs'
>>> a[2]
100
>>> a[3]
1234
>>> a[4]
Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    a[4]
IndexError: list index out of range
>>> a[-2]
100
>>> a[-1]
1234
>>> a[-3]
'eggs'
>>> a[-4]
'spam'
>>> a[-5]
Traceback (most recent call last):
  File "<pyshell#103>", line 1, in <module>
    a[-5]
IndexError: list index out of range
>>> a[1:-1]
['eggs', 100]
>>> a[:2] + ['bacon',2*2]
['spam', 'eggs', 'bacon', 4]
>>> 3*a[:3]+['Boo!
 
SyntaxError: EOL while scanning string literal
>>> 3*a[:3]+['Boo!']
['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']
>>> a
['spam', 'eggs', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'eggs', 123, 1234]
>>> a[2] =a[2] - 24
>>> a
['spam', 'eggs', 99, 1234]
>>> a[2] = a[2] + 1
>>> a
['spam', 'eggs', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'eggs', 123, 1234]
>>> a[0:2] = [1,12]
a
>>>
>>> a
[1, 12, 123, 1234]
>>> a[0:2]=[]
>>> a
[123, 1234]
>>> a[1:1] = ['bletch','xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
>>> a[:0]=a
>>> a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
>>> a[:]=[]
>>> a
[]
>>> a = ['a','b','c','d','e']
>>> a
['a', 'b', 'c', 'd', 'e']
>>> len(a)
5
>>> a[-1:]=['k']
>>> a
['a', 'b', 'c', 'd', 'k']
>>> a[-1:]=['e','f']
>>> a
['a', 'b', 'c', 'd', 'e', 'f']
>>> a=a[:]
>>> a
['a', 'b', 'c', 'd', 'e', 'f']
>>> a[:0]=['go']
>>> a
['go', 'a', 'b', 'c', 'd', 'e', 'f']
>>> len(a)
7
>>> q=[2,3]
>>> p=[1,q,4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[0]
1
>>> p[1][0]
2
>>> p[1][1]
3
>>> p[1].append('xtra')
>>> p
[1, [2, 3, 'xtra'], 4]
>>> q
[2, 3, 'xtra']

※ 피보나치 수열 되시겠다.
너무 재밌는 부분 중의 하나였다.
간단하면서도, 산수의 수열을 순식간에 표현할 수 있다니...
퍼헐~

>>> a,b = 0,1
>>> a
0
>>> b
1
>>> while b < 10:
 print(b)
 a,b=b,a+b

 
1
1
2
3
5
8
>>> while b < 100:
 print(b)
 a,b=b,a+b

 
13
21
34
55
89
>>> a,b=0,1
>>> while b < 100:
 print(b)
 a,b=b,a+b

 
1
1
2
3
5
8
13
21
34
55
89
>>> a,b=0,1
>>> while b < 601:
 print(b)
 a,b=b,a+b

 
1
1
2
3
5
8
13
21
34
55
89
144
233
377
>>> a,b=0,1
>>> while b < 611:
 print(b)
 a,b=b,a+b

1
1
2
3
5
8
13
21
34
55
89
144
233
377
610

피보나치 수열을 좀 더 쉽게 보고 싶었다.
제대로 보고싶었다.
하지만 C, PYTHON이 짧아서 잠시 삽질한다....

>>> a,b=0,1
>>> while b < 1000:
 print(++1,b)
 a,b=b,a+b

 
1 1
1 1
1 2
1 3
1 5
1 8
1 13
1 21
1 34
1 55
1 89
1 144
1 233
1 377
1 610
1 987
>>> a,b=0,1
>>> i=0
>>> while b < 1000:
 print(++i,b)
 a,b=b,a+b

0 1
0 1
0 2
0 3
0 5
0 8
0 13
0 21
0 34
0 55
0 89
0 144
0 233
0 377
0 610
0 987
>>> a,b=0,1
>>> i=1
>>> while b < 1000:
 print(i,b)
 a,b=b,a+b
 ++i

 
1 1
1
1 1
1
1 2
1
1 3
1
1 5
1
1 8
1
1 13
1
1 21
1
1 34
1
1 55
1
1 89
1
1 144
1
1 233
1
1 377
1
1 610
1
1 987
1

이제 제대로 모양을 갖췄다. 크헐헐...

>>> a,b=0,1
>>> i=1
>>> while b < 1000:
 print(i,b)
 a,b=b,a+b
 i=i+1

 
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
11 89
12 144
13 233
14 377
15 610
16 987

요게 완성판이다....
근데.... 여기서는 탭이 제대로 안보이게 되네....
여하튼 파이썬에서는 잘 나왔다. 에잇... 캡쳐때려야겠다....

>>> a,b=0,1
>>> i=1
>>> while b < 1000:
 print(i,b,sep='\t')
 a,b=b,a+b
 i=i+1

 
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
11 89
12 144
13 233
14 377
15 610
16 987
>>>
<the Fibonacci series>


ㅎㅎㅎ 일단 강좌 두번째를 성공적으로 마무리한 것 같다.
실력은 없어도...
처음 하시는 분들과 동등한 수준(?) 이므로...
보시면서 바로~ 이해되실 것 같다.

사람들이 이래서 파이썬, 파이썬 하는구나 생각한다.
생각보다 쉽기 때문이다. ^^;


파이썬을 배워보기로 했다. 사실, 오래전에 파이썬을 해보고 싶었는데,
여의치 않은 상황이라... 제대로 시도를 못해보다가, 이제야 제대로 해볼 수 있을 것 같다.

책도 샀고, 읽어보기도 했고, 조금 해보기도 했으나...
진도는 나가지 않고, 이해도 되지 않고 해서
강좌를 열면서 공보해보기로 했다.

일단 방향을 정한 것이니, 열심히 해볼 생각이다.
혹시, 따라하다가 대박 잘되면 너무 좋겠다고 생각하면서... 기대를 갖고 시작해보려고 한다.

(혹... 따라하실 분들은 마음을 가다듬고 시작해봤으면 좋겠다.
격려의 글이나, 의견, 도움말 등을 기다리면서...
ㅠㅠ 당췌 댓글이 없는 블로그라... 소통이 되는건지 모르겠다.
오셨음 발자취라도 남겨주시라... 제발...)

1. 먼저 파이썬을 다운받자.

http://www.python.org
에 접속하여 download 를 찾아서 윈도우 버전으로 다운 받자!
물론 윈도우가 아니라면 해당되는 OS에 맞춰서 다운받으면 되겠다.

2. 설치하자.

윈도우나 맥, 유닉스, 리눅스 또는 그외의 OS에 맞춰서 설치했겠지...

일단 윈도우는 별스러운 설정이 없으니, 그냥 하면 될 것이고,
다른 OS 들도 상세한 설명에 따라서 해보자. 될 것이다.
안된다면 물어보자! 나 말고 다른 베태랑에게...
(나는 딴 랭귀지 경력 높은 파이썬 막 배우는 초급이다-ㅅ...)

3. Python v3.1.3 documentation 을 읽어보자!

[시작]-[프로그램]-[Python 3.1]-[Python Manuals] 클릭하자.

헐~ 물론 영어다.
어렵다.
대충 훑어보니, 파이썬이 좋단다.
뭐, 이런 저런 특징들이 있다고 하니...
해보면서 정말 좋구나 느껴보도록 하자!
지금은 읽어봐야, 가슴에 와닿는 것이 아니다.
그냥 그럴 뿐....
그냥 외국어에 지나지 않을 뿐이다.

하지만 조금만 따라하다 보면 쉽게 랭귀지 하나 뗄 수 있다는...

4. next 를 눌러보자.

뭔소린가 할 게다.
난 아직도 Python v3.1.3 documention 을 말하고 있는 거다.

오른쪽 위를 보면
previous | next | modules | index
이렇게 나와있다.

거기에서 next 를 눌러보자.

  1. Whetting Your Appetite 를 보고 있다가
 
  2. Using the Python Interpreter 으로 넘어갔을 것이다.
 
이게 뭐냐... 인터프리터를 사용해보자는 것이겠다.
각설하고, [시작]-[프로그램]-[Python 3.1]-[IDLE (Python GUI)] 를 실행해보자.

5. 따라하자!

쭉 스크롤으로 화면을 내리다 보면

  2.1.2. Interactive Mode
 
나온다.

거기부터 따라하자!

 

티스토리 툴바