2018년 3월 28일 수요일

[python] 문법04

# for 문 중첩
for i in range(3):
    print(i, end="")
print()

for j in range(2):
    for i in range(3):
        print(i, j, end="")
    print()
print()

# 구구단 적용 예
d=2
for a in range(1, 10):
    print(d, 'x', a, '=', d * a)
print()

for d in range(2, 10):
    for a in range(1, 10):
        print(d, 'x', a, '=', d * a)
    print()
print()


# 반복문 연습

print('*')
print('**')
print('***')
print()

#
print('*')
print('*', end='')
print()
#
print('*', end='')
print()

print('*', end='')
print('*', end='')
print()

print('*', end='')
print('*', end='')
print('*', end='')
print()

#
for i in range(3):
    print('*', end='')
print()

for i in range(2):
    print('*', end='')
print()

for i in range(1):
    print('*', end='')
print()

#
j=1
for i in range(j):
    print('*', end='')
print()

j=2
for i in range(j):
    print('*', end='')
print()

j=3
for i in range(j):
    print('*', end='')
print()
#
j=0
j=j+1
for i in range(j):
    print('*', end='')
print()

j=j+1
for i in range(j):
    print('*', end='')
print()

j=j+1
for i in range(j):
    print('*', end='')
print()

for j in range(1, 4):
    for i in range(j):
        print('*', end='')
    print()
print()

#
print('***')
print('**')
print('*')     
print()

print('    *')
print('   **')
print('  ***')     
print(' ****')
print('*****')     
print()

# 곱하기 계산
# 2 x 3 = 2 + 2 + 2
a = 2 + 2 + 2
print(a)

# 아래와 같이 바꿀 수 있어야 한다.
# a = a + 1 형태

a = 0
for i in range(3):
    a = a + 2
print(a)
print()

# 연습으로 다음을 바꾸어 보자1
a = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
print(a)

a=0
for i in range(10):
    a = a + 1
print(a)

# 연습으로 다음을 바꾸어 보자2.
a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
print(a)

a=0
b=0
for i in range(10):
   b = b + 1
   a = a + b    #a=a+1, a=a+2, a=a+3, ... , a=a+10
print(a)

# b=1,2,3,4...
# i=0,1,2,3...

a = 0
for i in range(10):
    a = a + (i+1)
print(a)

#
# 2 x 3
s = 0
a = 2
b = 3
for i in range(b):
    s = s + a
print(a, 'x', b, '=', s)

# 함수로 바꾸기
def multiply(a=5, b=6):
    s = 0
    for i in range(b):
        s = s + a
    print(a, 'x', b, '=', s)

a = 2
b = 3
multiply(2, 3)  #함수를 호출한다.
multiply(5, 6)
multiply(3, 4)


# 나눗셈
# 9 / 2
# 9 - 2 - 2 - 2 - 2 > 0; 4번 빼기
# 어렵다.

# while 복습
a = 0
while (a < 3): 
    print(a)
    a=a+1
print()

#
a = 9
b = 2

c = 0   #몫
d = 0   #나머지

s = a
while (s >= b):
    s = s - b
    c = c + 1
d = s
print(a, '/', b, '=', c, 'x', b, '+', d) 

# 함수로 바꾸기
def divide(a, b):
    c = 0   #몫
    d = 0   #나머지
 
    s = a
    while (s >= b):
        s = s - b
        c = c + 1
    d = s
    print(a, '/', b, '=', c, 'x', b, '+', d)     

divide(9, 2)

2018년 3월 27일 화요일

[기타] 다양한토픽들

