<gh_stars>1-10
import csv

print('')
print('====================================================================================================')
print('== 문제 14. (오늘의 마지막 문제) 이름과 월급 + 커미션을 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], emp_list[5], 0 if emp_list[6] is '' else emp_list[6])

# 4.4 함수
#  * 우리의 목표에 맞춰서 다시 정리
#                 오라클                      파이썬
#  1.문자함수      upper                      upper()
#                 lower                      lower()
#                 initcap                    사용자 함수
#                 substr                     변수[1:2]
#                 replace                    replace()
#                 length                     len
#                 rtrim                      rstrip()
#                 ltrim                      lstrip()
#                 trim                       strip()
#                 rpad                       사용자 함수
#                 lpad                       사용자 함수
#                 instr                      사용자 함수

#  2. 숫자함수     round                      round()
#                 trunc                      trunc()
#                 mod                        %
#                 power                      power()

#  3. 날짜함수     months_between             사용자 함수
#                 add_months                 relativedelta(datautil 패키지 안에 함수)
#                 next_day                   사용자 함수
#                 last_day                   monthrange

#  4. 변환함수     to_char                    str()
#                 to_number                  int(), float()
#                 to_date                    datetime, strptime()

#  5. 일반함수     nvl                        사용자 함수
#                 decode                     사용자 함수
#                 case                       if 문

#  6. 기타함수     문자함수                    format()
#                                            isalpha()
#                                            isnumeric()
#                                            isspace()
#                 변환함수                    list()
#                                            tuple()
#                 기타                        split()
#                                            append()
#                                            range()

# ■ 연산자              오라클                파이썬
# 1. 산술 연산자         +                    +
#                       -                    -
#                       *                    *
#                       /                    /
#                       mod                  %

# 2. 비교 연산자         =                    ==
#                       !=                   !=
#                       >                    >
#                       >=                   >=
#                       <                    <
#                       <=                   <=

# 3. 논리 연산자         and                  &
#                       or                   |
#                       not                  !

# 4. 기타 비교 연산자     between              <= & >=
#                       in, not in           in, not in
#                       is null              =='', is None
#                       like                 ^, $


print('')
print('====================================================================================================')
print('== 문제 15. 이름과 직업을 출력하는데 소문자로 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1].lower(), emp_list[2].lower())


print('')
print('====================================================================================================')
print('== 문제 16. (Mit TTT 코드 이해를 위해 중요한 기초 문제) 이름을 출력하는데 이름의 첫 번째 철자만 출력하고 소문자로 출력하시오.')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][0].lower())


