import time
def writeDiary(u, f, d):
lt = time.localtime()
timeStr = time.strftime('%Y-%m-%d %I:%M:%S %p', lt)
filePath = u + f
with open(filePath, 'a') as f:
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 = {} #id, pw 관리해야해서
uri ='C:/Users/User/Desktop/python_ex/pythonTxt/'
def printMembers():
for m in members.keys():
print(f'id: {m}, 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
elif selectNum == 2:
mId = input('input id: ')
mPw = input('input pw: ')
if mId in members and members[mId] == mPw:
print('login success')
filename = 'myDiary_' + mId + '.txt'
data = input('오늘 하루 인상깊은 일을 기록하세요. ')
diary.writeDiary(uri, filename, data)
else:
print('login fail')
printMembers()
elif selectNum == 3:
mId = input('input id: ')
mPw = input('input pw: ')
if mId in members and members[mId] == mPw:
print('login success')
filename = 'myDiary_' + mId + '.txt'
datas = diary.readDiary(uri, filename)
for d in datas:
print(d, end='')
else:
print('login fail')
printMembers()
elif selectNum == 4:
print('bye')
break
import time
def getTime():
lt = time.localtime()
st = time.strftime('%Y-%m-%d %H:%M:%S')
return st
while True:
selectNumber = int(input('1.입금, \t2.출금, \t3.종료'))
if selectNumber == 1:
money = int(input('입금액 입력: '))
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/money.txt', 'r') as f:
m = f.read() #잔고
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/money.txt', 'w') as f:
f.write(str(int(m) + money)) #잔고 덮어씌워야
memo = input('입금 내역 입력: ')
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/pocketMoneyRegister.txt', 'a') as f:
f.write('---------------------------------\n')
f.write(f'{getTime()} \n')
f.write(f'[입금] {memo}: {str(money)}원 \n')
f.write(f'[잔액] : {str(int(m) + money)}원 \n')
print('입금완료')
print(f'기존 잔액: {m}')
print(f'입금 후 잔액: {int(m) + money}')
elif selectNumber == 2:
money = int(input('출금액 입력: '))
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/money.txt', 'r') as f:
m = f.read() #잔고
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/money.txt', 'w') as f:
f.write(str(int(m) - money)) #잔고 덮어씌워야
memo = input('출금 내역 입력: ')
with open('C:/Users/User/Desktop/python_ex/pythonTxt/bank/pocketMoneyRegister.txt', 'a') as f:
f.write('---------------------------------\n')
f.write(f'{getTime()} \n')
f.write(f'[출금] {memo}: {str(money)}원 \n')
f.write(f'[잔액] : {str(int(m) - money)}원 \n')
print('출금완료')
print(f'기존 잔액: {m}')
print(f'출금 후 잔액: {int(m) - money}')
elif selectNumber == 3:
print('bye')
break
else:
print('다시 입력하세요')
-->
- money
290000
- pocketMoneyRegister
---------------------------------
2023-10-27 21:17:24
[입금] 월급: 300000원
[잔액] : 300000원
---------------------------------
2023-10-27 21:17:29
[출금] 냠: 10000원
[잔액] : 290000원
money.txt 에 0을 넣어놔야한다는 걸 몰라서 오랜시간 헤맸다
#약수
inputNumber = int(input('0보다 큰 정수 입력: '))
divisior = []
for number in range(1, (inputNumber + 1)):
if inputNumber % number == 0:
divisior.append(number)
if len(divisior) > 0:
try:
with open('C:/Users/User/Desktop/python_ex/pythonTxt/divisior.txt', 'a') as f:
f.write(f'{inputNumber}의 약수: ')
f.write(f'{divisior} \n')
except Exception as e:
print(e)
else:
print('divisior write complete')
-->
25의 약수: [1, 5, 25]
#소수
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:/Users/User/Desktop/python_ex/pythonTxt/prime.txt', 'a') as f:
f.write(f'{inputNumber}까지의 소수: ')
f.write(f'{prime} \n')
except Exception as e:
print(e)
else:
print('prime write complete')
-->
25까지의 소수: [2, 3, 5, 7, 11, 13, 17, 19, 23]
# 두개의 수의 공약수
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:/Users/User/Desktop/python_ex/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')
-->
10과 15의 공약수: [1, 5]
50과 60의 공약수: [1, 2, 5, 10]
112과 200의 공약수: [1, 2, 4, 8]
#수 두개의 최대공약수
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
maxComNum = 0
for i in range(1, (num1 + 1)):
if num1 % i == 0 and num2 % i == 0:
maxComNum = i
try:
with open('C:/Users/User/Desktop/python_ex/pythonTxt/maxComNum.txt', 'a') as f:
f.write(f'{num1}과 {num2}의 최대공약수: {maxComNum}\n')
except Exception as e:
print(e)
else:
print('max common factor write complete')
-->
10과 15의 최대공약수: 5
50과 60의 최대공약수: 10
112과 200의 최대공약수: 8
+숫자 세개의 공약수, 최대공약수도 해보기!
ship1 = 3
ship2 = 4
ship3 = 5
maxDay = 0
#3개의 최대공배수 구하면 되는데, 두개꺼 먼저 구한 값과 그 다음 숫자랑 같이 계산하면 됨
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 #3개 수의 최대공약수
minDay = (newDay * ship3) // maxDay #3개 수의 최소공배수 = 60일마다 배가 들어옴
print(f'minDay: {minDay}')
print(f'maxDay: {maxDay}')
from datetime import datetime
from datetime import timedelta # = 기존 숫자에 숫자가 더해진 만큼의 해당날짜 구해줌
n = 1
baseTime = datetime(2021, 1, 1, 10, 0, 0) #기준시간이 년월일 시분초
with open('C:/Users/User/Desktop/python_ex/pythonTxt/arrive.txt', 'a') as f:
f.write(f'2021년 모든 선박 입항일\n')
f.write(f'{baseTime} \n')
#1월 1일부터 60일이 지난 날짜
nexttime = baseTime + timedelta(days=minDay)
while True:
with open('C:/Users/User/Desktop/python_ex/pythonTxt/arrive.txt', 'a') as f:
f.write(f'{nexttime}\n')
nexttime += timedelta(days=minDay)
if nexttime.year > 2021:
break