파이썬 실전 프로젝트

프린트문print() 옵션(문자열 형식)

토픽 파이썬 실전 프로젝트 > 파이썬 실전프로젝트

프린트문 옵션이라고 썼지만, 사실 문자열 처리에 관한 내용입니다.

루프문을 통해서 문제를 계속 풀다보면,

값이 제대로 나오고 있는지 확인을 꼭 해야합니다.

프린트문을 적절히 사용하면, 어디서 문제가 발생했는지 알아내기가 쉽습니다.

프린트문 출력이 너무 많으면 전체 실행속도가 조금 느려지는것 같으니, 어느정도 문제를 해결했으면 프린터문은 삭제하는게 좋습니다.

 

가로로 출력
print('variable',variable,end='')

한루프당 출력결과가 많을때, 혹은 여러가지 값을 찍어보고 싶을때는, 가로로 출력하는것이 라인수도 줄어들고 보기도 편합니다. 프린트문 끝에 end='' 이라는 옵션을 추가해주면, 그다음 출력문이, 오른쪽에 이어서 표시됩니다. 공백이나 콤마등으로 구분을 주고 싶으면 end=' ' 나 end=','처럼 따옴표안에 문자열을 지정해주면 됩니다.

 

여러항목 출력1
print('This is string :', var_char, 'This is number :' ,var_num,var_num2)

콤마(,)로 구분하면, 문자, 숫자 상관없이 일정공백을 사이에 두고 출력됩니다.

 

print('This is string :' + var_char, 'This is number :', var_num+var_num2)

콤마 대신, 플러스(+)를 쓰면, 문자끼리는 공백없이 이어져서 출력이 되고, 숫자끼리는 합산이 됩니다.

문자와 숫자사이에 (+)를 사용하면 오류가 납니다.

 

여러항목 출력2
print('{0} and {1}'.format('spam', 'eggs'))
print('{1} and {0}'.format('spam', 'eggs'))

num1=1;num2=2
print('{0} {1}'.format(num1,num2))

 .format 이라는 옵션으로 값을 여러개 주고, 중괄호로 읽어오는 방법도 있습니다. 위치를 바꾸고 싶으면 괄호안의 숫자를 바꿔주면 되고, 변수명으로 대신해줘도 됩니다.

정확한 명칭은 str.format() 함수입니다.