print('')
print('====================================================================================================')
print('== 문제 17. 이름을 출력하는데 이름의 두번째 철자부터 마지막까지 소문자로 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][1:].lower())


print('')
print('====================================================================================================')
print('== 문제 18. initcap 함수 생성')
print('====================================================================================================')
def initcap_func(val):
    return val[0].upper()+val[1:]

print(initcap_func('apple'))


print('')
print('====================================================================================================')
print('== 문제 19. 이름의 첫번째 철자부터 세번째 철자까지 출력되게 하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][0:3])


def substr(data, sindex, eindex, variation):
    return data[sindex:eindex:variation]

print('')
print('====================================================================================================')
print('== 문제 20. 이름의 첫번째 철자부터 세번째 철자가 출력되게하는데 substr 함수를 만들어서 출력되게 하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(substr(emp_list[1], 0, 3, 1))


print('')
print('====================================================================================================')
print('== 문제 21. 이름과 월급을 출력하는데 월급을 출력할때에 0 대신에 * 를 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], emp_list[5].replace('0', '*'))


print('')
print('====================================================================================================')
print('== 문제 22. 이름과 월급을 출력하는데 월급을 출력할때에 0~2를 *로 출력하시오!')
print('====================================================================================================')
import re
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], re.sub('[0-2]', '*', emp_list[5]))


print('')
print('====================================================================================================')
print('== 문제 23. 이름과 이름의 길이를 출력하시오!')
print('====================================================================================================')
def returnCsvData(filename):
    file = open('D:\\KYH\\02.PYTHON\\data\\'+filename, 'r', encoding='utf-8')
    return csv.reader(file)

for emp_list in returnCsvData('emp_comm.csv'):
    print(emp_list[1], len(emp_list[1]))


print('')
print('====================================================================================================')
print('== 문제 24. 아래의 split 함수의 예제를 수행해보시오!')
print('====================================================================================================')
file = 'a b c d e f g'
print(file.split(' '))


print('')
print('====================================================================================================')
print('== 문제 25. 아래의 file 변수의 요소들을 리스트 변수로 담아내서 두번째 요소인 b만 출력해보시오!')
print('====================================================================================================')
print(file.split(' ')[1])


print('')
print('====================================================================================================')
print('== 문제 26. 겨울왕국 대본을 공백을 구분으로 두고 나눠서 리스트 변수로 저장되게 하시오.')
print('====================================================================================================')
def returnTxtData(filename):
    file = open('D:\\KYH\\02.PYTHON\\data\\'+filename, 'r')
    return file

for winter_list in returnTxtData('winter.txt'):
    print(winter_list.split(' '))


print('')
print('====================================================================================================')
print('== 문제 27. (점심시간 문제) 위의 스크립트를 이용해서 겨울왕국 각 리스트 변수안에 단어가 몇개가 있는지 아래와 같이 출력되게 하시오!')
print('====================================================================================================')
for winter_list in returnTxtData('winter.txt'):
    print(winter_list.split(' '), len(winter_list.split(' ')))


print('')
print('====================================================================================================')
print('== 문제 28. 위의 숫자들을 다 더한값을 출력하시오!')
print('====================================================================================================')
sum = 0
for winter_list in returnTxtData('winter.txt'):
    sum += len(winter_list.split(' '))
print(sum)


print('')
print('====================================================================================================')
print('== 문제 29. 겨울왕국 대본에는 Elsa 가 몇 번 나오는지 카운트 하시오!')
print('====================================================================================================')
cnt = 0
for winter_list in returnTxtData('winter.txt'):
    cnt += winter_list.split(' ').count('Elsa')
print(cnt)


print('')
print('====================================================================================================')
print('== 문제 30. emp2.csv 에서 14개의 리스트 변수중에 5번째 요소(월급) 부분만 담아서 리스트 변수로 아래와 같이 생성하시오!')
print('====================================================================================================')
sal_list = []
for data in returnCsvData('emp2.csv'):
    sal_list.append(data[5])
print(sal_list)


print('')
print('====================================================================================================')
print('== 문제 31. 겨울왕국 대본을 단어별로 출력하시오!')
print('====================================================================================================')
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        print(word)


print('')
print('====================================================================================================')
print('== 문제 32. 위의 출력된 단어들을 하나의 list 변수에 담으시오!')
print('====================================================================================================')
word_list = []
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        word_list.append(word)
print(word_list)


print('')
print('====================================================================================================')
print('== 문제 33. 출력된 단어들 중에 \n 은 잘라내시오!')
print('====================================================================================================')
word_list = []
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        word_list.append(word.strip('\n'))
print(word_list)


print('')
print('====================================================================================================')
print('== 문제 34. rpad 함수를 생성하고 아래와 같이 실행되게하시오!')
print('            (월급을 출력할때 전체 10자리를 잡고 남은 왼쪽에 * 을 채워넣으시오.')
print('====================================================================================================')
def rpad(indata, pos):
    return ('*'*(pos-len(indata)))+indata

def lpad(indata, pos):
    return indata+('*'*(pos-len(indata)))

for data in returnCsvData('emp2.csv'):
    print(data[1], rpad(data[5], 10), lpad(data[5], 10))
    print(data[1], data[5].rjust(10, '*'), data[5].ljust(10, '*'))


print('')
print('====================================================================================================')
print('== 문제 35. instr 함수를 파이썬으로 구현하시오')
print('====================================================================================================')
def instr(data, search):
    for i in range(0, len(data)):
        if data[i] == search:
            return i
    return -1

print(instr('Apple', 'l'))


print('')
print('====================================================================================================')
print('== 문제36. 이름, 이름에 M 자가 몇 번째 자리에 있는지 출력하시오')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], instr(data[1], 'M'))


print('')
print('====================================================================================================')
print('== 문제37. 이름, 월급, 보너스를 출력하는데 보너스는 월급의 15%로 출력하시오')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], int(data[5])*0.15)


print('')
print('====================================================================================================')
print('== 문제 38. 위의 결과를 다시 출력하는데 컬럼명도 출력되게 하시오')
print('====================================================================================================')
print('ENAME', 'SAL', 'COMM')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], int(data[5])*0.15)


print('')
print('====================================================================================================')
print('== 문제39. 보너스의 소숫점을 반올림하시오')
print('====================================================================================================')
import math
print('ENAME', 'SAL', 'COMM')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], round(int(data[5])*0.15))


