반응형

  별 그리기

파이썬의 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()
반응형
반응형

파이썬의 출력문은 print를 사용하며 두 개의 옵션을 사용할 수 있습니다.

- sep=" " 

 이 옵션을 이용하게 되면 print문의 출력문들 사이에 해당하는 내용을 넣을 수 있습니다. 기본 값으로는 공백이 들어가 있으며 이를 사용해 원하는 문자를 입력할 수 있습니다.

- end=" "

 이 옵션의 경우 print 문을 이용해 출력을 완료한 뒤의 내용을 수정할 수 있습니다. 기본 값으로는 개행(\n)이 들어가 있으며 이를 사용해 개행을 없애거나 원하는 문자를 입력할 수 있습니다.

 

우선 기존의 print( ) 만 사용하여 출력을 할 경우입니다.

print("1-1칸","1-2칸","1-3칸")
print("2-1칸","2-2칸","2-3칸")

실행결과

 

앞서 말한 것과 같이 print안에 여러 개의 값을 출력할 경우 값들 사이에 공백이 들어가 있으며,

print문이 끝나게 될 경우 개행(\n)이 되는 것을 확인할 수 있습니다.

 

이제 띄어쓰기가 되는 것과 개행을 안되게 하기 위해 sepend를 사용해 보겠습니다.

 

print("1-1칸","1-2칸","1-3칸",end = "")
print("2-1칸","2-2칸","2-3칸",sep = "")

 

실행결과

 

end = "", sep = "" 안에 다른 값을 넣게 되면 해당하는 값이 들어가게 됩니다.

print("1-1칸","1-2칸","1-3칸",end = "**end 입니다** \n")
print("2-1칸","2-2칸","2-3칸",sep = "**sep입니다**")

실행결과

 

반응형
반응형

  random

파이썬에서 random 기능을 사용하기 위해선 random 라이브러리를 import시켜줘야 합니다.

import random을 통해 라이브러리를 사용할 수 있게 해주세요.

 

# 랜덤을 이용한 주사위 프로그램
import random

num_a = random.randrange(1,7)
print("A의 주사위 숫자는 %d 입니다"%num_a)
num_b = random.randrange(1,7)
print("B의 주사위 숫자는 %d 입니다"%num_b)

if(num_a > num_b):
    print("A가 이겼습니다")
elif(num_a < num_b):
    print("B가 이겼습니다")
else:
    print("둘이 비겼네요.")

random.randrange(시작, 끝+1)

- 시작부터 끝까지의 숫자 중 랜덤 숫자 배정

 

 

  반복문 - for

for  i  in (i안에 들어갈 것):

    실행할 문장

# 구구단

for dan in range(2,10,1):
    for i in range(2,10,1):
        print(dan,"*",i,"= %2d"%(dan*i))
	print()

결과
  반복문 - while()

while 조건문:

   실행할 문장

#while 반복

while True:
    num_a = int(input("첫 번째 수 입력:"))
    num_b = int(input("두 번째 수 입력:"))

    print("두 수의 합: %d"%(num_a + num_b))
    

    if(input("계속 하겠습니까?(Y,N)") == "N"):
        break;

결과

 

continue

- 반복문을 실행준 continue를 만나게 되면 아래 문장을 실행하지않고 다음 반복으로 넘어간다

 

break

- 반복문을 실행중 break를 만나게 되면 반복문이 종료된다.

반응형

+ Recent posts