0419 파이썬 중급 9일차(~69)

박영선·2023년 4월 19일
0

텍스트파일 연습문제1

import time
def wirteDiary(u,f, d):     #u는 경로 f는 파일
    lt = time.localtime()
    timeStr = time.strftime('%Y-%m-%d %I:%M:%S %p',lt)

    filePath = u + f         #어떤 경로에 어떤 파일
    with open(filePath, 'a') as f:    #a는 이어서 쓰기
        f.write(f'[{timeStr}] {d}\n')

def readDiary(u,f):
    filePath = u + f
    datas= []
    with open(filePath, 'r') as f:
        datas = f.readlines()    #여러줄 다 읽기

    return datas
    
 실행
 import diary

members = {}  #딕셔너리로 선언 (키, 밸류 관리해야해서)
uri = 'C:/pythonTxt/'

def printMembers():
    for m in members.keys():
        print(f'ID : {m} \t PW:{members[m]}')

while True:
    selectNum = int(input('1.회원가입 2.한줄일기쓰기 3.일기보기 4.종료'))

    if selectNum ==1:
        mId = input('input ID:')
        mPw = input('input PW:')
        members[mId] = mPw
        printMembers()

    elif selectNum ==2:
        mId = input('input ID:')
        mPw = input('input PW:')

        if mId in members and members[mId] == mPw:
            print('log in success')
            fileName = 'myDiary_'+mId + 'txt'
            data = input('오늘 하루 인상깊은 일을 써주세요.')
            diary.wirteDiary(uri, fileName, data)

        else:
            print('log in fail')
            printMembers()

    elif selectNum == 3:
        mId = input('input ID:')
        mPw = input('input PW:')
        if mId in members and members[mId] == mPw:
            print('log in success')
            fileName = 'myDiary_' + mId + 'txt'
            datas = diary.readDiary(uri, fileName)
            for d in datas:
                print(d, end='')
        else:
            print('log in fail')
            printMembers()

    elif selectNum==4:
        print('Bye')
        break

텍스트파일 연습문제2

import time

def getTime():
    lt = time.localtime()
    st = time.strftime('%Y-%m-%d %H:%M:%S')
    return st

while True:

    selectNumber = int(input('1.입금 2.출금 3.종료'))

    if selectNumber == 1:
        money = int(input('입금액 입력 : '))
        with open('C:/pythonTxt/bank/money.txt','r') as f:   #읽기모드r 이기 때문에 텍스트파일 먼저 생성한다.
            m= f.read()  #잔고 읽기

        with open('C:/pythonTxt/bank/money.txt','w') as f:   #잔고는 계속 써지는게 아니고 덮어씌워지니까 a말고 w사용
            f.write(str(int() + money))        #잔고에 입금액 더하기

        memo = input('입금 내역 입력: ')
        with open('C:/pythonTxt/bank/poketMoneyRegister.txt','a') as f: #내역은 계속 이어쓰기
            f.write('------------------------------')
            f.write(f'{getTime()} \n')
            f.write(f'[입금] {memo} : {str(money)}원 \n')
            f.write(f'[잔액] : {str(int(m)+money)}원 \n')

        print('입금완료!')
        print(f'기존 잔액 : {m} / 입금 후 잔액 : {int(m)+money}')

    elif selectNumber ==2:
        money = int(input('출금액 입력 : '))
        with open('C:/pythonTxt/bank/money.txt', 'r') as f:
            m = f.read()  # 잔고 읽기

        with open('C:/pythonTxt/bank/money.txt', 'w') as f:
            f.write(str(int() - money))  # 잔고에 출금액 빼기

        memo = input('출금 내역 입력: ')
        with open('C:/pythonTxt/bank/poketMoneyRegister.txt', 'a') as f:  # 내역은 계속 이어쓰기
            f.write('------------------------------')
            f.write(f'{getTime()} \n')
            f.write(f'[출금] {memo} : {str(money)}원 \n')
            f.write(f'[잔액] : {str(int(m) - money)}원 \n')

        print('출금완료!')
        print(f'기존 잔액 : {m} / 출금 후 잔액 : {int(m) - money}')

    elif selectNumber ==3:
        print('Bye')
        break
    else:
        print('다시 입력하세요.')