print('')
print('====================================================================================================')
print('== 문제 40. 보너스를 출력할때 소수점 이하를 trunc 를 써서 잘라내시오!')
print('====================================================================================================')
import math
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], math.trunc(int(data[5])*0.15))


print('')
print('====================================================================================================')
print('== 문제 41. input 명령어를 이용해서 숫자를 입력받아서 해당 숫자가 짝수인지 홀수인지 출력되게 하시오!')
print('====================================================================================================')
a = input('숫자를 입력하세요 : ')

print('짝수' if (int(a) % 2) == 0 else '홀수')


print('')
print('====================================================================================================')
print('== 문제 42. power 함수를 이용해서 아래의 프로그램을 구현하시오')
print('====================================================================================================')
num = float(input('숫자를 입력하세요 : '))
jisu = float(input('지수를 입력하세요 : '))
print(math.pow(num, jisu))

print('')
print('====================================================================================================')
print('== 문제 43. 오늘 날짜를 출력하세요.')
print('====================================================================================================')
import datetime as dt
today = dt.datetime.today()
print(today)


print('')
print('====================================================================================================')
print('== 문제 44. 오늘부터 3달뒤의 날짜를 출력하시오!')
print('====================================================================================================')
from datetime import date
from dateutil.relativedelta import relativedelta

result = date.today() + relativedelta(months=3)
print(result)


