Python_Text file

jaam._.mini·2023년 11월 12일
0

📒Python 기초 수학

목록 보기
12/46

📌 with ~ as:

with open(파일 경로, 모드) as 파일 객체:
with [expression] as [변수명]

📌 text ()

예제를 풀이하기 전, 이전에 학습한 것을 복습하자!
https://velog.io/@jaam_mini/Day.08-Python-Midtext함수-cr9qy9e9


📌 딕셔너리 = {키:값}

문제 1번을 들어가기에 앞서, 사용되는 딕셔너리 = {키:값}을 다시 짚고 넘어가자!

  • 딕셔너리는 키(key)와 값(value)이 한 쌍이 하나의 대응 관계를 가지고 있는 자료형
  • 딕셔너리는 데이터를 특정 "키"와 "값"을 한 쌍을 이루게 해서 순서와 상관없이 "키"를 이용해서 바로 "값"에 접근이 가능하도록 만들어진 데이터 타입
  • 키와 값을 선언할때는 콜론(:) 으로 구분
🏷️딕셔너리 생성
d = {'a': 123123}

🏷️ 값 추가
d[999] = 10                  # 숫자 키, 숫자 값
d['99'] = 111               # 문자 키, 숫자 값
d['BlockDMask'] = "blog"    # 문자 키, 문자 값

🏷️값 접근
print("3. 딕셔너리 값 접근")
print(f'd["a"] = {d["a"]}')
print(f'd[999] = {d[999]}')
print(f'd["BlockDMask"] = {d["BlockDMask"]}')

🏷️값 변경
print()print("4. 딕셔너리 값 변경")
print(f'before : d["BlockDMask"] = {d["BlockDMask"]}')
d["BlockDMask"] = 'boy' ⭐
print(f'after  : d["BlockDMask"] = {d["BlockDMask"]}')

📍 딕셔너리 [키] 뽑기

딕셔너리 .keys() 함수를 통해서 딕셔너리의 키(key)들을 한번에 볼 수 있다.

d = {'a': 123123, 'kim': 'blockdmask', 'b': "blog", 'c': 3333, 123: 'name'} 

# key 출력
print(d.keys()) 

# key 하나씩 받기
for k in d.keys():
print(f'key : {k}')

📍 딕셔너리 [값] 뽑기

딕셔너리 .values() 함수를 통해서 딕셔너리의 값(value)들을 한번에 볼 수 있음

# 딕셔너리d = {'a': 123123, 'kim': 'blockdmask', 'b': "blog", 'c': 3333, 123: 'name'} 

# values 출력
print(d.values()) 

# value 하나씩 받기
for v in d.values():
print(f'value : {v}')

📍 딕셔너리 [키, 값] 뽑기

딕셔너리 .items() 함수를 통해서 딕셔너리의 키,값 쌍을 한번에 볼 수 있음

# 딕셔너리
d = {'a': 123123, 'kim': 'blockdmask', 'b': "blog", 'c': 3333, 123: 'name'} 

# items 출력
print(d.items()) 

# items 하나씩 출력
for m in d.items():    
	print(f'한쌍씩 : {m}')
    print(f'Key : {m[0]}')    
    print(f'Value : {m[1]}')   
    print()
출처 : https://blockdmask.tistory.com/450

문제(1)


(1) 처음에는 문제의 핵심 요소(기능)에 맞춰 기본 구조를 먼저 짜 놓는다.

(2) 쓰기(def writeDiary) 구현

(3) 읽기 구현

(4) ex.py로 넘어와 uri 불르기

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.회원가입,\t 2.한줄일기쓰기,\t 3.한줄일기보기,\t 4.종료 '))

   if(selectNum == 1):
       mId = input('input ID: ')
       mPw = input('input PW: ')
       members[mId] = mPw
       ▲ 입력받은 id, pw를 members에 저장		printMembers()

(5) 로그인
members[mId] == mPw: 밸류가 비밀번호와 동일하다면 로그인 완료


문제(2)

※ 잔액관리를 위한 text file을 2개 만들어야함

  • A. 수입과 지출의 이력
  • B. 잔액

Q> 수입과 지출을 기록하는 가계부

(1) 기본 골조

(2) 'r'읽기 모드로 가고 싶으니까, 'bank' 파일을 생성
('w'면 알아서 생성하지만, r로 하고 싶음)

(3) 'bank' 파일 > 'money' test file(B. 잔액) 생성 > ⭐숫자 0을 입력 후 저장 ( = 잔고 0원 의미)

(4) 'A. 수입과 지출의 이력' 파일을 '파이썬 실행 구문'으로 생성해줌

(5) 앞단 + 1번(입금) 선택 시 구문

  • read
  • write
  • A. 수입과 지출의 이력 파일 생성

(6) 2번(출금) 선택 시
기존 금액에서 입력한 (출금)금액을 뺴고, f.write 로 다시 입력시킴

덮어 씌우기 위해 'w' 선택

with open('C:/pythonTxt/bank/money.txt', 'w') as f:
	f.write(str(int(m) - money))


문제(3)

Q. 약수/소수 파악 후 text에 기록

🏷️약수 구문

  • 리스트

  • range() -> 사용자가 입력한 값보다 1개 크게 (+1) 설정

  • 나눴을때 나머지가 0이면 약수임

  • 약수가 맞다면 append 로 리시트에 추가

  • if len(divisor) > 0: 0보다 큰 길이(?)
    =>> text에 뭐라도 데이터가 있다면. 이라는 뜻

  • ⭐파일 이릉은 divisor로 정하고 'a' 로 파이썬 내부에서 text를 생성 시킴

🏷️소수 구문

  • ⭐하나라도 0이 있으면 안됨.
    n으로 나누는 나머지가 0이다. = 소수가 아니다 = false = 반복 도는 이유가 사라짐 = break

  • ⭐파일 이릉은 prime로 정하고 'a' 로 파이썬 내부에서 text를 생성 시킴


문제(4)

🏷️ 1. 공약수

(1) 공약수 공식 + text file
if num1 % i == 0 and num2 % i == 0:

(2) 덮어 씌우기 위해서 'a'로 !

(3) 예외가 발생하면 '알아야 하니까' except 생성

🏷️ 2. 최대 공약수


문제(5)

  1. 2개 간의, 공약수 & 최대공약수

  2. 2개 간의, 최소 공배수
    minDay = (ship1 * ship2) // maxDay

  3. 배3개에 대한 최소공배수


참고/출처
제로베이스 데이터 취업 스쿨
profile
비전공자의 데이터 공부법

0개의 댓글