텍스트파일 연습문제3

#약수
inputNumber = int(input('0보다 큰 정수 입력 : '))
divisor = []   #리스트 변수 생성
for number in range(1, (inputNumber+1)):
    if inputNumber % number == 0:
        divisor.append(number)   #약수 리스트업

if len(divisor) >0:   #약수 리스트가 0보다 크다면 약수가 뭐라도 하나 이상 있는것
    try:
        with open('C:/pythonTxt/divisor.txt', 'w') as f:
            f.write(f'{inputNumber}의 약수:')
            f.write(f'{divisor}\n')
    except Exception as e:
        print(e)
    else:
        print('divisor write complete')


#소수
inputNumber = int(input('0보다 큰 정수 입력 : '))
prime = []
for number in range(2, (inputNumber+1)):
    flag = True
    for n in range(2, number):
        if number % n ==0:
            flag = False
            break

    if flag:
        prime.append(number)

if len(prime) > 0 :
    try:
        with open('C:/pythonTxt/prime.txt', 'w') as f:
            f.write(f'{inputNumber}까지의 소수:')
            f.write(f'{prime}\n')
    except Exception as e:
        print(e)
    else:
        print('prime write complete')

#읽어오기
try:
    with open('C:/pythonTxt/divisor.txt', 'r') as f:
        content = f.read()
except Exception as e:
    print(e)
else:
    print(content)

try:
    with open('C:/pythonTxt/prime.txt', 'r') as f:
        content = f.read()
except Exception as e:
    print(e)
else:
    print(content)

텍스트파일 연습문제4

#수 두개 공약수

num1 = int(input('1보다 큰 정수 입력:'))
num2 = int(input('1보다 큰 정수 입력:'))

common = []   #공약수 리스트
for i in range(1, (num1+1)):
    if num1 % i == 0 and num2 % i ==0:
        common.append(i)

if len(common) >0 :
    try:
        with open('C:/pythonTxt/common.txt','a')as f:
            f.write(f'{num1}과 {num2}의 공약수: ')
            f.write(f'{common}\n')
    except Exception as e:
        print(e)
    else:
        print('common factor write complete')

#수 두개의 최대공약수

num3 = int(input('1보다 큰 정수 입력: '))
num4 = int(input('1보다 큰 정수 입력: '))
maxComNum = 0
for i in range(1, (num3+1)):
    if num3 % i == 0 and num4 % i == 0:
        maxComNum = i

try:
    with open('C:/pythonTxt/common.txt','a')as f:
        f.write(f'{num3}과 {num4}의 공약수: ')
        f.write(f'{common}\n')
except Exception as e:
    print(e)
else:
    print('common factor write complete')

텍스트파일 연습문제5

#주기계산

ship1= 3
ship2= 4
ship3= 5
maxDay = 0

for i in range(1, (ship1+1)):
    if ship1 % i == 0 and ship2 % i == 0 :
        maxDay = i

minDay = (ship1 * ship2)//maxDay

newDay = minDay
for i in range(1,(newDay +1)):
    if newDay % i == 0 and ship3 % i == 0 :
        maxDay = i

minDay = (newDay * ship3) // maxDay

print(f'minDay : {minDay}')
print(f'maxDay : {maxDay}')

from datetime import datetime
from datetime import timedelta

n = 1
baseTime = datetime(2023,1,3,10,0,0)                  #기준일

with open('C:/pythonTxt/arrive.txt', 'a') as f:
    f.write(f'2021년 모든 선박 입항일 \n')
    f.write(f'{baseTime}\n')

nextTime = baseTime + timedelta(days=minDay)
while True:
    with open('C:/pythonTxt/arrive.txt', 'a') as f:
        f.write(f'{nextTime}\n')

    nextTime = nextTime + timedelta(days=minDay)
    if nextTime.year > 2023:
        break
profile
데이터분석 공부 시작했습니다

0개의 댓글