print('')
print('====================================================================================================')
print('== 문제 45. 이름, 입사일, 입사한 날짜에서 3달후의 날짜를 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    dateTime = dt.datetime.strptime(data[4], '%Y-%m-%d').date()  # string --> date 타입으로 변환
    print(data[1], dateTime, dateTime+relativedelta(months=3))


print('')
print('====================================================================================================')
print('== 문제 46. 올해 2월달의 마지막 날짜를 출력하시오!')
print('====================================================================================================')
from calendar import monthrange
print(monthrange(2017, 2))  # tuple 타입으로 리턴


print('')
print('====================================================================================================')
print('== 문제 47. 오늘부터 요번달 말일까지 총 몇일 남았는지 출력하시오!')
print('====================================================================================================')
toYear = dt.datetime.today().year
toMonth = dt.datetime.today().month
toDay = dt.datetime.today().day
print(monthrange(toYear, toMonth)[1]-toDay)


print('')
print('====================================================================================================')
print('== 문제 48. 오늘이 무슨 요일인지 출력하시오!')
print('====================================================================================================')
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print(days[dt.date.today().weekday()])


print('')
print('====================================================================================================')
print('== 문제 49. 이름, 입사한 요일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], days[dt.datetime.strptime(data[4], '%Y-%m-%d').date().weekday()])


print('')
print('====================================================================================================')
print('== 문제 50. 오늘 날짜에서 하루를 더한 날짜가 어떻게 되는가?')
print('====================================================================================================')
print(dt.date.today() + dt.timedelta(days=1))


print('')
print('====================================================================================================')
print('== 문제 51. 아래와 같이 실행될 수 있는 사용자 정의 함수를 생성하시오!')
print('====================================================================================================')
def next_day(toDay, bt):
    return toDay+dt.timedelta(days=bt)

print(next_day(dt.date.today(), 2))


print('')
print('====================================================================================================')
print('== 문제 52. 아래와 같이 실행될 수 있는 사용자 정의 함수를 생성하시오!')
print('====================================================================================================')
def next_day(toDay, bt):
    d = dt.datetime.strptime(toDay, '%Y-%m-%d').date()
    return d + dt.timedelta(days=bt)

print(next_day('2017-04-19', 1))


print('')
print('====================================================================================================')
print('== 문제 53. 아래와 같이 수행하면 지정된 날짜에서 돌아오는 요일의 날짜가 출력되게 하시오!')
print('====================================================================================================')
def next_day(toDay, wod):
    wods = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
    diff = wods.index(wod)-toDay.weekday()
    return toDay+dt.timedelta(days=diff) if diff > 0 else toDay+dt.timedelta(days=7+diff)

print(next_day(dt.datetime.today().date(), '월요일'))


print('')
print('====================================================================================================')
print('== 문제 54. 이름, 입사한 날짜부터 오늘까지 총 몇일 근무했는지 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    hireDate = dt.datetime.strptime(data[4], '%Y-%m-%d').toordinal()
    print(data[1], data[4], dt.date.today().toordinal()-hireDate)


print('')
print('====================================================================================================')
print('== 문제 55. if 문을 사용해서 사원번호가 7788 번인 사원의 사원이름과 월급을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if data[0] == '7788':
        print(data[1], data[5])


print('')
print('====================================================================================================')
print('== 문제 56. 월급이 3000 이상인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if int(data[5]) >= 3000:
        print(data[1], data[5])


print('')
print('====================================================================================================')
print('== 문제 57. 1981년 11월 17일에 입사한 사원의 이름과 입사일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if data[4] == '1981-11-17':
        print(data[1], data[4])


print('')
print('====================================================================================================')
print('== 문제 58. 81년도에 입사한 사원들의 이름과 입사일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if '81' in data[4]:
        print(data[1], data[4])


print('')
print('====================================================================================================')
print('== 문제 59. 아래의 리스트 변수에서 positive 라는 단어는 몇개가 나오는가?')
print('====================================================================================================')
word = ['winter', 'cold', 'positive', 'negative']
sum = 0
for i in word:
    if 'positive' == i:
        sum += 1
print(sum)


print('')
print('====================================================================================================')
print('== 문제 60. 아래의 리스트 변수에서 positive 와 negative 라는 단어가 몇 개가 포함되어 있는지 알아보시오!')
print('====================================================================================================')
sum = 0
for i in word:
    if 'tive' in i:
        sum += 1
print(sum)


print('')
print('====================================================================================================')
print('== 문제 61. 겨울왕국 대본에는 긍정적인 단어가 몇개나 들어있는가?')
print('====================================================================================================')
for data in returnCsvData('positive-words.csv'):
    positive_words = data

for data in returnCsvData('negative-words.csv'):
    negative_words = data

positive_cnt = 0

for data in returnTxtData('winter.txt'):
    for positive_word in positive_words:
        if positive_word in data.lower().strip():
            positive_cnt += 1

print(positive_cnt)


print('')
print('====================================================================================================')
print('== 문제 62. 직업이 SALESMAN 이고 월급이 1200 이상인 사원들의 이름과 직업과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] == 'SALESMAN' and int(empData[5]) > 1200:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 63. 월급이 1000 에서 3000 사이인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if 1000 < int(empData[5]) < 3000:
        print(empData[1], empData[5])


print('')
print('====================================================================================================')
print('== 문제 64. 직업이 CLERK, ANALYST 인 사원들을 출력하시오.')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] in ['CLERK', 'ANALYST']:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 65. 직업이 CLERK, ANALYST 가 아닌 사원들을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] not in ['CLERK', 'ANALYST']:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 66. 커미션이 null 인 사원들의 이름과 커미션을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[6] == '':
        print(empData[1], empData[2], empData[5], empData[6])


print('')
print('====================================================================================================')
print('== 문제 67. 커미션이 null 이 아닌 사원들의 이름과 커미션을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[6] != '':
        print(empData[1], empData[2], empData[5], empData[6])


print('')
print('====================================================================================================')
print('== 문제 68. 이름의 첫번째 철자가 S 로 시작하는 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][0] == 'S':
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 69. 이름의 두번째 철자가 M인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][1] == 'M':
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 70. 이름의 마지막 철자가 H인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][-1] == 'H':
        print(empData[1], empData[2], empData[5])
import csv

print('')
print('====================================================================================================')
print('== 문제 14. (오늘의 마지막 문제) 이름과 월급 + 커미션을 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], emp_list[5], 0 if emp_list[6] is '' else emp_list[6])

# 4.4 함수
#  * 우리의 목표에 맞춰서 다시 정리
#                 오라클                      파이썬
#  1.문자함수      upper                      upper()
#                 lower                      lower()
#                 initcap                    사용자 함수
#                 substr                     변수[1:2]
#                 replace                    replace()
#                 length                     len
#                 rtrim                      rstrip()
#                 ltrim                      lstrip()
#                 trim                       strip()
#                 rpad                       사용자 함수
#                 lpad                       사용자 함수
#                 instr                      사용자 함수

#  2. 숫자함수     round                      round()
#                 trunc                      trunc()
#                 mod                        %
#                 power                      power()

#  3. 날짜함수     months_between             사용자 함수
#                 add_months                 relativedelta(datautil 패키지 안에 함수)
#                 next_day                   사용자 함수
#                 last_day                   monthrange

#  4. 변환함수     to_char                    str()
#                 to_number                  int(), float()
#                 to_date                    datetime, strptime()

#  5. 일반함수     nvl                        사용자 함수
#                 decode                     사용자 함수
#                 case                       if 문

#  6. 기타함수     문자함수                    format()
#                                            isalpha()
#                                            isnumeric()
#                                            isspace()
#                 변환함수                    list()
#                                            tuple()
#                 기타                        split()
#                                            append()
#                                            range()

# ■ 연산자              오라클                파이썬
# 1. 산술 연산자         +                    +
#                       -                    -
#                       *                    *
#                       /                    /
#                       mod                  %

# 2. 비교 연산자         =                    ==
#                       !=                   !=
#                       >                    >
#                       >=                   >=
#                       <                    <
#                       <=                   <=

# 3. 논리 연산자         and                  &
#                       or                   |
#                       not                  !

# 4. 기타 비교 연산자     between              <= & >=
#                       in, not in           in, not in
#                       is null              =='', is None
#                       like                 ^, $


print('')
print('====================================================================================================')
print('== 문제 15. 이름과 직업을 출력하는데 소문자로 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1].lower(), emp_list[2].lower())


print('')
print('====================================================================================================')
print('== 문제 16. (Mit TTT 코드 이해를 위해 중요한 기초 문제) 이름을 출력하는데 이름의 첫 번째 철자만 출력하고 소문자로 출력하시오.')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][0].lower())


print('')
print('====================================================================================================')
print('== 문제 17. 이름을 출력하는데 이름의 두번째 철자부터 마지막까지 소문자로 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][1:].lower())


print('')
print('====================================================================================================')
print('== 문제 18. initcap 함수 생성')
print('====================================================================================================')
def initcap_func(val):
    return val[0].upper()+val[1:]

print(initcap_func('apple'))


print('')
print('====================================================================================================')
print('== 문제 19. 이름의 첫번째 철자부터 세번째 철자까지 출력되게 하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1][0:3])


def substr(data, sindex, eindex, variation):
    return data[sindex:eindex:variation]

print('')
print('====================================================================================================')
print('== 문제 20. 이름의 첫번째 철자부터 세번째 철자가 출력되게하는데 substr 함수를 만들어서 출력되게 하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(substr(emp_list[1], 0, 3, 1))


print('')
print('====================================================================================================')
print('== 문제 21. 이름과 월급을 출력하는데 월급을 출력할때에 0 대신에 * 를 출력하시오!')
print('====================================================================================================')
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], emp_list[5].replace('0', '*'))


print('')
print('====================================================================================================')
print('== 문제 22. 이름과 월급을 출력하는데 월급을 출력할때에 0~2를 *로 출력하시오!')
print('====================================================================================================')
import re
file = open('D:\\KYH\\02.PYTHON\\data\\emp_comm.csv', 'r')
emp_csv = csv.reader(file)

for emp_list in emp_csv:
    print(emp_list[1], re.sub('[0-2]', '*', emp_list[5]))


print('')
print('====================================================================================================')
print('== 문제 23. 이름과 이름의 길이를 출력하시오!')
print('====================================================================================================')
def returnCsvData(filename):
    file = open('D:\\KYH\\02.PYTHON\\data\\'+filename, 'r', encoding='utf-8')
    return csv.reader(file)

for emp_list in returnCsvData('emp_comm.csv'):
    print(emp_list[1], len(emp_list[1]))


print('')
print('====================================================================================================')
print('== 문제 24. 아래의 split 함수의 예제를 수행해보시오!')
print('====================================================================================================')
file = 'a b c d e f g'
print(file.split(' '))


print('')
print('====================================================================================================')
print('== 문제 25. 아래의 file 변수의 요소들을 리스트 변수로 담아내서 두번째 요소인 b만 출력해보시오!')
print('====================================================================================================')
print(file.split(' ')[1])


print('')
print('====================================================================================================')
print('== 문제 26. 겨울왕국 대본을 공백을 구분으로 두고 나눠서 리스트 변수로 저장되게 하시오.')
print('====================================================================================================')
def returnTxtData(filename):
    file = open('D:\\KYH\\02.PYTHON\\data\\'+filename, 'r')
    return file

for winter_list in returnTxtData('winter.txt'):
    print(winter_list.split(' '))


print('')
print('====================================================================================================')
print('== 문제 27. (점심시간 문제) 위의 스크립트를 이용해서 겨울왕국 각 리스트 변수안에 단어가 몇개가 있는지 아래와 같이 출력되게 하시오!')
print('====================================================================================================')
for winter_list in returnTxtData('winter.txt'):
    print(winter_list.split(' '), len(winter_list.split(' ')))


print('')
print('====================================================================================================')
print('== 문제 28. 위의 숫자들을 다 더한값을 출력하시오!')
print('====================================================================================================')
sum = 0
for winter_list in returnTxtData('winter.txt'):
    sum += len(winter_list.split(' '))
print(sum)


print('')
print('====================================================================================================')
print('== 문제 29. 겨울왕국 대본에는 Elsa 가 몇 번 나오는지 카운트 하시오!')
print('====================================================================================================')
cnt = 0
for winter_list in returnTxtData('winter.txt'):
    cnt += winter_list.split(' ').count('Elsa')
print(cnt)


print('')
print('====================================================================================================')
print('== 문제 30. emp2.csv 에서 14개의 리스트 변수중에 5번째 요소(월급) 부분만 담아서 리스트 변수로 아래와 같이 생성하시오!')
print('====================================================================================================')
sal_list = []
for data in returnCsvData('emp2.csv'):
    sal_list.append(data[5])
print(sal_list)


print('')
print('====================================================================================================')
print('== 문제 31. 겨울왕국 대본을 단어별로 출력하시오!')
print('====================================================================================================')
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        print(word)


print('')
print('====================================================================================================')
print('== 문제 32. 위의 출력된 단어들을 하나의 list 변수에 담으시오!')
print('====================================================================================================')
word_list = []
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        word_list.append(word)
print(word_list)


print('')
print('====================================================================================================')
print('== 문제 33. 출력된 단어들 중에 \n 은 잘라내시오!')
print('====================================================================================================')
word_list = []
for data in returnTxtData('winter.txt'):
    for word in data.split(' '):
        word_list.append(word.strip('\n'))
print(word_list)


print('')
print('====================================================================================================')
print('== 문제 34. rpad 함수를 생성하고 아래와 같이 실행되게하시오!')
print('            (월급을 출력할때 전체 10자리를 잡고 남은 왼쪽에 * 을 채워넣으시오.')
print('====================================================================================================')
def rpad(indata, pos):
    return ('*'*(pos-len(indata)))+indata

def lpad(indata, pos):
    return indata+('*'*(pos-len(indata)))

for data in returnCsvData('emp2.csv'):
    print(data[1], rpad(data[5], 10), lpad(data[5], 10))
    print(data[1], data[5].rjust(10, '*'), data[5].ljust(10, '*'))


print('')
print('====================================================================================================')
print('== 문제 35. instr 함수를 파이썬으로 구현하시오')
print('====================================================================================================')
def instr(data, search):
    for i in range(0, len(data)):
        if data[i] == search:
            return i
    return -1

print(instr('Apple', 'l'))


print('')
print('====================================================================================================')
print('== 문제36. 이름, 이름에 M 자가 몇 번째 자리에 있는지 출력하시오')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], instr(data[1], 'M'))


print('')
print('====================================================================================================')
print('== 문제37. 이름, 월급, 보너스를 출력하는데 보너스는 월급의 15%로 출력하시오')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], int(data[5])*0.15)


print('')
print('====================================================================================================')
print('== 문제 38. 위의 결과를 다시 출력하는데 컬럼명도 출력되게 하시오')
print('====================================================================================================')
print('ENAME', 'SAL', 'COMM')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], int(data[5])*0.15)


print('')
print('====================================================================================================')
print('== 문제39. 보너스의 소숫점을 반올림하시오')
print('====================================================================================================')
import math
print('ENAME', 'SAL', 'COMM')
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], round(int(data[5])*0.15))


