ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python / day01 / (주석,출력,서식문자,고정길이)
    K-Digital/Python 2022. 7. 27. 21:43
    # 주석 - 코드의 부연 설명을 적는 문장
    # 공부하는 동안은 코드 내용 정리할때 사용하자....
    
    # 주석의 종류
    # # : 한줄 주석 - 코드 한줄마다 부연 설명을 적을 때 사용한다.
    # ex) randint() - 정수값의 범위 안에 랜덤수를 구하는 함수..
    
    """
        범위 주석1
        - 범위 안의 모든 내용은 주석으로 처리가 된다...
        - 문자열을 처리하는 방법중에 하나...
        - 머릿말, 대분류
    """
    
    '''
        범위 주석2
        - 범위 안의 모든 내용은 주석으로 처리가 된다...
    '''
    # indet - 들여쓰기
    # - 코드의 영역을 구별할때 들여쓰기를 통해서 구볗한다.
    # - 다른 프로그래밍 언어 에서는 영역을 구별할때는 {}를 통해서 사용한다....
    # age = 20;
    # - 중괄호를 안쓰는 대신에 들여쓰기를 통해서 구별한다.
    # if age >=20:
    #     print("성인")
    
    # 함수 == 기능
    # - 어떠한 기능을 실행하는 하나의 작은 프로그램 or 코드의 집합체..
    
    # print - Pythn에서의 출력 함수
    # print(내용 입력)
    
    # 프로그램에서 자주 쓰이는 데이터의 형태
    # 정수
    # 실수
    # - 숫자형태 그냥 적으면 됨
    print(12)
    print(12.34)
    
    # 문자
    # 문자열
    # - 코드로 사용할 일이 많기 때문에 데이터를 별도로 구분한다...
    # - Python은 문자와 문자열을 별도로 구별하지 않는다...기본적으로 문자열로 처리된다...
    # - C나 Java 쪽에서는 문자와 문자열을 별도로 구별한다..
    # - Python - "" or ''
    # - C계열과 JAVA - '' - 단일문자, - "" 문자열
    print("print a")
    print('print a')
    
    # 명령문 - 프로그램 실행의 실질적인 내용....
    # - 프로그램 실행시 실행되는 문장...
    
    # Python같은 경우는 일반적으로 코드를 적을 때 하나의 명령을 한줄에 적는다...
    # - 여러개의 명령을 한줄에 적을때는 명령의 끝에 ;을 적어주면 된다.
    # - ;(종료문자)
    # - 하나의 명령문의 끝을 표시하는 기호
    # - 하나의 명령이 끝났으니 다음 명령을 실행하여라....
    print(type("print a"));print(type('print a'))
    print(type('print a'))
    # 출력시 도움을 주는 문자들....
    # 서식문자
    # 제어문자(이스케이프 시퀀스, 이스케이프 문자)
    # - 콘솔에서 특수한 기능을 하는 문자들
    # - 약 30가지
    # - 문자열 안에서 실행 시키고자 하는 위치에 |를 적고 기능에 맞는 문자를 적어주면 된다.
    # print("이름 : 이주홍")
    # print("주소 : 용인시 진산로")
    
    # 1. \n (New Line, Line Feed) - 아스키코드 10
    # - 커서를 다음줄로 이동시키는 기능
    # print ("이름 : 이주홍\n주소 : 용인시 진산로")
    
    # 2. \t (Horizontal Tab) - 아스키코드 9
    # - 커서를 탭 크기 만큼 이동시키는 기능....
    # - 일반적으로 프로그램마다 Tab크기는 다르긴 하지만 보통은 영문자 기준 8글자 한글 기준 4글자....
    # print("이름\t : 이주홍")
    # print("전화번호 : 010-1111-2222")
    
    # 3. \r(Carriage Return) - 아스키코드 13
    # - 커서를 줄의 제일 처음으로 이동시키는 제어문자
    # print("abcdefg\r")
    
    # 4. \b(Back Space) - 아스키코드 8
    # - 커서를 왼쪽으로 한칸 이동시키는 제어문자.
    # print("abcdefg\bA")
    
    # 문자열에서 특수한 기능을 하는 문자들
    # - 데이터로써의 문자를 사용하려면 \뒤에 적어주면 된다...
    
    # \ - 제어문자를 구분하는 기호
    # '', "" - 문자열을 구분하는 기호
    
    # "HI"
    
    # print("\"HI\"");
    # print('"HI"');
    # print("'HI'");
    
    #G:\KDT\Python\workspace
    
    # print("G:\KDT\Python\workspace")
    kim = ['김동완','38','010-1111-1111','20,000'];
    seo = ['서지수','24','010-1234-5678','30,000'];
    lee = ['이지은','25','010-2525-2345','50,000'];
    print("\t\t### 회비 정보 ###\t\t\t")
    print("="*48)
    print("이름\t\t나이\t전화번호\t회비")
    print("="*48)
    print(kim[0] + "\t\t" + kim[1] + "\t" + kim[2] + "\t\\" + kim[3])
    print(seo[0] + "\t\t" + seo[1] + "\t" + seo[2] + "\t\\" + seo[3])
    print(lee[0] + "\t\t" + lee[1] + "\t" + lee[2] + "\t\\" + lee[3])
    print("-"*48)
    print("총합계\t\t\t\t\t\\100,000")
    print("="*48)
    # 출력 함수의 옵션
    
    # Python에서의 함수의 특징
    # - 디폴트 매개변수의 진화 - 키워드 인자
    
    # 여러가지 매개변수를 전부 부를 필요없이 하나의 특정한 매개변수만 넣어도 되게 함?
    
    # end - 출력 결과에 가장 끝에 자동으로 삽입할 문자를 지정하는 디폴트 매개변수
    
    print("그냥 출력", end="\n");
    print("end = '\\n'때문에 다음줄로 이동...")
    print("end='\\t'", end='\t')
    print("탭크기 만큼 이동하는 제어문자")
    print("5", end = " * ")
    print("6 = 30")
    
    # , - 식들을 구분하는 구분점...가장 우측에 있는 식이 결과값이 된다...
    
    # sep - 여러개의 결과를 출력할때 사이사이마다 넣을 문자열을 지정하는 디폴트매개변수
    # sep = '' - 디폴트값
    
    print(1,2,3,4,5)
    print(1,2,3,4,5,sep=" ")
    print(1,2,3,4,5,sep=" - ")
    # 서식문자
    # - 데이터의 출력형식을 지정하는 문자....
    # - 내가 원하는 형식의 데이터와 문자열을 조합해서 하나의 문자열을 만들기 위한 문자
    # - 제어문자와 마찬가지로 원하는 위치에 적으면 된다....
    # - 서식문자의 개수와 타입은 반드시 데이터와 일치되어야 한다...
    
    # - C스타일과 Python스타일 둘다 사용이 가능하다....
    # - C스타일
    #   - "출력 형식"%(데이터,데이터,....)
    # - Python스타일
    #   - "출력 형식".format(데이터,데이터,....)
    
    #           C스타일         Python스타일
    # 문자열    %s                X
    # 정수      %d                { }
    # 실수      %f                {:f }
    # 2진수     X                 {:b }
    # 8진수     %o                {:o }
    # 16진수    %x                {:x }
    
    # . (멤버 참조 연산자)
    # - 클래스의 멤버를 참조하는 연산자.
    
    print(2,'*',5,'=',2*5)
    print("{} * {} = {}".format(2,5,2*5))
    
    # 나이 : 20
    print("%s : %d"%("나이",20))
    print("{} : {}".format("나이",20))
    
    # 실수
    # - C언어에서는 실수를 출력할때 소수점 6번째 자리까지 기본적으로 출력한다...Python...
    # - 서식문자에서 소수점 자리수 지정
    # - C스타일 : %.자리수f     
    # - Python스타일 : {:.자리수f}
    print("C스타일 : " + "%f, %.2f"%(1.234,1.234))
    print("Python스타일 : " + "{:f}, {:.2f}".format(1.234,1.234))
    print(1.234)
    
    # 컴퓨터에서의 진법 표현
    
    #                           C언어           Python
    # 2진수     0,1             X               0b10
    # 8진수     0 ~ 7           010             0o10
    # 10진수    0 ~ 9           10              10
    # 16진수    0 ~ 9, A ~ F    0x10            0x10
    
    print(0b10) # 2진수
    print(0o10) # 8진수
    print(10)   # 10진수
    print(0x10) # 16진수
    
    print("{:b} , {} , {:o} , {:x}".format(0x10,0o10,10,0b10))
    # 서식문자
    # - 데이터의 출력형식을 지정하는 문자....
    # - 내가 원하는 형식의 데이터와 문자열을 조합해서 하나의 문자열을 만들기 위한 문자
    # - 제어문자와 마찬가지로 원하는 위치에 적으면 된다....
    # - 서식문자의 개수와 타입은 반드시 데이터와 일치되어야 한다...
    
    # - C스타일과 Python스타일 둘다 사용이 가능하다....
    # - C스타일
    #   - "출력 형식"%(데이터,데이터,....)
    # - Python스타일
    #   - "출력 형식".format(데이터,데이터,....)
    
    #           C스타일         Python스타일
    # 문자열    %s                X
    # 정수      %d                { }
    # 실수      %f                {:f }
    # 2진수     X                 {:b }
    # 8진수     %o                {:o }
    # 16진수    %x                {:x }
    
    # . (멤버 참조 연산자)
    # - 클래스의 멤버를 참조하는 연산자.
    
    print(2,'*',5,'=',2*5)
    print("{} * {} = {}".format(2,5,2*5))
    
    # 나이 : 20
    print("%s : %d"%("나이",20))
    print("{} : {}".format("나이",20))
    
    # 실수
    # - C언어에서는 실수를 출력할때 소수점 6번째 자리까지 기본적으로 출력한다...Python...
    # - 서식문자에서 소수점 자리수 지정
    # - C스타일 : %.자리수f     
    # - Python스타일 : {:.자리수f}
    print("C스타일 : " + "%f, %.2f"%(1.234,1.234))
    print("Python스타일 : " + "{:f}, {:.2f}".format(1.234,1.234))
    print(1.234)
    
    # 컴퓨터에서의 진법 표현
    
    #                           C언어           Python
    # 2진수     0,1             X               0b10
    # 8진수     0 ~ 7           010             0o10
    # 10진수    0 ~ 9           10              10
    # 16진수    0 ~ 9, A ~ F    0x10            0x10
    
    print(0b10) # 2진수
    print(0o10) # 8진수
    print(10)   # 10진수
    print(0x10) # 16진수
    
    print("{:b} , {} , {:o} , {:x}".format(0x10,0o10,10,0b10))
    import unicodedata
    
    # 참고 url : https://frhyme.github.io/python-libs/print_kor_and_en_full_half_width/
    def fsws(input_s="", max_size=40, fill_char=" "):   # 변수 3개를 받아온다 / 입력할 문자, 문자공간, 남은 공간 채울문자
        """
        - 길이가 긴 문자는 2칸으로 체크하고, 짧으면 1칸으로 체크함. 
        - 최대 길이(max_size)는 40이며, input_s의 실제 길이가 이보다 짧으면 
        남은 문자를 fill_char로 채운다.
        """
        l = 0 
        for c in input_s:
            if unicodedata.east_asian_width(c) in ['F', 'W']:
                l+=2
            else: 
                l+=1
        return input_s+fill_char*(max_size-l)
        
    print("|{:^60}|".format('Python Shop'))
    print("|{:<5}{:^2}".format("No.",":")+fsws("1078718855",max_size=53)+"|")
    print("|{:<5}{:^2}".format("Addr",":")+fsws("서울시 마포구",max_size=53)+"|")
    print("|{:<5}{:^2}".format("Name",":")+fsws("김사장",max_size=53)+"|")
    print("|{:<5}{:^2}".format("H.P",":")+fsws("070-1234-5678",max_size=53)+"|")
    print("|"+("-"*60)+"|")
    print("|{:^15}{:^15}{:^15}{:^15}|".format("Item","Unit","QTY","Price"))
    print("|{:<3}{:<10}{:12,d}{:13,d}{:18,d}{:<4}|".format("","Blue-Tooth",85000,1,85000,""))
    print("|{:<3}{:<10}{:12,d}{:13,d}{:18,d}{:<4}|".format("","USB3.0 8G",8000,1,8000,""))
    print("|"+("-"*60)+"|")
    print("|{:<40}{:20,}|".format('Total',93000))
    print("|"+("-"*60)+"|")
    print("|{:<40}{:20,}|".format('Pay Money',93000))
    print("|{:<40}{:20,}|".format('Reveive Money',100000))
    print("|{:<40}{:20,}|".format('Change Money',7000))
    print("|"+("-"*60)+"|")

     

    고정길이를 지정하여 .format을 사용하는 것이 아직 익숙하지가 않다.  JAVA를 사용하다 와서 그런지 더 그렇게 느껴지는 것 같다.

    'K-Digital > Python' 카테고리의 다른 글

    Python / day02 /  (0) 2022.07.27
Designed by Tistory.