PCDuckHu's Story

# 운항 시간 계산하기



def flight(s, e):

s_hour = int(s) // 100

s_min = int(s) % 100

e_hour = int(e) // 100

e_min = int(e) % 100

if s_hour > e_hour or s_hour == e_hour and s_min >= e_min:

e_hour = e_hour + 24

if s_min > e_min:

e_hour = e_hour - 1

e_min = e_min + 60

hour = e_hour - s_hour

min = e_min - s_min

# time = "{:02}{:02}".format(hour, min)

# time = hour * 100 + min

return [hour, min]


start = input("출발 시각 : ")

end = input("도착 시각 : ")

time = flight(start, end) # time = [hour, min]

hour = time[0]

min = time[1]


if hour > 0 and min > 0:

print("운항 시간 : {}시간 {}분".format(hour, min))

elif min == 0:

print("운항 시간 : {}시간".format(hour))

elif hour == 0:

print("운항 시간 : {}분".format(min))




# 항공편 예약시스템


import csv


def start():

file = open("database.csv", "r")

csvfile = csv.reader(file)

database = []

for item in csvfile:

database.append(item)

file.close()

return database


def end(database):

file = open("database.csv", "w", newline = "")

csvfile = csv.writer(file)

for data in database:

csvfile.writerow(data)

file.close()


database = start()


def reserve(p, f):

if [p, f] not in database:

database.append([p, f])

else:

print("동일한 예약이 발견되었습니다.")


def cancel(p, f):

if [p, f] in database:

database.remove([p, f])

else:

print("동일한 예약이 발견되지 않았습니다.")


def flight(f):

print("-----------------")

print(" Flight : {}".format(f))

print("-----------------")

for data in database:

if f == data[1]:

print('', data[0])


def passenger(p):

print("-----------------")

print(" Passenger : {}".format(p))

print("-----------------")

for data in database:

if p == data[0]:

print('', data[1])


def all():

print("-----------------")

print(" Passenger Flight")

print("-----------------")

for data in database:

print(" {:<9} {:<6}".format(data[0], data[1]))


code = ''


while code != 'q':

cmd = input("command : ").split()

code = cmd[0] # 'r', 'f', 'p', 'q'

if code == 'r': # ['r', 'kim', '101']

p = cmd[1]

f = cmd[2]

reserve(p, f)

elif code == 'c': # ['c', 'kim', '101']

p = cmd[1]

f = cmd[2]

cancel(p, f)

elif code == 'f': # ['f', '101']

f = cmd[1]

flight(f)

elif code == 'p': # ['p', 'kim']

p = cmd[1]

passenger(p)

elif code == 'a': # ['a']

all()


end(database)




# 폭탄 돌리기



def finddrop(players, start, step):

drop = (start + step) % len(players)

return drop


# players = input("플레이어들을 빙둘선 순서로 입력하세요: ").split()


players = ["B", "K", "M", "A", "C", "D", "P"]

print("플레이어들의 목록: {}".format(players))

start = int(input("시작 위치를 0 이상의 숫자로 입력하세요: "))

step = int(input("간격을 몇 사람으로 할까요? "))

print("")


while len(players) > 1:

drop = finddrop(players, start, step)

start = drop - 1

print("{}가 게임에서 제외되었습니다.".format(players[drop]))

del players[drop]


print("\n최종 생존자 : {}".format(players[0]))




# MySQL Server 연동하기



import pymysql


def savefile(filename, result):

import csv

file = open(filename, "w", newline = "")

csvfile = csv.writer(file)

for item in result:

csvfile.writerow(item)

file.close()


connect = pymysql.connect(host = '192.168.101.200',

  port = 3306,

  user = 'user0',

  password = '0abc',

  db = 'shopping_db')

cursor = connect.cursor()


while True: # 반복문 

sql = input("sql> ")         # sql = 'quit'가 되기전까지 계속 질의하는 코드작성

# write

if sql == '':

pass # 2018.09.02_09:02

elif sql == 'write':

from datetime import datetime

now = datetime.now()

f_filename = "{:4}.{:02}.{:02}_{:02}{:02}".format(now.year, now.month, now.day, now.hour, now.minute)

filename = input("어떤 이름으로 저장할까요[{}]? ".format(f_filename)).strip(" ")

if filename == "":

f_filename = f_filename + ".csv"

savefile(f_filename, result)

else:

filename = filename + ".csv"

savefile(filename, result)

elif sql != 'quit':

try:

cursor.execute(sql)

result = cursor.fetchall()

for item in result:

print(item)

except:

print("잘못된 SQL문장입니다.")

else:

break







# 주민등록번호 (클래스) 생성 : ssn



# 1. 제약조건 : 문자열형이여야한다.

# 2. 자료길이 : 14

# 3. 인덱스 0 ~  5 : 문자들('0 ~ 9')

#    인덱스 6      : 문자('-')

# 인덱스 7 ~ 13 : 문자들('0 ~ 9')

# 4. 인덱스 0 ~  1 : '00 ~ 99'

#    인덱스 2 ~  3 : '01 ~ 12'

#    인덱스 4 ~  5 : '01 ~ 31'

#    인덱스 7      : '1 ~ 8'


class ssn:

def __init__(self, data):

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

if type(data) != type(str()):

print("문자열형 데이터가 아닙니다.")

return None

if len(data) != 14:

print("14자리 주민등록번호가 아닙니다.")

return None

for i in range(0, 14):

if i != 6:

if data[i] not in numbers:

print("숫자가 아닌 문자를 포함하고 있습니다.")

return None

else:

if data[6] != '-':

print("7번째가 문자가 '-'가 아닙니다.")

return None

if int(data[2:4]) not in range(1, 13):

print("1월 ~ 12월 사이가 아닙니다.")

return None

if int(data[4:6]) not in range(1, 32):

print("1일 ~ 31일 사이가 아닙니다.")

return None

if int(data[7]) not in range(1, 9):

print("주민등록번호 8번째 자리는 1 ~ 8 만 가능합니다.")

return None

self.data = data

def gender(self):

if int(self.data[7]) in [1, 3, 5, 7]:

return 'Male'

else:

return 'Female'

def birthday(self): # 801205-1155666

from datetime import date # 081205-4422777

if int(self.data[7]) in [1, 2, 5, 6]:

year = int("19" + self.data[0:2]) # 1980

# year = 1900 + int(self.data[0:2]) # 1980

else:

year = int("20" + self.data[0:2]) # 2008

month = int(self.data[2:4])

day = int(self.data[4:6])

return date(year, month, day)

def age(self):

from datetime import date

birthday = int(self.birthday().strftime("%Y%m%d"))

today = int(date.today().strftime("%Y%m%d"))

age = (today - birthday) // 10000

return age

















'[개발노트] > # Python' 카테고리의 다른 글

ubuntu & Wordporess (2015.ver)  (0) 2018.10.18
(크롤링) 코드 예문  (0) 2018.09.11
(기초1) 구문 예시  (0) 2018.09.11
(기초1) 기호, 함수  (0) 2018.09.10
(설치&참고유틸)  (0) 2018.09.09