print('')
print('====================================================================================================')
print('== 문제 40. 보너스를 출력할때 소수점 이하를 trunc 를 써서 잘라내시오!')
print('====================================================================================================')
import math
for data in returnCsvData('emp2.csv'):
    print(data[1], data[5], math.trunc(int(data[5])*0.15))


print('')
print('====================================================================================================')
print('== 문제 41. input 명령어를 이용해서 숫자를 입력받아서 해당 숫자가 짝수인지 홀수인지 출력되게 하시오!')
print('====================================================================================================')
a = input('숫자를 입력하세요 : ')

print('짝수' if (int(a) % 2) == 0 else '홀수')


print('')
print('====================================================================================================')
print('== 문제 42. power 함수를 이용해서 아래의 프로그램을 구현하시오')
print('====================================================================================================')
num = float(input('숫자를 입력하세요 : '))
jisu = float(input('지수를 입력하세요 : '))
print(math.pow(num, jisu))

print('')
print('====================================================================================================')
print('== 문제 43. 오늘 날짜를 출력하세요.')
print('====================================================================================================')
import datetime as dt
today = dt.datetime.today()
print(today)


print('')
print('====================================================================================================')
print('== 문제 44. 오늘부터 3달뒤의 날짜를 출력하시오!')
print('====================================================================================================')
from datetime import date
from dateutil.relativedelta import relativedelta

