산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART I : 파이썬기초 가천대학교 산업경영공학과 최성철교수
수학연산
Integer 와 Float >>> print 3/2 1 # 왜 1 이나올까? - 파이썬은정수 (Integer) 와소수 (decimal number) 를구분 - 프로그래밍에서소수는부동소수 (floating-point numbers) 또는 float 라고부름 - 위계산은정수간의계산으로정수가답으로나옴 >>> print 3.0/2 1.5 #float 을정수로나누면것으로 float 로답을출력
연산자 (Operator) 와피연산자 (operand) - +, -, *, / 같은기호들을연산자라고칭함 - 연산자에의해계산이되는숫자들은피연산자라칭함 - 3 + 2 에서 3 과 2 는피연산자, + 는연산자임 - 파이썬에서연산자의역할은수학에서연산자와동일 - 연산의순서는수학에서연산순서와같음 - 지수연산, 괄호연산, 좌측에서우측순으로연산, 곱셈과나눗셈을먼저연산하고덧셈과뺄셈으로연산 - 연산시연산자와피연산자는메모리에할당되어계산됨
제곱승과나머지구하기 - **" 는제곱승계산연산자 >>> print 3 * 3 * 3 * 3 * 3 # 3을다섯번곱함 243 >>> print 3 ** 5 # 3의 5승 243 - %" 는나머지를구하는연산자 >>> print 7 / 2 # 7 나누기 2 ( 정수형계산 ) 3 >>> print 7 % 2 # 7 나누기 2의나머지는 1
증가또는감소연산 - a += 1 는 a = a +1 과같은의미로증가연산 (-= 동일 ) >>> a = 1 # 변수 a 에 1 을할당 >>> a = a + 1 # a 에 1 를더한후그값을 a 에할당 >>> print a # a 출력 2 >>> a += 1 # a 증가연산 >>> print a # a 출력 3 >>> a = a 1 # a 에 1 를뺀후그값을 a 에할당 >>> a -= 1 # a 감소연산 >>> print a # a 출력 1
데이터형변환 : 정수형 실수형 - float() 와 int() 함수를사용하여데이터의형변환가능 >>> a = 10 # a 에정수데이터 10 할당 >>> b =3 # b 에정수데이터 3 할당 >>> print a /b # a 나누기 b 출력 3 # 정수형데이터간의계산으로정수값출력 >>> a = float(10) # a 를실수형으로변환 >>> print a/ b # 실수형으로 a 나누기 b 를출력 3.33333333333 # 실수형결과값출력 >>> print a # a 과출력 10.0 # a 는실수형으로출력됨 10.3 과 10.7 정수형으로형변환후덧셈하면결과값은?
데이터형변환 : 정수형 실수형 10.3 과 10.7 정수형으로형변환후덧셈하면결과값은? >>> a = 10.7 >>> b = 10.3 >>> a= int(a) # a 를정수형으로형변환후 a 에할당 >>> b = int (b) # b 를정수형으로형변환후 b 에할당 >>> print a+b # 정수형 a 와 b 의합을출력 20 >>> print a # 정수형 a 값출력 10 >>> print b # 정수형 b 값출력 10 실수형으로정수형으로형변환시소수점이하내림
데이터형변환 : 숫자 문자열 문자열로선언된값도 int(), float() 함수로형변환가능 >>> a = '76.3 # a 에문자열 76.3 을할당, 은문자열을의미 >>> b = float(a) # a 를실수형으로형변환후 b 에할당 >>> print a # a 값출력 76.3 >>> print b # b 값출력 76.3 >>> print a + b # a 와 b 를더함그러나문자열과숫자열의 Traceback (most recent call last): # 덧셈이불가능하여에러발생 File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'float' objects a 와 b 를실수형으로덧셈하고, 문자열로연결하려면?
데이터형변환 : 숫자 문자열 a 와 b 를실수형으로덧셈하고, 문자열로연결하려면? >>> a = float(a) # a 를실수형으로형변환후 a 에할당 >>> b = a # 실수형 a 값을 b 에할당 >>> print a + b # 두실수형더한후출력 152.6 >>> a = str(a) # 실수형 a 값문자열로변환후 a 할당 >>> b = str(b) # 실수형 b 값을문자열로변환후 b 할당 >>> print a + b # 두값을더한후출력 76.376.3 # 문자열간덧셈은문자열간단순연결 str() 함수는숫자값을문자값으로변환함 데이터간의형변환을 casting 이라고함
데이터형확인하기 type() 함수는변수의데이터형을확인하는함수 >>> a=int(10.3) # a 는정수형으로 10.3 을할당 >>> b=float(10.3) # b 는실수형으로 10.3 을할당 >>> c=str(10.3) # c 는문자열로으로 10.3 을할당 >>> type(a) # a 의타입을출력 <type 'int'> >>> type(b) # b 의타입을출력 <type 'float'> >>> type(c) # c 의타입을출력 <type 'str'> str() 함수는숫자값을문자값으로변환함
컴퓨터의반올림오차 아래와같이나오는이유는무엇일까? >>> c = 38.8 # c에실수형 38.8 할당 >>> print c # c 출력 38.8 >>> c # c에있는값은? 38.799999999999997 # 응? 컴퓨터의모든값은이진수로변환되어메모리에저장
컴퓨터의반올림오차 0.1 를이진수변환하여라 0.1 X 2 = 0.2 0 0.2 X 2 = 0.4 0 0.4 X 2 = 0.8 0 0.8 X 2 = 1.6 1 0.6 X 2 = 1.2 1 0.2 X 2 = 0.4 0 0.00011001100110011 (2) 단순한실수도이진수로변환하면무한소수가됨반올림오차는충분히작아반올림을하여일반적으로문제가되지않음
[ 알아두면상식 ] 컴퓨터는왜이진수를쓰나? 컴퓨터는실리콘이라는재료로만든반도체로구성됨 반도체는특정자극을줬을때전기를통할수있게하는물질 Source : http://samsungsemiconstory.com/1 도체와부도체에반해반도체는전류의흐름의제어가가능 전류가흐를때 1, 흐르지않을때 0 으로만숫자를표현할수있음 이진수한자리를 bit 라칭하고 8 개의 bit 는 1byte
콘솔입출력
콘솔창입출력 raw_input() 함수는콘솔창에서문자열을입력받음 raw_input.py print "Enter your name:" somebody = raw_input() # 콘솔창에서입력한값을 somebody에저장 print "Hi", somebody, "How are you today?" 실행 $ python raw_input.py # 코드실행 Enter your name: Sungchul Choi Hi Sungchul Choi How are you today? # 콘솔창에서이름입력
콘솔창입출력 advance 콤마 (,) 사용할경우 print 문이연결됨 print "Hello World!", print "Hello Again!!! #, 사용 Hello World! Hello Again!!! # 실행시두문장이열결되서출력됨 숫자입력받기 fahrenheit = float(raw_input()) print Fahrenheit python float_input.py # 입력시바로형변환하기 30 # 실행시 30 을입력하면 30.0 # 30.0 으로형변환하여출력
[ 연습 ] 화씨변환기 아래와같이출력되는프로그램을만드시오 본프로그램은섭씨를화씨로로변환해주는프로그램입니다변환하고싶은섭씨온도를입력해주세요 : 32.2 # 사용자입력섭씨온도 : 32.2 화씨온도 : 89.96 한글입력을위해서다음행을첫줄에삽입 # -*- coding: utf-8 -* 섭씨온도변환공식은 : ((9/5) * 섭씨온도 ) + 32
[ 답 ] 화씨변환기 # -*- coding: utf-8 -*- print " 본프로그램은섭씨를화씨로로변환해주는프로그램입니다 " print " 변환하고싶은섭씨온도를입력해주세요 : " celcius = float(raw_input()) fah = ( (9.0/5.0) * celcius ) + 32 print " 섭씨온도 :", celcius print " 화씨온도 :", fah
콘솔창입출력 advance 2 웹에서입력받기 import urllib file = urllib.urlopen(' http://www.korea.kr') htmlcontents = file.read() print htmlcontents # 웹관련라이브러리호출 # 홈페이지를호출 # 해당페이지열기 # 해당페이지내용출력 웹브라우저의페이지소스보기로결과비교
코딩컨벤션
코딩컨벤션이란 ㆍ프로그래밍은공동작업이많기때문에프로그램을작성하는가이드라인언어마다정해져있음 ㆍ자신만의방식으로만프로그램을작성할경우, 다른사용자의이해가떨어짐 ㆍ컴퓨터가이해할수있는코드는어느바보나다짤수있다. 좋은프로그래머는사람이이해할수있는코드를짠다. - 마틴파울러 ㆍ이를위해기본적인코딩작성법을코딩컨벤션이라함
파이썬코딩컨벤션 ㆍ들여쓰기는공백 4칸을권장ㆍ한줄은최대 79자까지ㆍ클래스내의메소드정의는 1줄씩띄어쓰기ㆍ불필요한공백은피함 ( ([]) 와 (()) 안, (,), (:) 과 (;) 앞ㆍ = 연산자는붙여씀ㆍ주석은항상갱신, 불필요한주석은삭제ㆍ소문자 L, 대문자 O, 대문자 I는변수명으로사용하지말것 ( 가독성문제 ) ㆍ함수명은소문자로구성, 필요하면밑줄로나눔 Source: http://goo.gl/tsalzq