반응형

  별 그리기

파이썬의 print옵션 중 format과 % 옵션을 사용하여 역삼각형을 그리도록 하겠습니다.

역삼각형을 그리기전 print에 대한 이해와
format, % 문자열 포맷팅에 대해 간단히 이해하고 이 두개를 사용하여 별 그리기를 진행하도록 하겠습니다.

포맷팅이란?

bskyvision.com/820

 

[python] 문자열 포맷팅이란? 3가지 문자열 포맷팅 방법들

문자열 포맷팅(string formatting)은 문자열 속 특정한 위치에 특정한 값을 삽입해 주는 것을 의미합니다. 만약에 문자열 중에 일부가 변할 수 있는 가능성이 있는 경우 문자열 포맷팅을 통해 그 부분

bskyvision.com

1. format옵션의 사용 예

format이란 {}를 이용한 포매팅 방법입니다.

출력에 대해 서식을 지정하고 그 서식에 값을 대입하는 것으로 아래와 같이 사용할 수 있습니다.

print("실행결과: {0}, {1}".format("1번", "2번"))

실행결과: 1번, 2번 

2. %옵션의 사용 예

%옵션은 format옵션과 마찬가지로 문자열 포맷팅 기술입니다.
대입하려는 값의 타입과 길이를 지정할 수 있으며 아래와 같이 사용할 수 있습니다.

print("실행결과: %s, %s"%("1번", "2번"))


실행결과: 1번, 2번

 

3. 두 가지를 혼합하여 print하기

print("실행결과: %{0}s".format(5)%"ab")
실행결과:    ab

format을 통해 값이 들어간 후 %옵션이 실행되기 때문에 위와 같이 사용 가능 

 

  구현

replayCount = 0;
star = "*";
replayCount = int(input("몇 번 반복하시겠습니까? "));

for i in range(0,replayCount,1):
    print("%{0}s".format(replayCount)%star);
    star+="*";
반응형
반응형

1. 대문자/소문자 변환

함수 설명 사용법
upper() 소문자를 모두 대문자로 변환 문자열.upper()
lower() 대문자를 모두 소문자로 변환 문자열.lower()
swapcase() 대문자/소문자를 상호 변환 문자열.swapcase()
title() 각 단어의 앞글자만 대문자로 변환 문자열.title()
# 대문자/소문자 변환
python = "Python is EASY"
print(python.upper())
print(python.lower())
print(python.swapcase())
print(python.title())

 

결과

 

2. 공백 제거, 추가, 변경

함수 설명 사용법
strip() 앞/뒤쪽 공백 제거 문자열.strip()
rstrip() 뒤쪽 공백 제거 문자열.rstrip()
lstrip() 앞쪽 공백 제거 문자열.lstrip()
replace() 문자 변경 문자열.replace(값, 변경할 값)
# 문자열 공백 제거, 추가, 변경
python = "   Python    is    EASY   "  
print(python.strip())
print(python.rstrip())
print(python.lstrip())
print(python.replace("EASY","쉽다"))

결과

반응형
반응형

리스트 조작 함수

함수 설명 사용법
append( ) 리스트의 마지막에 값을 추가한다 list.append(값)
pop( ) 리스트의 마지막 값을 추출후 제거한다 list.pop( )
sort( ) 리스트의 항목을 정렬한다 list.sort( )
reverse( ) 리스트의 항복을 역순으로 만든다 list.reverse( )
index( ) 값을 찾아 위치를 반환한다 list.index(값)
insert( ) 지정된 위치에 값을 삽입한다 list.insert(위치, 값)
remove( )

리스트에서 지정한 값을 제거,

여러개일 경우 천 번째 값만 제거한다

list.remove(값)
extend()

리스트 뒤에 리스트를 추가한다

list.extend(리스트)
count( )

리스트에서 찾을 값의 개수를 센다

list.count(값)

 

반응형
반응형

 

# 은행 프로그램
import os

# 파일 입출력 방식
file = "C:/Py3/Bank.txt"
#f = open(file,"r")
all_id = list()


#한 사람의 계좌정보를 담아서 관리할 목적으로 구현되는 클래스
class Account:
    def __init__(self, userid= "", name = "", balance=0):        # 생성자
        if(userid == ""):
            self.userid = input("계좌번호 = ")
            self.name = input("고객이름 = ")
            self.balance = int(input("예금금액 = "))
        else:
            self.userid = userid
            self.name = name
            self.balance = balance
            
    # 출력함수
    def disp(self):            
        print("계좌번호:{0}\t이름: {1}\t잔액: {2}".format(self.userid, self.name, self.balance))
    
    # 데이터 호출 함수
    def info(self):
        return "{0}:{1}:{2}\n".format(self.userid, self.name, self.balance)
    
    # 
    def getid(self):
        return self.userid
    
    # 입금
    def deposit(self, money):
        self.balance += money
        return self.balance
    
    # 출금
    def withdraw(self, money):
        if self.balance < money:
            return 0
        else:
            self.balance -= money
            return money
    
    # 잔액 조회
    def getBalance(self):     
        return self.balance