result = date.today() + relativedelta(months=3)
print(result)


print('')
print('====================================================================================================')
print('== 문제 45. 이름, 입사일, 입사한 날짜에서 3달후의 날짜를 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    dateTime = dt.datetime.strptime(data[4], '%Y-%m-%d').date()  # string --> date 타입으로 변환
    print(data[1], dateTime, dateTime+relativedelta(months=3))


print('')
print('====================================================================================================')
print('== 문제 46. 올해 2월달의 마지막 날짜를 출력하시오!')
print('====================================================================================================')
from calendar import monthrange
print(monthrange(2017, 2))  # tuple 타입으로 리턴


print('')
print('====================================================================================================')
print('== 문제 47. 오늘부터 요번달 말일까지 총 몇일 남았는지 출력하시오!')
print('====================================================================================================')
toYear = dt.datetime.today().year
toMonth = dt.datetime.today().month
toDay = dt.datetime.today().day
print(monthrange(toYear, toMonth)[1]-toDay)


print('')
print('====================================================================================================')
print('== 문제 48. 오늘이 무슨 요일인지 출력하시오!')
print('====================================================================================================')
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print(days[dt.date.today().weekday()])


print('')
print('====================================================================================================')
print('== 문제 49. 이름, 입사한 요일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    print(data[1], days[dt.datetime.strptime(data[4], '%Y-%m-%d').date().weekday()])


print('')
print('====================================================================================================')
print('== 문제 50. 오늘 날짜에서 하루를 더한 날짜가 어떻게 되는가?')
print('====================================================================================================')
print(dt.date.today() + dt.timedelta(days=1))


print('')
print('====================================================================================================')
print('== 문제 51. 아래와 같이 실행될 수 있는 사용자 정의 함수를 생성하시오!')
print('====================================================================================================')
def next_day(toDay, bt):
    return toDay+dt.timedelta(days=bt)

print(next_day(dt.date.today(), 2))


print('')
print('====================================================================================================')
print('== 문제 52. 아래와 같이 실행될 수 있는 사용자 정의 함수를 생성하시오!')
print('====================================================================================================')
def next_day(toDay, bt):
    d = dt.datetime.strptime(toDay, '%Y-%m-%d').date()
    return d + dt.timedelta(days=bt)

print(next_day('2017-04-19', 1))


print('')
print('====================================================================================================')
print('== 문제 53. 아래와 같이 수행하면 지정된 날짜에서 돌아오는 요일의 날짜가 출력되게 하시오!')
print('====================================================================================================')
def next_day(toDay, wod):
    wods = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
    diff = wods.index(wod)-toDay.weekday()
    return toDay+dt.timedelta(days=diff) if diff > 0 else toDay+dt.timedelta(days=7+diff)

print(next_day(dt.datetime.today().date(), '월요일'))


print('')
print('====================================================================================================')
print('== 문제 54. 이름, 입사한 날짜부터 오늘까지 총 몇일 근무했는지 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    hireDate = dt.datetime.strptime(data[4], '%Y-%m-%d').toordinal()
    print(data[1], data[4], dt.date.today().toordinal()-hireDate)


print('')
print('====================================================================================================')
print('== 문제 55. if 문을 사용해서 사원번호가 7788 번인 사원의 사원이름과 월급을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if data[0] == '7788':
        print(data[1], data[5])


print('')
print('====================================================================================================')
print('== 문제 56. 월급이 3000 이상인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if int(data[5]) >= 3000:
        print(data[1], data[5])


print('')
print('====================================================================================================')
print('== 문제 57. 1981년 11월 17일에 입사한 사원의 이름과 입사일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if data[4] == '1981-11-17':
        print(data[1], data[4])


print('')
print('====================================================================================================')
print('== 문제 58. 81년도에 입사한 사원들의 이름과 입사일을 출력하시오!')
print('====================================================================================================')
for data in returnCsvData('emp2.csv'):
    if '81' in data[4]:
        print(data[1], data[4])


print('')
print('====================================================================================================')
print('== 문제 59. 아래의 리스트 변수에서 positive 라는 단어는 몇개가 나오는가?')
print('====================================================================================================')
word = ['winter', 'cold', 'positive', 'negative']
sum = 0
for i in word:
    if 'positive' == i:
        sum += 1
print(sum)


print('')
print('====================================================================================================')
print('== 문제 60. 아래의 리스트 변수에서 positive 와 negative 라는 단어가 몇 개가 포함되어 있는지 알아보시오!')
print('====================================================================================================')
sum = 0
for i in word:
    if 'tive' in i:
        sum += 1
print(sum)


print('')
print('====================================================================================================')
print('== 문제 61. 겨울왕국 대본에는 긍정적인 단어가 몇개나 들어있는가?')
print('====================================================================================================')
for data in returnCsvData('positive-words.csv'):
    positive_words = data

for data in returnCsvData('negative-words.csv'):
    negative_words = data

positive_cnt = 0

for data in returnTxtData('winter.txt'):
    for positive_word in positive_words:
        if positive_word in data.lower().strip():
            positive_cnt += 1

print(positive_cnt)


print('')
print('====================================================================================================')
print('== 문제 62. 직업이 SALESMAN 이고 월급이 1200 이상인 사원들의 이름과 직업과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] == 'SALESMAN' and int(empData[5]) > 1200:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 63. 월급이 1000 에서 3000 사이인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if 1000 < int(empData[5]) < 3000:
        print(empData[1], empData[5])


print('')
print('====================================================================================================')
print('== 문제 64. 직업이 CLERK, ANALYST 인 사원들을 출력하시오.')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] in ['CLERK', 'ANALYST']:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 65. 직업이 CLERK, ANALYST 가 아닌 사원들을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp2.csv'):
    if empData[2] not in ['CLERK', 'ANALYST']:
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 66. 커미션이 null 인 사원들의 이름과 커미션을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[6] == '':
        print(empData[1], empData[2], empData[5], empData[6])


print('')
print('====================================================================================================')
print('== 문제 67. 커미션이 null 이 아닌 사원들의 이름과 커미션을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[6] != '':
        print(empData[1], empData[2], empData[5], empData[6])


print('')
print('====================================================================================================')
print('== 문제 68. 이름의 첫번째 철자가 S 로 시작하는 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][0] == 'S':
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 69. 이름의 두번째 철자가 M인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][1] == 'M':
        print(empData[1], empData[2], empData[5])


print('')
print('====================================================================================================')
print('== 문제 70. 이름의 마지막 철자가 H인 사원들의 이름과 월급을 출력하시오!')
print('====================================================================================================')
for empData in returnCsvData('emp_comm.csv'):
    if empData[1][-1] == 'H':
        print(empData[1], empData[2], empData[5])
# 4.4 함수 #  * 우리의 목표에 맞춰서 다시 정리 #                 오라클                      파이썬 #  1.문자함수      upper                      upper() #                 lower                      lower() #                 initcap                    사용자 함수 #                 substr                     변수[1:2] #                 replace                    replace() #                 length                     len #                 rtrim                      rstrip() #                 ltrim                      lstrip() #                 trim                       strip() #                 rpad                       사용자 함수 #                 lpad                       사용자 함수 #                 instr                      사용자 함수 #  2. 숫자함수     round                      round() #                 trunc                      trunc() #                 mod                        % #                 power                      power() #  3. 날짜함수     months_between             사용자 함수 #                 add_months                 relativedelta(datautil 패키지 안에 함수) #                 next_day                   사용자 함수 #                 last_day                   monthrange #  4. 변환함수     to_char                    str() #                 to_number                  int(), float() #                 to_date                    datetime, strptime() #  5. 일반함수     nvl                        사용자 함수 #                 decode                     사용자 함수 #                 case                       if 문 #  6. 기타함수     문자함수                    format() #                                            isalpha() #                                            isnumeric() #                                            isspace() #                 변환함수                    list() #                                            tuple() #                 기타                        split() #                                            append() #                                            range() # ■ 연산자              오라클                파이썬 # 1. 산술 연산자         +                    + #                       -                    - #                       *                    * #                       /                    / #                       mod                  % # 2. 비교 연산자         =                    == #                       !=                   != #                       >                    > #                       >=                   >= #                       <                    < #                       <=                   <= # 3. 논리 연산자         and                  & #                       or                   | #                       not                  ! # 4. 기타 비교 연산자     between              <= & >= #                       in, not in           in, not in #                       is null              =='', is None #                       like                 ^, $ # string --> date 타입으로 변환 # tuple 타입으로 리턴