빅데이터 관련 프로그래밍/Python3 기초 및 업무자동화

소개

mandoo_wage_program.py

클래스는 간단하게 자료형태 : integer, float, string, list

인스턴스는 값 : 1,2,3   0.1, 3.14,   'Hello world',  [1, 2, 3]
image

이전에 파이썬 프롬프트에서는 아래와 같이 자료형을 확인할 때, 클래스를 명시해줬었다.
image


나만의 자료형태도, 클래스로 정의할 수 있다.

새로운 자료형태의 클래스

mandoo_wage_program.py

  • 엑셀로 자료형태를 정의해본다고 가정하자.
    - 아래에서, 가로 한줄한줄이 나의 자료형태가 된다. 즉, 새로운 클래스가 된다.
    - 이러한 자료형태의 변수로 선언할 수 있다.
    image

  • 파이썬에서, 4가지 정보를 가지는 클래스를 만들어보자.
    - 변수명, 함수명과 다르게  클래스명은 첫글자를 대문자로 쓴다.
    - 인자가 없을 떄는 ()없이 그냥 클래스명: 으로 끝낸다.
    - 만약 값을 비워두고 싶다면 None을 대입한다
  • 생성한 클래스의 인스턴스는     인스턴스변수 = 클래스()   형태로 생성한다.
    (java의 경우,   클래스명 인스턴스 변수 = new 클래스명()으로 생성)
  • 클래스안에 정의한 필드들(name, wage_per_hour ... )에 접근하기 위해서는
    인스턴스.필드명으로 접근하면 된다.
  • 만약 각 필드들에 새로운 값을 입력하지 않았다면, 클래스에서 넣어준 최초값이 출력된다.
    image

  • 다른 인스턴스를 생성하더라도, e000과는 개별된 e001이 생성된다.
    image
    image


  • 근무시간을 추가해보자.
    - 엑셀에서는 함수식을 쓸 수 있다.
    - 파이참의 함수식을 클래스에도 넣을 수 있다.
    image


  • 클래스안에서 def 함수식을 정의할 때, 인자의 괄호를 열면, self가 자동으로 입력된다.
    일반 함수식과 다르게, 클래스안의 함수에서는 self라는 인자가 반드시 들어가야한다.
  • 클래스안의 필드클래스속 함수에서 사용할 때는, self.필드명으로 접근한다.
  • 이제 인스턴스에서 클래스안의 함수를 사용할 때에는, 필드와 동일하게 접근하며, ()인자식이 붙는것만 차이가 난다
    그리고 self라는 인자는 안적어준다.
    image


클래스안에는 필드(변수) 뿐만 아니라 함수도 넣어놓을 수 있다.!


클래스안에 함수에서  self다른함수를 호출할 수도 있다.


  • 엑셀에서 일당 칼럼을 추가한다고 해보자. 함수를 이용해서 구한 근무시간에 시급을 곱하면 된다.
    image

  • 파이썬에서도 할 수 있다.
    클래스안에 일당을 구하는 함수를 만들어보자.
    - 일당을 구하려면 앞에서 클래스에 정의한 함수()를 사용해야한다.
    클래스안에서 함수를 정의할 때, 인자로 반드시 self를 붙혔다.
      클래스안의 함수에서 클래스안의 필드를 이용할 때, self를 붙혔다.
    클래스안의 함수에서 클래스안의 함수를 이용할 때도, self를 붙힌다.
    - 정의한 일당구하는 함수식을 print로 찍어주자.
    image

이제 각각이 제대로 출력되는 것을 확인 했으니

하나도 묶어서 {} /t .format을 이용하여 한줄로 출력해보자.

  • 출력하고 싶은 요소는 6개 이다.
    image
    image



조재성, 추미애, ... 사람마다 각각

  1. 인스턴스 생성
  2. 클래스 필드마다 값 대입
  3. 출력

하기가 쉽지가 않다.  리스트를 사용할 수도 있으나... 클래스를 사용하므로

그래서 인스턴스를 생성함과 동시에, 필드에 값을 넣을 수 있는

클래스의 생성자를 도입할 것이다.

  1. 생성자를 정의할 때는, 기본형식이 정해져있다.
    - def __init__(self):   로서, 언더바2개가 init 양쪽으로 있다.
  2. 이제 생성자의 필수인자인 self, 옆에다가 추가로 받을수 있는 인자명을 필드명과 동일하게 적어준다.
    *이 때, 시급은 상수라서 안받는다.
  3. 마지막으로,  인자로 들어온 값(name)을 ----> 클래스의 필드인 self.필드 에 대입해주는 식을 작성한다.
    image

  • 이제 인스턴스 생성시, 클래스()의 인자로, 값을 대입해 줄 수 있다.
    image