###########################
# 저장된 계좌 파일 호출                 
try:
    f = open(file,"r")
    
    while True:
        line = f.readline()
        if not line:
            break

        a,b,c = line.split(":")
        all_id.append(Account(a,b,int(c)))
    f.close()
except Exception as ex:
    print("파일 없습니다")
    print(ex)
    
###########################
# 화면 초기화                 
def clr():
    os.system('cls')
    
###########################
# 계좌정보를 이용하여 구현될 기능을 담고 있는 클래스 멤버필드 
# 멤버메서드 : makeAccount() - 계좌개설을 담당할 메서드
class BankManager:
    # 출금처리를 담당할 메서드
    def withdraw(self,userid):    
        for i in all_id:
            if i.getid() == userid:
                money = int(input("출금금액 = "))
                return i.withdraw(money)
        print("해당하는 계좌가 없습니다.")
        
    # 입금처리를 담당할 메서드
    def deposit(self,userid):     
        for i in all_id:
            if i.getid() == userid:
                money = int(input("입금금액 = "))
                bal = i.deposit(money)
                print("잔액은 {0} 입니다.".format(bal))
                return 0
        print("일치하는 계좌번호가 존재하지 않습니다")
    
    # 계좌번호의 중복여부를 판단할 메서드
    def new_id(self,user):             
        for i in all_id:
            if i.getid() == user.getid():
                return "입력하신 계좌번호는 이미 존재하는 계좌번호 입니다."
            
        all_id.append(user)
        return "계좌 개설이 완료되었습니다."   
    
    # 전체고객의 계좌정보를 출력할 메서드
    def showAccount(self):             
        if len(all_id) != 0:
            for i in range(0,len(all_id)):
                all_id[i].disp()
        else:
            print("보유한 계좌가 없습니다.")
                 
    # 파일 저장 메서드
    def save(self):
        f = open(file,"w")
        for i in all_id:
            f.write(i.info())
            
        f.close()
            
############################
# 사용자와의 인터페이스를 담당할 목적의 클래스
class BanckingSystem: 
    def run():
        while True:
            print("==== Bank Menu ====")
            print("1. 계좌개설")
            print("2. 입금처리")
            print("3. 출금처리")
            print("4. 전체조회")
            print("5. 프로그램 종료")
            print("===================")
            cho = input("입력: ")
            if cho == "1":       # 계좌개설
                clr()
                print("=======계좌개설=======")
                print(BankManager().new_id(Account()))
                print("===================")
                
            elif cho == "2":     # 입금
                clr()
                print("========입 금========")
                userid = input("계좌번호 =")
                BankManager().deposit(userid)
                print("===================")
                 
                
            elif cho == "3":    # 출금
                clr()
                print("========출 금========")
                userid = input("계좌번호 =")
                a = BankManager().withdraw(userid)
                if a != None:
                    print("{0}원 출금하셨습니다.".format(a))
                
            elif cho == "4":
                clr()
                print("========조 회========")
                BankManager().showAccount()
                print("===================")
                
            elif cho == "5":
                BankManager().save()
                print("종료")
                break

##############################
if __name__ =='__main__':
    BanckingSystem.run()
반응형
반응형

 

open("파일 위치", "r" or "w" 열기모드 , encoding = "파일 형식") 을 통해 입출력을 수행 할 수있습니다

-열기모드

"r"의 경우 파일을 읽을때 사용합니다.

"w"의 경우 파일을 작성할때 사용합니다.

생략할 경우 "r"과 동일합니다

"r+" 읽기/쓰기 겸용모드

"a" 쓰기모드, 기존에 파일이 있으면 이어서 작성. append의 약자

"t" 텍스트 모드, 텍스트 파일을 처리, 기본값

"b" 바이너리 모드, 바이너리 파일(=이진 파일)을 처리

 

# 파일 출력
inFp = None
inStr = ""

inFp = open("D:/python/data.txt", "r", encoding = "utf-8")

inStr = inFp.readline()
print(inStr, end="")

inStr = inFp.readline()
print(inStr, end="")

inStr = inFp.readline()
print(inStr, end="")

inFp.close()
# 파일 입력
outFp = None
outStr = ""

outFp = open("D:/python/data2.txt", "w", encoding ="utf-8")

while True:
  outStr = input("내용 입력 : ")
  if outStr !="":
    outFp.writelines(outStr + "\n")
  else:
    break

outFp.close()
print("--- 정상적으로 파일에 써졌음 ---")
반응형
반응형

모듈(Module)은 함수들의 집합이라 생각할 수 있다.

 

함수들을 A.py에 작성하는 것이 아닌 module1.py에 작성하여 A.py뿐 아니라 B.py, C.py 등 여러 파이썬 파일에서

재사용할 수 있도록 할 수 있습니다.

 

## 파일명: module1.py
# 모듈 파일
def func1():
  print("모듈의 func1 함수")
def func2():
  print("모듈의 func2 함수")
  
# main 파일
import module1

module1.func1()
module2.func2()

 

결과

 

반응형

+ Recent posts