str.zfill(0이라는 함수도 있는데, '문자열'.zfill(7) 이렇게 숫자를 지정하면, 지정된 숫자만큼의 공간중에서 문자열을 제외한 남는 공간을 0으로 채워줍니다.

 

여러항목 출력3

python 2버전이나 다른언어에서 쓰던 방식인 %s %d %f 도 쓸수 있습니다.

print('Text %s'%var_char)
print('Number %d'%var_num)

출력문 안쪽에 %s %d %f를 써주고, 출력구문 바로 %뒤에 변수명이나 값을 써줍니다.

(%s:문자열 %d:정수 %f:부동소수점)

print('This is text %s This is number %d'%(var_char,num1))

여러개를 출력할때는, 괄호로 변수를 묶어주면 됩니다.

 

위 3번과 4번을 중첩해서 여러개를 쓸수도 있습니다. 이렇게 쓸일이 있는지는 잘 모르겠지만요,,

str1='str1'; num1=1; num2=2; num3=3; num4=4
print('{0} {1} %d {2} {3} %s'.format('test','11',num1,num2)%(num3,str1))

test 11 3 1 2 str1

이정도만 해도, 반복문 사용하는데는 충분할거 같구요, 더 자세한 사용법을 원하시면 아래 링크를 참조하세요.

https://docs.python.org/3/tutorial/inputoutput.html

댓글

댓글 본문
  1. 숫자를 입력받아서 한글로 출력하는 함수를 구현하고자 합니다.
    즉 입력이 숫자로 6785 입력되면 이를 한글로 '육천칠백팔십오'로 변환하여 출력되도록
    프로그램을 구현합니다. 이 때 숫자의 범위는 1~99999로 한다.

    <요구사항>
    파이썬 divmod(n, m) 함수는 n를 m으로 나눈 몫과 나머지를 한꺼번에 계산해주는 내장함수이다.
    이 함수를 활용할 수 있는 방법을 생각해보시오.
    (예) divmod(9, 4) => (2, 1)로 몫이 2이고 나머지가 1로 계산된다.


    <입력, 출력 예>
    숫자 입력 : 6785
    육천칠백팔십오

    숫자 입력 : 123
    일백이십삼

    숫자 입력 : 76834
    칠만육천팔백삼십사
    '''
    def readNumber(n):

    result = []

    units = [''] + list('십백천만')

    # ------------------------------------------------
    # 이 부분에 코딩하시오.

    if n < 1 or n > 99999:
    return print("범위를 벗어났습니다.")
    nums = '일이삼사오육칠팔구'
    i=0
    while n>0:
    n,r=divmod(n,10)
    if r>0 :
    result.append(nums[r-1] + units[i])
    i+= 1
    print(result)

    return ''.join(result[::-1])


    #---------여기까지--------------------------------------


    #------------------------------------------------
    num = int(input("숫자 입력 : "))

    print(readNumber(num))
  2. # 초기 도서 목록 데이터를 이름순으로 정렬하는 메서드
    # @param[in] books 초기화된 도서 목록 데이터
    # @return 이름순으로 정렬된 도서 목록 데이터
    def sortBooks(books):
    for i in range(len(books)):
    temporaryVariable = "";
    for j in range(len(books)-1):
    if books[j] > books[j+1]:
    temporaryVariable = books[j]
    books[j] = books[j]
    books[j + 1] = temporaryVariable;

    return books

    # 기준연도에 따라 최신 도서를 추출하는 메서드
    # @param[in] sortedBooks 이름순으로 정렬된 도서 목록 데이터
    # @param[in] basicPeriod 기준연도
    # @return 기준연도에 따라 추출된 도서 목록 데이터
    def extractLatestBook(sortedBooks, basicPeriod):
    extractedBooks = []
    #TODO



    return extractedBooks
    ------------------------------
    from DeptFinder import *

    def getDeptInfo():
    deptInfo = [
    ["CEO", "-"],
    ["CTO", "CEO"],
    ["CFO", "CEO"],
    ["CHO", "CEO"],
    ["기술담당", "CTO"],
    ["품질담당", "CTO"],
    ["재무담당", "CFO"],
    ["회계담당", "CFO"],
    ["인사담당", "CHO"],
    ["교육담당", "CHO"],
    ["기술1팀", "기술담당"],
    ["기술2팀", "기술담당"],
    ["재무1팀", "재무담당"],
    ["재무2팀", "재무담당"]]

    return deptInfo

    def printResult(thisDept, thatDept, deptInfo):
    print("검색부서 : " + thisDept + "/" + thatDept)
    print("공통부서 : " + findCommonDept(thisDept, thatDept, deptInfo))

    if __name__ == "__main__":
    printResult("재무2팀", "품질담당", getDeptInfo())
  3. #-----------------------------------------------
    # 이 파일은 수정하면 안되며, 제공된 BookManagement파일의
    # 함수를 수정해서 프로그램을 완성해야 합니다.
    #-----------------------------------------------
    from BookManagement import *

    basicPeriod = 2013

    def main():
    # 제공 데이터 세트2를 실행하려면 loadData에서 제공 데이터 세트1을 주석 처리하고제공 데이터 세트2를 주석 해제하여 실행
    books = loadData()
    printInitialBookList(books)
    # 초기 도서 목록 데이터를 이름순으로 정렬하는 메서드
    sortedBooks = sortBooks(books)
    # 정렬된 도서 목록 출력 메서드
    printSortedBookList(sortedBooks)
    # 기준연도에 따라 최신 도서를 추출하는 메서드
    extractedBooks = extractLatestBook(sortedBooks, basicPeriod)
    # 추출된 도서 목록 출력 메서드
    printExtractBookList(extractedBooks)


    '''
    도서 목록 데이터를 초기화하는 메서드
    @param[out] books 초기화된 도서 목록 데이터
    @return basicPeriod 기준연도
    '''
    def loadData():
    ######################
    # 제공 데이터 세트 1
    ######################
    initialBooksData = [
    "Deep Learning_2018",
    "Weapons of Math Destruction_2011",
    "Computer Systems_2018",
    "Bitcoin and Cryptocurrency Technologies_2016",
    "Code Complete_2017"
    ]
    ######################
    # 제공 데이터 세트 2
    ######################
    '''
    initialBooksData = [
    "A Week in Winter_2016",
    "Sapiens : A Brief History of Humankind_2015",
    "The Millionaire Fastlane_2011",
    "Cosmos_2013",
    "Call Me by Your Name_2018"
    ]
    '''
    return initialBooksData


    def printInitialBookList(books):
    print("---------------- 초기 입력 데이터 ---------------")
    for rowIndex in range(0, len(books)):
    print((rowIndex + 1),".",books[rowIndex])
    print("---------------------------------------------")

    def printSortedBookList(sortedBooks):
    print("---------------- 도서명 순 정렬 결과 ---------------")
    for rowIndex in range(0, len(sortedBooks)):
    print((rowIndex + 1),".",sortedBooks[rowIndex])
    print("--------------------------------------------")

    def printExtractBookList(extractedBooks):
    print("-------------- {}년 기준 도서 추출 기능 -------------".format(basicPeriod))
    extractedBooksCount = 0
    for rowIndex in range(len(extractedBooks)):
    print((extractedBooksCount + 1), ".", extractedBooks[rowIndex])
    extractedBooksCount += 1
    print("--------------------------------------------")


    ## 메인 코드 부분 ##
    if __name__ == "__main__" :
    main()

    ------
    # 초기 도서 목록 데이터를 이름순으로 정렬하는 메서드
    # @param[in] books 초기화된 도서 목록 데이터
    # @return 이름순으로 정렬된 도서 목록 데이터
    def sortBooks(books):
    for i in range(len(books)):
    temporaryVariable = "";
    for j in range(len(books)-1):
    if books[j] > books[j+1]:
    temporaryVariable = books[j]
    books[j] = books[j]
    books[j + 1] = temporaryVariable;

    return books

    # 기준연도에 따라 최신 도서를 추출하는 메서드
    # @param[in] sortedBooks 이름순으로 정렬된 도서 목록 데이터
    # @param[in] basicPeriod 기준연도
    # @return 기준연도에 따라 추출된 도서 목록 데이터
    def extractLatestBook(sortedBooks, basicPeriod):
    extractedBooks = []
    #TODO



    return extractedBooks
  4. def loaddata() :

    def dividednumber(sample, phonebook)

    for num in sample:
    if num.startswith("010"):
    tmp_phone.append(num)
    elif num.startswith("02"):
    tmp_seoul.append(num)
    else:
    tmp_other.append(num)

    phoneBook["핸드폰"] = tmp_phone
    phoneBook["서울"] = tmp_seoul
    phoneBook["기타"] = tmp_other

    def printnumber(phonebook)

    for i in phoneBook.keys():
    print("<{}> 목록".format(i))
    for num1 in phoneBook.get(i):
    print(num1)
    print()

    def main():
    phonebook = {}
    sample = loaddata()
    dividednumber()
    pritnumber()


    if __name__ == "__Main_" :
    main()
  5. nomadlife
    문자열과 숫자, str 타입과 int 타입을 말한겁니다만,, 혹시 문자를 변수명과 혼동한건 아닌가요? ^^;; 저도 다시 한번 확인해보긴 할게요.
    대화보기
    • ㅇㅇ
      문자와 숫자사이에 (+)를 사용하면 오류가 안 납니다.