2017 멀티캠퍼스/Python

[Python] #1 파이썬과 간단 예제

꿈꾸는어린이 2018. 1. 1. 14:52

//

일시 : 2017.12.28 15:00pm ~ 18:00pm

장소 : 멀티스퀘어 12F

내용 : 파이썬 언어를 본격적으로 배우기 시작.

//

파이썬(Python)

  • 범용, 고급언어

  • 코드 가독성 ↑

    -> C 언어보다 적은 코드로 생각 표현 가능

  • 인터프리터 방식의 언어 : 스크립트 형태의 언어들

    vs 컴파일 방식(c언어-컴파일로 실행 파일)

  • 파일명.py 실행 시 바이트 코드 파일로 변환

  • 코드의 간결성 - 개발 향상 및 유지보수가 쉬움

  • 객체 지향 - 코드의 재사용성↑, 유지보수 용이

  • c로 개발된 루틴을 외부 모듈로 사용O


인터프리터(interpreter) : 프로그램을 해석하는 방법 중 하나로 고급언어로 작성된 코드를 한 단계씩 해석하며 실행시킨다.

사람이 이해할 수 있는 고급언어로 작성된 소스코드는 기계가 알아들을 수 있는 기계어로 해석이 되어야 하는데 일반적인 방법으로는 컴파일 과정을 통해 실행하는 방법과, 한 줄 한 줄 해석하여 실행하는 인터프리터 방식이 있다. 인터프리터는 고급 언어를 중간 단계로 먼저 번역 한 다음 실행하기 때문에 컴파일러로 실행하는 것보다는 느리다.




파이썬 프로그래밍

  • IDLE3 개발 환경보단 토니(thonny)개발환경을 사용해 좀 더 편리하게 코드 편집, 실행, 디버깅이 가능하다.

  • 변수가 셸의 메모리(=RAM, Random Acess Memory, 응용pg의 일시적 로딩, 데이터의 일시적 저장 등에 사용, 휘발성 특징)에 저장되기 때문에 IDLE을 종료하면 사라진다. (새로운 셸을 띄우면 이전에 사용한 변수가 사용 불가)

  • 중요하거나 긴 프로그램은 비휘발성 특징을 지닌 하드디스크나 USB에 저장.

  • 타입 선언X, 세미콜론X => C언어와의 다른 점

  • input() 함수 : 값 입력받기 ★ 모두 문자열로 취급

예를 들면 a=input()을 하여 a값에 100을 입력받으면 숫자 100이 아닌 문자 100으로 취급

  • int() 함수 이용해 정수로 변환.

    a = int(input()) // input()에서 문자열 입력받고 그 문자열을 int()에서 정수로 변환.

  • 컴파일러 언어(c,java등)에서는 변수를 먼저 선언해야 사용할 수 있지만, 인터프리터 언어(python,javascript등)에서는 변수를 선언하지 않고 바로 사용해도 된다.

  • 함수를 만들 때는 def 함수이름(매개변수) :

  • 프롬프트가 나오고 한 줄씩 입력하는 화면은 대화형 모드, 메모장과 같은 화면을 스크립트 모드




실습

1 계산기 만들기

  a=int(input("입력 1 : "))
b=int(input("입력 2 : "))
result =a+b
print(a, "+" , b , "=" ,result)
result=a-b
print(a,"-",b,"=",result)
result=a*b
print(a,"*",b,"=",result)
result=a/b
print(a,"/",b,"=",result)




2 그림판 구현하기

  • 캔버스에서 마우스 왼쪽 클릭한 채로 드래그한 후 드롭하면 선이 그려지도록 하는 코드

  • 마우스 클릭했을 시의 좌표(x1,y1)와 드롭했을 때의 좌표(x2,y2)가 변수로 필요

  • 함수의 매개변수 event마우스를 클릭한 순간의 정보를 가지고 있음

  • canvas.bind(이벤트, 함수이름)에는 캔버스에 지정한 이벤트가 일어나면 수행할 함수이름을 지정

  from tkinter import *
## 윈도우 창을 만드는 외부 기능(tkinter라는 라이브러리) 가져오기

## 변수 ##
window = None
canvas = None

x1,y1,x2,y2 = None, None, None, None

## 함수 ##

def mouseClick(event):
   global x1,y1,x2,y2
   x1=event.x
   y1=event.y

## 함수의 매개변수 event는 마우스를 클릭한 순간의 정보(좌표)를 가지고 있음.
   
def mouseDrop(event):
   global x1,y1,x2,y2
   x2=event.x
   y2=event.y
   #이 시점에 선이 그려짐->선 그리기 실행되는 코드 작성해줌
   canvas.create_line(x1,y1,x2,y2, width=5, fill="red")
   

## 메인 코드 ##
window = Tk()
#윈도우가 나오게 해줌
window.title("그림판 비슷한 프로그램")
canvas=Canvas(window, height=300, width=300)

canvas.bind("<Button-1>", mouseClick)
canvas.bind("<ButtonRelease-1>", mouseDrop)
##<Button-1>은 마우스 버튼을 클릭하는 이벤트, mouseClick()함수를 호출
##<ButtonReleas-1>은 마우스 드롭하는 이벤트

canvas.pack()
window.mainloop()

더 나아가 드래그를 하는 코드를 추가해보았다.

  
from tkinter import *

#변수 선언
window = None
canvas = None
x1, x2, y1, y2=None,None,None,None #선이 그려지는 코드 추가

#함수
def mouseClick(event):
   global x1, y1
   x1=event.x
   y1=event.y
   
def mouseDrop(event):
   global x2, y2
   x2=event.x
   y2=event.y
   #그림을 그리는 코드
   canvas.create_line(x1,y1,x2,y2, width=5, fill="red")
   
#드래그 함수    
def mouseMove(event):
   global x1, y1
   x1=event.x
   y1=event.y
   canvas.create_line(x1,y1,x1+1,y1+1, width=5, fill="red")

## 메인 코드

window=Tk()
window.title("그림판 비슷한 프로그램")
canvas=Canvas(window, height=500, width=500)
#버튼1왼쪽마우스, 버튼3오른쪽마우스, B1은드래그
canvas.bind("<B1-Motion>", mouseMove)
canvas.pack()
window.mainloop()