ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬을 파이썬답게_1
    Python 2019. 9. 30. 11:33

     

     

    프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다.

     

     

    몪과 나머지 - divmod

    두개의 수가 주어지고 몫과 나머지를 구해야 할때가 있다.

    ex) 7을 3으로 나눈 몫과 나머지 구하기

     

    • 일반적으로
    a = 7
    b = 3
    print(a//b, a%b)
    # 2 1

    방법으로 몫과 나머지를 계산 할 수 있다.

     

    그런데

     

    • 파이썬에는 divmod라는 것이 있는데
    a = 7
    b = 3
    print(divmod(a, b))
    # (2, 1)
    
    print(*divmod(a, b))
    # 2 1

     * 를 이용한 unpacking과 같이 사용하여 코드를 작성 할 수 있다.

     

    • 무조건 divmod를 사용하는 것이 좋은 방법은 아니다.

    • 가독성이나 스타일에 따라서 첫번째 방법을 사용할 수도 있는데 divmod는 큰 숫자를 다룰때 좀 더 속도가 빠르다.

       

       

    n진법으로 표기된 string을 10진법 숫자로 변환하기 - int함수

    • 입력

    12 3
    444 5

     

    • 출력

    5
    124

     

    • 내가 작성한 코드

    num, base = map(int, input().strip().split(' '))
    
    res = 0
    n = -1
    while num >= 10:
        n += 1 
        num, rest = divmod(num, 10)
        res += (rest*(base**n))
    n += 1
    res += (num*(base**n))
    
    print(res)

     

    • for문과 enumerate를 이용한 코드

    num, base = input().split()
    base = int(base)
    
    answer = 0
    for idx, i in enumerate(num[::-1]):
        answer += int(i) * ( base ** idx )
    print(answer)

     

    • 파이선의 int함수를 이용한 코드

    num, base = input().split()
    base = int(base)
    
    answer = int(num, base)
    print(answer)

    int에 관한 공식 문서

     

     

    문자열 정렬하기

    • 예시

    'abc               ' # 좌측정렬
    '               abc' # 우측 정렬
    '       abc        ' # 가운데 정렬

     

    • 입력

    # 문자열s 자연수n
    abc 7

     

    • 출력
    abc      
       abc   
          abc

     

    • 내가 작성한 코드

    s, n = input().strip().split(' ')
    
    size = int(n) - len(s)
    size_half = size//2
    
    print(s + ' '*size)
    print(' '*size_half + s + ' '*size_half)
    print(' '*size + s)

     

    • 파이썬의 ljust, center, rjust 메소드를 이용한 코드

    s, n = input().strip().split(' ')
    n = int(n)
    
    l = s.ljust(n) # 좌측 정렬
    c = s.center(n) # 가운데 정렬
    r = s.rjust(n) # 우측 정렬
    
    print(l)
    print(c)
    print(r)

     

     

    알파벳 출력하기

    0을 입력하면 소문자 알파벳, 1을 입력하면 대문자 알파벳을 사전 순으로 출력

     

    • 입력

    0
    1

     

    • 출력

    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ

     

    • 내가 작성한 코드

    num = int(input().strip())
    word = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    if num:
        print(word)
    else:
        print(word.lower())

     

    • 파이썬에서는 알파벳을 상수(constants)로 미리 정의 해 뒀다.(참고)

    import string 
    
    lower = string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz
    upper = string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ
    letters = string.ascii_letters #대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    digits = string.digits # 숫자 0123456789
    
    print(lower)
    print(upper)
    print(letters)
    print(digits)
    
    # abcdefghijklmnopqrstuvwxyz
    # ABCDEFGHIJKLMNOPQRSTUVWXYZ
    # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    # 0123456789

     

     

     

     

    이어서

    2019/11/22 - [Python] - 파이썬을 파이썬답게_2

     

    파이썬을 파이썬답게_2

    원본을 유지한채 정렬된 리스트 구하기 - sorted 파이썬의 sort() 함수를 사용하면 리스트의 원소를 정렬할 수 있다. sort 함수는 원본의 순서를 변경 시킨다. deep copy와 sort 함수 이용 list1 = [4, 3, 2, 1] l..

    dev-lagom.tistory.com

     

     

    'Python' 카테고리의 다른 글

    파이썬을 파이썬 답게_3  (0) 2019.11.29
    파이썬을 파이썬답게_2  (0) 2019.11.22
    [Python] zip() 함수  (0) 2019.09.10
    Python Anaconda 가상환경 설정하기  (0) 2019.08.29
    SyntaxError: Non-ASCII Character 관련 에러  (0) 2019.08.12

    댓글

© 2019 All rights reserved.