이제 인스턴스 생성한 것을 변수에 대입하지말고, 리스트에 담아 관리해보자.

  1. 빈 리스트를 만들고
    *리스트는 = []로 생성 or  = list()로 생성 둘다 가능하다.
  2. 각 인스턴스를 append를 통해 리스트에 추가하자.
  3. for문을 통해 리스트에 있는 것을 다 출력하도록 하자.
    * 여러개의 리스트가 있어서, 각각 순서대로 접근할 때는 range(0, len())을 썼지만, 여기서는 리스트 1개로 관리-> 리스트를 이용한 for문
    image


print대신 -> csv으로 파일 쓰기까지 해보자.

(프로그래밍 print개념 -> 파일 입출력으로 생각하자. txt는 utf-8코딩 / csv는 안코딩)

  • 마찬가지로 for문 돌기전에 open() / for문안에서 write (  ) 에 줄바꿈해주기 / for문 끝나고 close() )
  • 우리는 각 value를 \t를 이용해 구분했으나 --> csv는 comma로 구분해주기
    image
    image

  • 첫번째 칼럼명도 작성해준다... \n도 까먹으면 안된다.
    image
    image




7. 파일 쓰기( TXT /CSV )

2018. 7. 4. 14:15


txt 파일 쓰기

write_txt_file.py

  1. 먼저 txt파일을 연 다음(open( 'file명') , 써야(mode-'w')한다. 그것을 어떠한 변수에 대입해준다.
    *파일명이 존재하지 않으면, 새로 생성해준다. 프로젝트안에 생성되는 것을 확인할 수 있다.
  2. 열어서 쓰게 해주는 변수를 이용해서 .write( '문자열')을 이용하면 입력시킬 수 있다.
  3. 쓰고 난 다음에는 닫아준다.
    image
    image


  • 위에서 생성하여 쓴 txt은 직접 실행해볼 수 도 있다.
    - 파일에 우클릭 > show in explorer를 통해 윈도우 탐색기를 열 수 있다.

    image
    image
    image


  • 한줄 더 추가하고 싶다면, 또 밑에다가 f.write를 해주면 된다.
    *하지만 자동으로 줄바꿈이 되지 않는다. -> 위에 문자열 마지막에 \n를 통해 작성한 뒤 한 줄 바꿔주자.
    * 실행시킬 때 마다 덮어쓰기가 되는 것 같다.
    image
    image
    imageimage


  • 한글을 출력시켜보자.
    - 한글이 깨지면서 인코딩문제가 생긴다. 컴퓨터는 한글을 모르기 때문이다. but 실제 txt파일은 잘 열린다.
    image
    image
    image


  • 위와 같은 문제가 생기는 이유는
    Pycharm은 기본적으로 UTF-8로 인코딩 되어있는데, 우리가 생성한 문서txt는 UTF-8로 인코딩되어있지 않아서 문제가 생기는 것.
    * 첫번째, 파일을 열 때, ( '파일명', '모드',   에 이어서 encoding 인자를 지정해준다)
    *마치 default인자처럼, 파이참이 기본적으로 다른 인코딩으로 되어있는 것을 강제로 UTF-8을 default로 지정해주는 것이다.
    image
    image


CSV 파일 쓰기

CSV : COMMA SEPARATED VALUES 로서,

  1. 변수에 대입하면서, open()열고 파일명' ~.csv' + 모드'w' + encoding='utp-8'
    * csv는 utf-8인코딩하면, 엑셀에서 깨진다. 지워야한다.
  2. write시 마찬가지로, 문자열 안에서, 콤마로 나누어준다.
  3. close로 닫는다.


  • txt와 마찬가지지만, 파일확장자만 txt -> csv로 바뀌었다. 그리고 입력시 문자열처럼 입력하면서, 콤마로 values들을 나눈다.
    - txt파일과 마찬가지로, 위쪽문장 끝에, \n을 해줘야 줄바꿈이 된다.
    image
    image


    image
    image



만두가게 임금계산 프로그램을 파일로 저장해보자.

mandoo_wage_txt_csv_generator.py


지난번 mandoo_wage.py의 함수 및 소스코드를 복사해온다.
긴 문장 은 -> txt파일로 저장
짧은 문장은 -> csv파일로 저장할 것이다.
image

  • 먼저 긴문장이 출력되는 for문에서  txt파일을 쓰는 과정을  적어보자(위에서 한 것 참고)
    1. for문이 시작되기 전에, txt파일을 연다.
    2. for문안에 print()로 출력된 부분을  f.write(  + \n줄바꿈 )로 바꿔주기
    만 하면 된다.
    * print는 자동으로 줄바꿈 해주는 것 같다.
    3. for문이 끝나고 f.close()를 통해 txt파일을 닫아준다.
    image
    image
    image

  • 아래 짧은 문장을 csv로 써보자. 마찬가지의 과정이다.
    1. for문 전에 open시, 파일명만 제대로 바꾸자.
      *csv파일은 open()시 3번째 인자에서, utf-8인코딩하면, 파이참에서는 잘보이지만, 엑셀에서 깨진다.!! ----> 하지마라
    2. print대신 csv_file.write('  ,  ,  , ')할 때, 정보들을 콤마로 벌려주자.
    3. for문 끝나고, close해준다.
    image
    image
    image
    image
    image


  • 엑셀에서는 '시간',이나 '원'을 사용하지않으므로 빼준다. 그리고 엑셀 맨 윗줄에 칼럼명을 넣으면 좋을 것 같다.
    for문을 돌기전에, csv_file.write칼럼명 3개를 미리 써놓으면 된다. + 줄바꿈도 빼먹으면 안된다.
    image
    image

  • 이제 여기에, 출근시간/퇴근시간도 추가해서 출력해보자.
    칼럼명에서 추가 /  write()에서 {}추가 /  format에서 인자 추가 작업을 해주면 된다.
    image
    image

  • 파이썬으로 쓴 csv파일에 대해서 엑셀 함수를 적용하고 싶다면
    [ 다른이름으로 저장-> 엑셀 통합문서로 저장 ] 하고 난 뒤, 사용하면 된다.

기본적인 함수 사용법

깃허브

image

def^함수명( 인자 ) :
계산식(인자 / 반환받을 변수)
return 변수

의 형태이다.

return 없이 출력만 혹은 계산만 하는 함수도 있다.

이전에 미리 정의된 함수로서, print(), len(), type() 함수 등이 있다. 지금부터는 함수를 만드는 방법에 대해 이야기 해보자.


사용해보기

함수를 정의하고, 그 함수를 사용해서 값을 return하고, 그 리턴 값을 a라는 변수에 넣은 뒤, 출력시켜보자.
image

만약 계산식이 간단하다면, return 에다가 바로 계산식을 적어줘서 반환변수없이 사용할 수 도 있다.
image


구구단 함수를 정의해보자

  • 먼저, 이전시간에 했던, 2단을 출력하는 코드를 작성해본다.
    image

  • 이제, 2단을 j로 바꿀 것인데, 함수에 인자로 들어가서, 원하든 단을 출력하도록 해보자.
    * return 이 없는 함수이다. 대신 출력물을 배출한다.
    image

    return 이 없는 함수와, return이 있는 함수를 한눈에 보자.
    image


  • 인자가 2개인 함수도 작성할 수 있다.
    image


  • 문자열을 인자로 받을 수 도 있다.
    image


함수를 왜 쓰는가?

mandoo_wage.py

  • 시급과 함께, 리스트의 형태로, 직원/ 시작*종료시간 이 주어지고, for문은 리스트를 사용하므로, range(0, len(리스트))를 이용해서
    i번째 사람의 근무시간(종료-시간시작), 일당( 근무시간*시급)을 계산한 뒤, 출력해보자.
    image


하지만, 노동법을 생각해서,   일당 시간수정해야한다.

  • break_time이라는 변수를 만들어서, 4시간 이상 근무를 했다면, 4시간마다( 4로 나눈 몫! ) 0.5(30분)시간씩 곱해져야한다.
    그리고 worked 에서 break_time을 뺀 시간이 근무시간이다.
    image


잘못된 부분을 고치는데, 만약 for문이 여러개였다면 이었다면??

노동법을 고려해 수정한 코드인, if worked >= 4 부분을, for문 마다 붙혀넣는 것이 아니라 , 이 부분을 함수로 만들어 함수만 집어넣으면 된다.

  •  wage_calculator( worked_hours )라는 함수를 만들어, if 4시간 이상시  와 시급 곱해주는 것을 넣어서, 바꿔주자.
    image


  • worked_hours 계산하는 것도, 차라리 함수 인자를 work_start_, work_finish 2개로 받으면 된다.
    - 기존의 for문 속, worked 계산식은 함수속으로 들어가는 대신, 함수는 2개의 인자를 받게된다.
    *이 때, 봉착하는 문제는, print문 속 {}시간 근무에 들어간 format속의 변수 worked다.
    *worked 계산식이 함수로 들어가버렸기 때문에 --> 함수에서 wage(일당)뿐만 아니라, worked_hours 도 추가로 반환해주도록 하자.
    image

  • 함수에서 wage, wokred_hours  2개를 return해줬으면, for문 속에서도 2개의 변수에 받으면 된다.
    image

이렇게 함수를 이용하면 , 반복에 있어서 편하게 할 수 있으며,
수정/보안할 때도, 한번만 해주면 된다


  • 시급도 바뀔 수 있다. 시급도 인자로 받아보자.
    -def wage_calculator( ar1, ar2, wage_per_hour)로 인자를 추가해주고, 함수 계산식 7530을 wage_per_hour로 바꿔주자.
    - 함수를 사용하는 곳으로 가서, 7530을 입력해주자.
    image


  • 시급을 3번째 인자로 주면서, default값도 =7530으로 지정해주면 ---> 함수를 사용할 때는 인자 2개만 넣어도 된다!
    자동으로 7530이 3번째 인자로 인식된다.
    - 만일 디폴트값이 없다면, 함수사용시 3번째 인자 대입을 빠트리면 안된다
    image
    image


  • 시급을 default인 7530원이 아닌 다른 값으로 주고 싶다면, 함수사용시 2개의 인자만 있었던 곳에,  3번째 인자를 대입해주면 된다.
    image


함수 만들시 유의점

  1. 목적이 명확한 표형으로 함수명 작성
  2. 함수명은 소문자와 언더바(_)로 작성하는게 정석
  3. 파라미터(인자)도 소문자로
  4. 한 함수는 한가지 기능만 & 한 화면이상 넘어가지 않게 작성하는 것이 좋다.


함수와 scope

함수 속의 인자인 x와 y는 함수안에서만 의미가 있다.

image


파이썬에서 이미 만들어져 제공하는 함수

input() : 사용자 입력을 기다렸다가, 차례대로 실행된다. / 숫자도 문자열로 받는다. / 인자는 '문자열'로 안내문 역할을 할 수 있다.
- 파이참에서는 기본적으로 제공하는 함수에 대해 보라색으로 표시된다.!

  • 함수를 실행시키면 아무것도 안일어난 것 같지만, 콘솔창에 마우스를 찍어보면, 커서가 깜박인다. 입력을 받을 수 있는 상태이다.

  • image
    image

  • 이 때, 어떤 값을 입력하면, 초록색으로 사용자의 입력값이 표시되고, 엔터를 치면 ---> a에 저장된다음,  print()함수를 타게된다.
    image

  • 문자열도 입력가능하다
    image


  • input()인자에는 사용자입력에 대한 안내를 작성할 수 있다.
    image
    image

  • 구구단 프로그램의 단수를 입력받아보자.
    - 역시 먼저 2단을 작성한 다음, 단수를 x로 입력받는 함수를 만들어보자.
    image
    image
    - 위와 같이 7단이 아니라, 7의 갯수가 연이서 나타나는 이유는 input()으로 받은 것은 문자열이기 때문이다.
    - a의 type을 확인해보기 위해, type(a)를 print로 출력해보자.
      * type(a)만 입력하면 아무것도 나타나지 않음.  print( type() ) 은 쌍으로 생각하자.
    image

  • input()으로 받은 사용자입력 [문자열]을 int형으로 바꾸는 함수가 int()이다.
    - 만약 사용자 입력이 문자열인 경우 int( 문자열 ) 하면 에러가 난다. 문자열 숫자 -- > int() --> 정수 숫자만 가능하다.
    image

  • 구구단함수를 다시 호출해보자( range (1, 10)까지 해야 1부터 9까지.. 앞에는 오타)
    image

소개

깃허브

while의 사용례


image

for의 사용례 2가지


image


while문 사용해보기

새로운 프로젝트를 만들고, py파일을 만든 다음, 아래 문장을 실행시켜보자.

print('study while')

condition = True
while condition:
print('wow')

조건이 계속 True이므로, wow가 계속해서 반복될 것이다. 이 때는, 좌측의 정지버튼을 눌러서 정지시킨다.
* 정지 단축키Ctrl+F2 이다.
image


while문의 기본 사용은 아래와 같다.


인자 i를 만들고,  0부터 시작시키도록해서, 특정 횟수를 반복하고, 그 속에서는 하나씩 +1 시켜준다.

i = 0
while i < 10:
print(i)
i = i + 1


이제, 가지고 있는 모든 돈을 계란사는데 모두 쓰는 프로그램을 만들어보자.



  • 먼저, 변수로는  [ 내가 가진 돈 / 계란 1개 가격 / 보유 계란수 ] 를 변수로 둔다.
    * i인자를 0으로 생성하는 대신, 가진돈 / 계란가격변수로 생성한 뒤 가진돈 > 계란가격 이기만 하면 [ 돈 마이너스 -> 계란 획득 ]의 과정
    - while문의 조건에다가는,  내가 가진 돈이 계란가격보다 클 떄, (1) 돈을 내고, (2) 그만큼 계란 가지도록 반복되도록 한다.
    - print문으로 먼저  보유계란수 와 남은 돈을 출력해준다. 보유계란 0개부터 찍히고, 남은돈 10,000원부터 찍힌다.
      *상황 [ 출력 -> 연산 ]   을 반복하면,   아래그림과 같이 맨 마지막 연산이 계산은 되지만 출력되지 않는다.
      * 만약 [ 연산 -> 출력 ]   을 반복하면, 맨 처음 상태는 찍히지 않고, 첫번 째 연산후에 출력이 될 것이다.

    image

    그러므로, [ 출력 -> 연산 ] 으로 while을 반복하고, while문 끝나고 마지막 연산된 것을 따로 출력해주는 형태로 해보자.
    image

    반대로, 먼저 [상활출력 ]  후에     while에서 [ 연산 -> 출력] 의 형태를 가져도 된다.
    image



for문 사용해보기

for문은 리스트를 사용하거나 range를 사용하는 방법 2가지가 있다.

  • 먼저 range를 이용한 for문의 기본적인 사용방법은 아래와 같다
    - 0부터 10전까지, 즉, 0, 1, 2, ~ , 9까지 반복된다. 10번 반복된다.
    image

    만약 while을 사용한다면, 아래와 같다.
    - while문은 먼저 변수 i = 0을 선언해주고, 어떤 반복행위를 작성한 뒤, i = i + 1으로 하나씩 수동으로 올려줬다.
    - i = i +1 이 귀찮다면, i += 1 을 대신 쓸 수 있다.
    image
    image



  • 이제 리스트를 이용해서 for문을 사용해보자.
    - 먼저 리스트를 작성해준 뒤, for문의 in 안에 그 리스트를 집어넣는다
    image


응용 - 홀짝 구분해주는 프로그램 제작

0부터 9까지를 반복하는데, i가 짝수인지 홀수인지는
for문 안에서, if문을 통해 2로 나눈 나머지가 0라면 짝수, else 홀수로 구분하면된다.

- print ( i + '문자열')은 불가하다. -> i를 str()함수로 문자열로 바꿔준다.
- 정수나 실수를 문자열로 바꾸는 작업이 귀찮다면 -> 문자열이 아닌 변수{}로 비워놓고 .format을 쓰면 된다.

print(str(i) + ' : 홀수')
print('{} : 홀수'.format(i))


image
image

image


구구단 출력해보기

먼저, range를 0이 아닌 1부터 9까지의 범위인 (1, 9)로 지정해준다.
for문 안에서는 2단을 먼저 해본다.

for i in range(1,10):
print('2 * {} = {}'.format(i, 2*i))

image

  • 이제 가정한 2단을 j로 바꿔주는 반복문을 작성해야한다.
    i는 각 구구단에서, 1부터 9까지 곱해주는 놈이었다.
    그러나 2는 또, 전체에서 2부터 9까지 크게 한바퀴 돌아야한다.
    즉, for i ~ 안에 들어갈 것이 아니라, for i를 감싸주는 for j in range(2,10)이 되어야한다.
      *기존에 있던 2문장을 전체선택 한 다음, [TAB]을 누르면 안드로이드스튜디오와 마찬가지로 4칸 들여써진다.

    image


직원 정보를 출력해보자.

이름리스트, 생일리스트를 5개 (0,4)만들고,
for문 속에서 리스트 요소에 접근[i]하여 각각을 프린트해보자.
* print문은 ,(콤마)를 통해서 여러개 출력시킬 수 도 있다. ex> print( name_list[i], birth_list[i] )

image


그런데 만약에, 리스트에 하나가 추가된다면?

for i in range(0,5) 상태로는 동으로 업데이트가 되지 않는다.

range 의 끝범위를,  리스트의 크기인 len()함수를 쓰면된다.
image

파이참을 켜서 새로운 프로젝트를 만들어보자.

File >  New Project > studying_if 프로젝트를 만들어보았다.

image
image


버전관리를 시켜보자.

  • 아직 버전관리가 안되는 프로젝트라면 상단의  VCS > Enalbe Version Control Integration... 을 클릭한다.
    image

  • 선택창에서 Git을 선택한다.
    이러한 작업을 통해, 소스트리에서 추적이 가능해진다.
    image


  • 소스트리를 열고, +버튼을 눌러서 특정폴더에서 상단의 Add버튼을 눌러 해당 프로젝트를 선택한다.
    모두 Stage에 올리고나서 , 커밋을 해주면 저장소에서 commit이 가능해진다. 로컬해서 버전관리를 시작하는 것이다.
    image
    image
    image


  • 만일 로컬 -> 깃허브(원격저장소)에다가 올리고 싶다면,
    (1) github에 접속하여 새로운 repository를 만들고
    image

    (2) https를 복사한 다음
    image

    (3) 소스트리 상단메뉴의 Repository > Repo.. Settings > Add >  Url/Path에다가 붙혀넣기 해준다.
    imageimage

    (4) 그다음 Push를 해보자.
    image
    image
    image
    image



조건문 학습

  • 먼저 프로젝트 폴더에서 우클릭을 통해 파이썬파일을 하나 만든다.
    image

  • 잘돌아가는지 확인하기 위해서 프린트를 찍고 실행시켜본다.
    실행방법은 코드를 적는 란에서 우클릭 > Run을 클릭하거나 [ Ctrl+Shift+ F10 ] 을 누르면 된다.
    image


  • if문에 조건식을 넣고 마지막에 콜론(:)을 넣은 다음, enter를 치면, 자동으로 앞에 4칸이 띄워진다.
    반드시 if문 다음에는 앞에 4칸이 띄워져 있어야한다.
    image

    해깔릴수 있으니, 마지막엔 끝난다는 문구도 프린트해준다.
    image


  • else : 도 마찬가지로, 마지막에는 : 을 붙혀준다.
    image


  • .format을 이용해서, 같거나 혹은 다른 변수들의 값을 출력해줄 수 있다.
    image


  • 만약 else로 다른 경우, 어느 것이 더 큰지도 알려줄 수 있다.
    image




새로운 파일을 만들어서 학습해보자. 주제는 프로그래머 농담이다.


아내 : '마트에가서 우유 하나 사와. 아! 계란이 있으면, 6개 사와'
안드로이드 스튜디오와 마찬가지로, 프로젝트폴더에서 [ Alt + Insert ] 만으로 새로운 파일을 만들 수 있다.
- 파일명은 buying_milk로 한다.
image
image

 




새로운 파일을 또 하나 만들어보자.


이름, 시작시간/끝난시간/총 일한시간, 시간당임금 을 이용하여 출력하는 이전에 했던 문장 생성이다.
- 파일명 : mandoo_wage
image


만약 9시부터 일을 시작해서 14시까지 일한다면? 5시간 일한 것이기 때문에, 잘 계산이 될 것이다.
image
 

하지만, 여기서 간과한 것이 있다. 노동법에 의하면 4시간 이상 일할 시,  30분의 휴게시간을 주어야한다.
5시간 일한다면, 4시간이 한번 채워지고 중간에 30분이 주어진 것이므로, 실질적으로는 4시간 30분을 일한 것이다. ( 1 * 30분 = 1 * 0.5시간 만큼 빠짐)
만약 9시 출근해서, 18시에 퇴근한다면? 9시간 중에 4시간이 2번 채워지니까, 점심시간 30+30분의 시간 쉬는 시간이 주어져있다.
즉, worked 시간 // 4시간 한 몫 * 0.5(30분) 만큼의 쉬는 시간을 worked에서 빼줘야한다.
image
image

기초문법 - 산술연산자와 비교연산자

  • 먼저 파이썬 사용을 위해 파이썬 아나콘다를 실행시킨다. 그리고 python을 입력하여 파이썬 프롬프트로 진입한다
    image

  • 산술연산자
    - 특이한 점은 몫은 // 연산자를 통해, 나머지는 %를 통해 구할 수 있다.
    - 제곱은** 별표를 2개 쓰면 된다.
    image


  • 비교연산자
    - 같다는 ==   같지않다는 !=  를 통해 비교한다.
    - 결과값은True or False로 나올 것이다.
    image


변수와 자료형

  • 변수에 숫자를 대입하려면 = 를 이용한다.
    image
  • 숫자에는 크게 많이 쓰는 것이 정수와 실수이다.
    - type()함수를 통해 변수의 타입을 확인해보자.  정수형 int와 실수형 float로 구분된다.
    - 메모리상에서는 integer형이 더 적게 차지한다
    - 음수도 변수에 들어갈 수 있다.
    - 실수랑 정수를 더하면, 실수가 된다는 것도 알 수 있다.
    image


문자열

print()함수에는 문자열을 알려주기위해서, 작은따옴표로 붙혀줬다.

만약 변수m에다가 문자열을 넣고 싶다면 ''작은따옴표를 넣어줘야한다. *큰 따옴표도 가능하다. 대신 시작과 끝이 같아야한다.

image

Q. 왜 둘다 가능할까? A. 문자열 안에...  인용문이나, 대화를 넣게 할 수 있기 때문..
image

만약 한가지만 고집하면서, 그 속에도, 같은 따옴표를 넣고 싶다면, \' 이나 \"을 문자열 속에 사용하면 된다.

  • 문자열 더하기
    image
  • 문자열과 숫자를 더할 수 있다.
    - 곧바로 더하면, 타입에러가 난다.
    - must be str이어야한다고 나온다. iq를 int-> str로 바꿔야한다. 그러기 위해서는 str()함수를 사용한다.
    image


  • 특정요소만 변수로 지정해놓고, 변수만 바꾸어서, 더해진 문자열과 숫자변수가 어떠한 문장이 완성되게 할 수 있다.
    image

  • 어떤 문자열 문장 " "에, {}중괄호로 비워두고, 마지막에 .format( , )를 붙혀, 순서대로 변수로 채울 수있다.
    굳이 str()함수로 숫자를 문자열로 변환하지 않아도 가능하다.
    image
  • 시급을 변수로 지정해주고, 문자열 속에 {}를 비워놓고, format()의 변수에 시급*worked 를 하여 일당도 출력되도록 해보자.
    image

Boolean

= 는 대입연산자 ==는 비교연산자이다.
*비교연산자의 결과는 True or False이고, 첫글자가 소문자이면 오류가 난다.

만약 a = 103 == 100 이렇게 입력한다면,

비교연산자의 결과 False or True가  먼저 판단되고, 그 결과가 a라는 변수에  bool 타입으로 들어가게 된다.
image


List

  • 먼저, 변수 3개와, format을 이용하여 문장이 출력되도록 해보자. (앞서 배운것의 복습이다.)
    image


  • 직원이 만약 여러명이라면?  변수를 name_0부터 name_n까지 여러개의 변수를 선언해야한다.
    이러한 피곤한 작업을 대체할 수 있는 것이 names라는 리스트이며, 접근은 names[0] , names[1] 이런식으로 접근하면 된다.
    - 타입을 확인하면 list 타입이다.
    - 개별 접근한 리스트변수[n]의 타입은 ''로 입력된 문자열 str타입이다.
    - 주의할 점은, 리스트는 [0]부터 시작한다.
    image


  • 리스트에 추가 하고 싶다면? 리스트.append() 함수를 사용하면 된다.
    - 배열의 시작은 [0]이지만, 끝에서부터 접근하고 싶다면, [-1]부터 시작한다.
    image


  • 리스트 안에 오타를 추가 했다면?  해당 인덱스를 0부터 확인한 뒤, 그냥 접근해서 대입해주면 된다.
    image


  • 리스트에서 특정인덱스를 삭제하고 싶다면? del 해당인덱스접근 으로 해결한다.
  • 리스트 길이의 확인은 len( 리스트 )로 확인한다.
    image

  • 리스트에 문자열 + 정수 + 실수  다 담을 수 있다.
    - 리스트에도 리스트를 담을 수 있다.  info 라는 리스트에는,  리스트변수인 names 와 birth_list 를 담아보자.
      확인해보면, 대괄호 리스트안에, 또다른 대괄호 리스트 2개의 요소가 들어가있다.
    image


  • 이제, 리스트 속의 리스트 요소에 접근하는 방법을 알아보자.
    info[0]을 통해, 첫번째 리스트에 접근하고, info[0][0]을 통해서, 첫번째리스트의 첫번째 요소를 가져온다.
    image

  • 이제 names, birth_list 이외에 다른 리스트들도 아래의 엑셀처럼 구성할 수 있다.
    -시급은 고정되어있으므로, 따로 떼어놓고, 수식에 넣을 때는, [F4]키를 통해 절대참조를 만들어준다.
    image

    - text라는 문장에는 info라는 리스트에 접근 한 다음, 0번째요소인 홍준표에 대한 names, worked, 일당을 출력시켜보자.
    image

    - 만약 1번재 요소인 안철수에 대한 문장을 뽑아내고 싶다면, info[0][0] -> info[0][1] 로 뒤 인덱스만 바꿔주면 된다.

  • 이제 힌트를 얻었다. text라는 문장을 뽑아낼 때는, 뒤쪽의 인덱스만 0부터 3까지 변한다.
    즉, 뒷 인덱스를 변수 i로 두고, i는 0을 대입시켜 0부터 시작하도록 한다.
    * 이 때, i = 1을 넣어 다른사람으로 수정하고나서, text도 다시한번 개선해줘야한다. ㅠㅜ 실시간 반영은 안된다. react(x)
    image

i를 사람의 손으로 바꾸는 것은 매우 피곤한 작업이기 때문에, while이나 for문을 통해 개선할 것이다.

Pycharm 대학생 무료 라이센스 받기

  • 먼저 재학중인 대학교의 email이 필요합니다. 동신대의 경우, 종합정보시스템 -> office365 메뉴 를 들어가보면, id@dsu.kr 형식으로 미리 생성되어있었습니다.
    *동신대의 경우, jetbrain에 등록이 안되어있네요.. 인서울 학교는 되어있는 것 같습니다.
    *만일 대학생이 아니라면, community버전을 사용해야합니다. 각종 제한이 있을 수 있습니다.
  • https://www.jetbrains.com/student/ 로 접속해서  하단의 apply now를 클릭합니다.
    -메일에서 Approve된 링크를 타고 다시 들어옵니다.
    -아래와 같이 라이센스 관련, 정보를 얻고, 아이디와 비밀번호를 입력하여 얻을 수 있습니다.
    -Pycharm을 선택해서 다운로드합니다.
    image

  • 설치를 진행하는 도중, 자신의 윈도우 환경을 아래와 같이 체크해줍니다.
    -64bit 선택 / .py (파이썬 파일) 동기화를 시켜줍니다.
    imageimage


  • 아래와 같이 학교email을 통해 얻은 아이디와 비밀번호를 동기화 시켜 1년 무료 라이센스를 등록할 수 있습니다.
    image


  • 보통의 개발자들은 눈 보호를 위해 검은색 테마(dracula)를 활용합니다. 안드로이드 스튜디오를 이용해본 저로서는 매우 친숙합니다
    imageimage


  • 파이참을 실행해서 새로운 프로젝트를 만들어봅시다!
    - 새로운 프로젝트명은 마음대로 정해놓고, 왼쪽 컴포넌트메뉴에서 우클릭을 통해 파이썬 파일을 생성할 수 있습니다.
     
    imageimageimage


  • 세팅으로 들어가보면 Editor>Font>에서 글자크기를 바꿀 수 있습니다.
    -저는 Naver에서 제공하는 D2coding 글자체를 할 것입니다.  해당 링크는 아래에서 확인해보세요
      http://nittaku.tistory.com/72?category=720858 [안드로이드> 단축키 및 팁> 폰트바꾸기 ]
    image


  • 새로 만든 파이썬 파일에서 print('hello world')를 입력하고, 상단 Run > Run을 통해서 실행시켜볼 수 있습니다.
    imageimageimage

1. Python3 및 anaconda 설치

2018. 5. 9. 00:48

파이썬 2.7 vs 파이썬3

특별한 라이브러리나 모듈을 사용하고 있는데 python3에서 지원안하는 경우가 아닌이상  python3를 설치하자(결국 넘어옴)

python3만 설치하는 것보다는 다른 모듈을 다 같이 쉽게 설치해주는 anaconda라는 통합패키지를 이용해서 python3를 설치하자

python3를 포함한 다른 패키지를 다 포함하고 있는 것이 anaconda이다.

anaconda없이 python3만 설치한다면, pandas이외에 다른 모듈들이 업데이트될 때, 버전충돌의 문제가 생기는데, 그것을 해소할 수 있다.


  • https://anaconda.org/ 에 접속해 우측상단 다운로드 클릭
    image
    - 나는 윈도우에서 개발할 것이므로 윈도우버전을 다운 받는다.
    - 대부분 컴퓨터는 64비트일 것이다(오래된 컴퓨터 아니면 64비트로 나옴)

    • 설치화면에서는 next만 눌러주면 된다. 용량은 500MB정도 된다. 시간이 꽤 소요된다.
      image

      마지막에 LEARN하라는 것만 체크취소하고 완료하자.
      image

  • 설치가 완료된 후, 시작메뉴에 Anaconda prompt가 설치되었다면 정상 설치 된 것이다.
    image

  • prompt에서 python을 쳐보자.
    - 파이썬 버전을 확인할 수 있고, >>> 라는 커맨드화면이 나온다.
    image

    -여기에 print('Hello Wolrd') 를 쳐서 출력도 해보고,  1+1 계산값을 출력해보자.
    image

  • python을 빠져나가는 방법은 exit()를 통해 나갈 수 있다. prompt를 끄는 방법은 exit 혹은 alt+f4로 끈다.
    image

+ Recent posts