● mashup: www.programmableweb.com
● search1: google, naver
● mapping2: google, naver
● social: facebook, twitter3, delicious, instagram4
● multimedia5: youtube, flickr
● authentication: OAuth6
● telephony7: Twilio, Google Calendar
● cloud: Amazon EC2, S38, Window Azur, Google Cloud Platform9, Hadoop10
● web programming tools: Ajax, HTML5, JQuery11, Node.js, JSON12
● web service platform: .NET (C#)16
● open frameworks15: www.springsource.org, www.ksug.org, www.egovframe.go.kr
● cross-platform: unity, Qt*, Zamarin(C#)17
● language: Go*, Python*
● machine learning tools: TensorFlow, sci-kit lear
● trend: Industry 4.013, IoT, O2O14, FinTech, FabLab(3D printer), block-chain
● trend: pinterest, idus, modoo (naver)
● trend: deep learning (neural networks), computer (machine) vision, opencv, pcl, cloud vision api (google), chrome-app

2018년 3월 19일 월요일

[딥러닝] 강의자료


01 딥러닝들어가기

02 퍼셉트론

03 멀티레이어퍼셉트론

04 오류역전파알고리즘

05 선형회귀분석

06 크로스엔트로피

07 소프트맥스회귀분석

08 심층신경망개요


[python] 문법03

nonezerok@gmail.com
last modified: 2018.3.19
--------------------------------------------------------------------------------
연산자에 대하여 꼭 알아야 할 것
1 + 2 * 3

- 계산과정을 한 단계씩 써보자.
1 + 2 * 3
→ 1 + 6
→ 7

- 다음 식의 계산과정을 한 단계씩 써보자.
a = 1 + 2 * 3
→ a = 1 + 6
→ a = 7

- 계산 끝? 이전 식에서 연산자 2개 화살표 2개이다.
- 본 식에서는 연산자 3개이므로 화살표도 3개여야 한다.
a = 1 + 2 * 3
→ a = 1 + 6
→ a = 7
→ 7

조건문에 대해 더 알아보자
1 < 1 # 연산자 1개; 계산결과로 무엇을 남길까?

>>> 1<1
False

t = (1 < 1)
print(t)

t = (1 > 1)
print(t)

t = (1 == 1)
print(t)

t = (1 != 1)
print(t)

t = (1 <= 1)
print(t)

t = (1 >= 1)
print(t)

t = int(False)
print(t)

t = int(True)
print(t)

- 계산결과가 True, False
- >= 은 허용된다.
- => 는 허용되지 않는다.
- int(False) -> 0, int(True)->1로 바꿀 수 있다.

a = 1
if (a==1):
    print("a=1 맞습니다")
print("끝")
-----
a=1 맞습니다


a = 2
if (a==1):
    print("a=1 맞습니다")
print("끝")
----


a = 2
if (a==1):
    print("a=1 맞습니다")
else:
    print("a=1 아닙니다")
print("끝")
----
a=1 아닙니다


반복문과 조건문을 같이 쓸 때 유용한 키워드; break, continue

for i in range(5):
    if i==3:
        break
    print(i)

for i in range(5):
    if i==3:
        continue
    print(i)

--------------------------------------------
#수식문
a = 2 * 3

# 반복문
for i in range(3):
    print(i)

# 조건문
a = 2
if (a==1):
    print("a는 1이 맞습니다")
else:
    print("a는 1이 아닙니다")
print("끝")

프로그래밍이란
          B=0
START: B=B+1
          IF B==100 THEN STOP
          ELSE GOTO START
--------------------------------------------------------------------------------

2018년 3월 12일 월요일

[C]C언어시작하기


프로그래밍을 시작하는 이들을 위한 글입니다.

PDF자료

[python] 문법02

nonezerok@gmail.com
last modified: 2018.3.16
--------------------------------------------------------------------------------
맨 마지막에 넣은 값이 출력된다.
여기서 a를 변수라고 한다.

a = 1
a = 2
a = 3
print(a)

a = 0
a = a + 1
a = a + 1
a = a + 1
print(a)

a=a+1 형태는 프로그래밍에서 정말 많이 사용된다.

----------------------------------------
a = 1
b = 2 + a * 3
식, 변수, 상수, 연산자, 할당연산자
+, -, *, /, //, %

a = 3 / 2
b = 3 // 2
print(a, b)
print(3/2, 3//2)
print(5%3)

print(0%3)
print(1%3)
print(2%3)
print(3%3)
print(4%3)
print(5%3)

% 연산자는 0~X-1 까지의 숫자가 필요할 때 종종 사용된다.

----------------------------------------
a = 2 + 3
print(a)

print 괄호 안에서 계산 가능하다.
print(a, 2+3)

----------------------------------------
2단을 출력해 보자

print("2 x 1 = 2")
print("2 x 2 = 4")
print("2 x 3 = 6")

2, 3단 해보세요.
9단까지 해보세요. ㅠㅠ

좀 개발자 답게 처리해 보자.
숫자가 변하는 부분은 변수로 대치한다

a=1
print("2 x ", a, "= ", 2 * a)
a=2
print("2 x ", a, "= ", 2 * a)
a=3
print("2 x ", a, "= ", 2 * a)

print( ) 문장이 모두 똑 같아졌다.
a 값은 1에서 3으로 변하고 있다.
이 부분을 수식으로 표현해 보자.

a=0
a=a+1
print("2 x ", a, "= ", 2 * a)
a=a+1
print("2 x ", a, "= ", 2 * a)
a=a+1
print("2 x ", a, "= ", 2 * a)

이제 두 문장이 반복된다.
이 두 문장을 반복시키면 된다.

a=0
for i in range(9):
    a=a+1
    print("2 x ", a, "= ", 2 * a)
print()

2단과 3단을 모두 출력해 보자

d = 2
a = 0
for i in range(9):
    a = a + 1
    print(d, " x ", a, "= ", d * a)
print()

d = 3
a = 0
for i in range(9):
    a = a + 1
    print(d, " x ", a, "= ", d* a)
print()

- 공통 부분이 많다.
- 코드 낭비다.
- 다음과 같은 멋진 방법이 있다.

def dan2():
    a = 0
    d = 2
    for i in range(9):
        a = a + 1
        print(d, "x", a, " = ", d * a)
    print()

def dan3():
    a = 0
    d = 3
    for i in range(9):
        a = a + 1
        print(d, "x", a, " = ", d * a)
    print()

dan2()
dan2()
dan3()

- def 부분은 자동으로 실행되지 않는다.
- dan2(), dan3()을 통해 실행할 수 있다.
- 그래도 def dan2(), def dan3() 부분의 코드가 거의 일치한다.
- 다음과 같이 두 개를 하나로 합칠 수 있다.

def dan(d):
    a = 0
    for i in range(9):
        a = a + 1
        print(d, "x", a, " = ", d * a)
    print()

dan(13)

- dan( ) 아주 멋진 녀석이다.
- 이름이 있어야 겠다.
- function; 함수
- dan은 함수 이름
- dan( d )에서 d는 변수; 특별히 매개변수; parameter라고 부른다.
- dan(2) 이 부분을 '함수 dan을 호출;call 한다'라고 한다.
- 이때, def dan(d=2) 처럼 d에는 2가 할당된다.
- def dan(d) 부분을 함수의 프로토타입; prototype 이라고 부른다.
- def dan(d) 밑에 있는 코드를 함수 dan(d)의 구현; implementation부라고 부른다.

a = 0
for i in range(9):
        a=a+1
        print(d, " x ", a, "= ", d * a)
    print()

- 앞으로 '함수를 구현해 보라'라는 말을 듣게 된다.

위와 같이 dan( ) 함수를 만들어 놓으면 구구단 전체를 쉽게 '구현'할 수 있다.

def dan(d):
    a = 0
    for i in range(9):
        a = a + 1
        print(d, " x ", a, "= ", d* a)
    print()

for d in range(8):
    dan(d+2)

- d는 처음에 0부터 시작하도록 되어 있는데, 2부터 시작할 수도 있다.

for d in range(2, 10):
    dan(d)

for d in range(2, 10, 1):
    dan(d)

for d in range(2, 10, 2):
    dan(d)

- 시작값, 조건값, 증분값

어느 것이 1년 뒤에 보았을 때 알아보기 쉬운가?

for d in range(2, 10):
    a = 0
    for i in range(9):
        a=a+1
        print(d, " x ", a, "= ", d * a)
    print()
----------
def dan(d):
    a = 0
    for i in range(9):
        a=a+1
        print(d, " x ", a, "= ", d * a)
    print()

for d in range(2,10):
    dan(d)

- 함수 그뤠잇; 나중에 더 살펴보자.

----------------------------------------
print는 쓸데없이 오버하는 기능이 있다.

print("a")
print("a" * 3)

print("Abc")
print("Abc" * 3)

문자(열)에 곱셈을 취하면 그 문자(열)가 반복된다.
참고로 regular expression 이라는 문법이 있는데 , 여기서 * 기호의 역할이 이런 식으로 정해져 있다.
여기서의 키 포인트는 문자, 문자열
1, "1"은 다르다.

특정한 단을 입력받아 출력해 보자

dan = input("단을 입력하세요:")
a = 0
for i in range(9):
    a=a+1
    print(dan, " x ", a, "= ", dan * a)
print()

단을 입력하세요:2
2  x  1 =  2
2  x  2 =  22
2  x  3 =  222
2  x  4 =  2222
2  x  5 =  22222
2  x  6 =  222222
2  x  7 =  2222222
2  x  8 =  22222222
2  x  9 =  222222222

- 원하지 않는 결과가 나왔다.
- dan에 들어 있는 값은 숫자가 아니라 문자다. "2"

문자를 숫자로 바꾸어 주어야 한다.  "2" → 2
dan = input("단을 입력하세요:")
dan = int(dan)
a = 0
for i in range(9):
    a = a + 1
    print(dan, " x ", a, "= ", dan * a)
print()

- int 는 문자열을 숫자로 바꾸어 준다.

a = "12345"
b = int(a)
print(a, b)

- 소수점은 변환이 안된다.

a = "12.345"
b = int(a)
print(a, b)

ValueError: invalid literal for int() with base 10: '12.345'

- 소수점 변환은 float를 사용한다.

a = "12.345"
b = float(a)
print(a, b)

- eval은 두 경우 모두 사용할 수 있다.
- 계산되는 값이 정수인지 실수인지 정확히 아는 경우라면 int 나 float 사용이 좋다.

a = "12.345"
b = eval(a)
print(a, b)

- 물론 숫자로 구성된 문자열이 아닌 경우는 에러가 난다.

a = "abc12.12"
b = eval(a)
print(a, b)

SyntaxError: unexpected EOF while parsing

정수(integer), 실수(real), int, float; floating point, 부동소수점

----------------------------------------

2018년 3월 6일 화요일

[특강]웹개발자가알아야할기술목록

웹개발자가 알아야할 기술 목록

특강자료

*특강자료이므로 자세한 설명은 없습니다.

[유틸]특수키

ㄱ :  !',./:;?^_`| ̄、。·‥…¨〃­―∥\∼´~ˇ˘˝˚˙¸˛¡¿ː
ㄴ : "()[]{}‘’“”〔〕〈〉《》「」『』【】
ㄷ : +-<=>±×÷≠≤≥∞∴♂♀∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩
     ∧∨¬⇒⇔∀∃∮∑∏
ㄹ : $%₩F′″℃Å¢£¥¤℉‰€㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎
     ㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋
     ㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆
ㅁ : #&*@§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓◁◀▷▶♤♠♡♥♧♣⊙◈▣
     ◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡®ªº
ㅂ : ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕
     ┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊
ㅅ : ㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉
     ㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈖㈗㈘㈙㈚㈛
ㅇ : ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫
     ⑬⑭⑮⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼
     ⑽⑾⑿⒀⒁⒂
ㅈ : 0123456789ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
ㅊ : ½⅓⅔¼¾⅛⅜⅝⅞¹²³⁴ⁿ₁₂₃₄
ㅌ : ㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊ
     ㆋㆌㆍㆎ
ㅍ : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl
     mnopqrstuvwxyz
ㅎ : ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξ
     οπρστυφχψω

[Python]콘솔명령

#콘솔 실행하기

콘솔 프로그램은 C:\Windows\System32 폴더에 있다.

C:\Windows\System32\cmd.exe

cmd.exe 파일을 더블클릭한다.

또는, 간단하게 다음과 같이 실행시킬 수 있다.
[Windows검색] 에서 cmd.exe 엔터(Enter)키를 누른다.

#콘솔에서 사용할 수 있는 명령
dir
cd .
cd ..
cd C:\temp
c:
mkdir temp
del a.py
rmdir temp
dir *.*
dir *.exe
dir /w
dir > a.txt
dir >> a.txt
type a.txt
ren a.txt b.txt

[Python]파이선설치

# 파이선다운로드

https://www.python.org/downloads/
[Download Python 3.6.4]

설치폴더를  C:\Python 으로 한다.
다른 곳에 해도 무방하다.
설치하면 다음과 같이 폴더와 파일이 생성된다.

C:\Python
- python.exe
- DLLs
- Doc
- include
- Scripts
  -pip.exe
  - ipython.exe
  - spyder3.exe

설치된 폴더에 Python.exe 이 있다.
이 중, Scipts 폴더에 있는 pip.exe, pip3.exe 등이 있다는 것을 확인한다.

#  파이선 패키지 인스톨
예들 들어, interactive python 패키지를 설치하려면 다음과 같이 입력한다.
새로운 패키지를 설치하는 경우에는 관리자권한으로 콘솔을 실행한다.

C:\>pip3.exe install ipython

이렇게 입력하면, C:\Python\Scripts 폴더에 ipython.exe가 생성된다.

설치된 패키지는 다음과 같이 확인한다.

C:\>pip3 list

다음과 같이 개인에게 필요한 패키지를 설치할 수 있다.

C:\>pip3 install pyqt5
C:\>pip3 install matplotlib
C:\>pip3 install opencv-python==3.4.0.12
C:\>pip3 install spyder

[Python] 문법01

# nonezerok@gmail.com

print("안녕")     # print() 명령은 괄호안에 " " 또는 ' ' 따옴표 안의 글자를 모니터 화면에 나타냅니다 (출력합니다).
print("철수야")

#
print("안녕", "철수야")      # 쉼표(,)로 구분하면 여러 개를 하나의 print() 명령으로 출력할 수 있습니다.

#
print("안녕", "\n", "철수야")      # "\n"은 줄을 바꾸라는 의미 입니다.

#
print("안녕", end="\n")     # 안녕을 화면에 출력하고 안녕 바로 끝(end)에 줄을 바꾸라고 하였습니다.
print("철수야", end="\n")

#
print("안녕", end="")
print("철수야", end="\n")

#
print("안녕", end=" ")
print("철수야", end="\n")

#
print("", "\n")     #아무것도 출력하지 않고 바로 끝(end)에 줄을 바꾸라고 하였습니다.
print("마침")

#
print("")     # 아무것도 출력하지 않고 바로 끝에 줄을 바꾸라고 하였습니다. 끝에 줄을 바꾸라는 것이 생략되어 있습니다.
print("마침")

#
a=1     # a에 숫자 1을 저장하라는 명령입니다.
print(a)      # a에 저장되어 있는 값을 화면에 출력하라는 명령입니다. 이때는 따옴표를 붙이지 않습니다.

#
a=1
b=2
print(a, b)

#
print("안녕")     # 똑 같은 명령을 3번 반복하고 있습니다.
print("안녕")
print("안녕")
print("끝")

for i range(3):   # 위와 똑 같은 결과를 화면에 출력하지만 보다 간단합니다.
   print("안녕")    # 안쪽으로 들여쓴 이 부분이 바로 3번 반복할 명령이 됩니다.
print("끝")      # 들여쓰기 한 명령을 3번 반복하고 나면 수행되는 명령입니다.

#
for i range(3):
   print("안녕")    # 반복해야 하는 명령이 여러 개이면
   print("철수야")   # 들여쓰기를 하면 됩니다.
print("끝")

#
for i range(3):
  print("안녕")
  print("철수야")
  print(i)      # 반복되는 동안 i는 0씩 증가합니다. 처음에는 0에서 시작합니다. 그래서, 반복되는 동안 0 1 2를 차례로 출력합니다.
print("끝")

#
a=0
for i range(3):
  print("안녕")
  print("철수야")
  print(i)
  print(a)      # i랑 똑 같은 값이 출력됩니다.
  a=a+1     # a를 1씩 증가시킵니다.
print(i, a)   # 똑 같은 값이 출력됩니다.
print("끝")

# 위 코드에서 i와 a의 값을 살펴보면 똑 같습니다.
# 따라서 for 명령 내부에서는 처음에 i=0 명령이 숨겨져 있고,
# 반복되는 동안 a처럼, i=i+1 명령이 숨겨져 있다고 생각할 수 있습니다.

# 다음은 i=0, i=i+1 명령을 숨기지 않고 직접 입력하여 반복하는 명령을 소개합니다.
i=0
while(i<3):     #i가 3보다 작은 동안 아래 들여쓰기 한 명령들을 반복 수행합니다. #처음에 i는 0이 었으니 3보다 작습니다. 참입니다.
  print("안녕")   
  print("철수야")   
  i=i+1
print(i)
print("끝")
# 위 코드에서 i가 3이 되면 3<3은 거짓입니다. 거짓이면 들여쓰기 한 명령들을 더 이상 수행하지 않습니다. 

# 다음 코드는 어떤 결과를 출력할끼요?
# 조금 어렵습니다. 바로 생각이 안납니다. 누구나 그렇습니다.
# 이럴 때는 종이에 값을 써가면서 천천히 생각해 보아요.

i=0
while(i<3):
  print("안녕")   
  print("철수야")   
  i=i+2     #i 값을 1씩 증가시키지 않고 2씩 증가시키고 있습니다.
print(i)
print("끝")
--------------------
처음에 i는 0입니다.
while 괄로 안을 따져보면 0<3은 참이기 때문에,
들여쓰기한 세 개의 명령을 수행하니까
안녕을 출력하고,
철수야를 출력하고,
i를 2 증가 시킵니다.

이제 i는 2입니다.
while 괄로 안을 따져보면 2<3은 참이기 때문에,
들여쓰기한 세 개의 명령을 수행하니까
안녕을 출력하고,
철수야를 출력하고,
i를 2 증가 시킵니다.

이제 i는 4입니다.
while 괄로 안을 따져보면 4<3은 거짓이기 때문에,
더 이상 들여쓰기한 명령들을 수행하지 않습니다.

그 다음 수행할 명령은 print(i)이므로, 현재 i 값인 4를 출력합니다.
그리고, 끝을 출력합니다.

정답은 다음과 같습니다.
--------------------
안녕
철수야
안녕
철수야
4
--------------------
#
for i in range(3):  #시작부분에 i=0, 반복하는 들여쓰기 명령의 끝에 i=i+1 명령이 포함되어 있습니다.
    print(i)
 
for i in range(0, 3, 1): #위에 있는 for 명령과 똑 같은 결과를 출력합니다.
    print(i)
 
for i in range(0, 3, 2): #시작부분에 i=0, 반복하는 들여쓰기 명령의 끝에, i=i+2 명령이 포함됩니다.
    print(i)

# 여기까지 끝!
# 이것 저것 궁금한 것을 바꾸어 보면서 실행결과를 확인해 보세요.