ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 38 - reversed() 함수와 별 피라미드 - 추가연습 필요
    study with Q - 파이썬 2024. 4. 22. 21:56

    #reversed() 함수

    : 매개변수로 반복 가능한 것을 넣으면 결과로 그것을 뒤집어서 나타내줌

    : 결과 자료형 : 이터레이터 반복가능한 자료형이라고 나오기는 하는데 나중에 배울 예정... 

     

    #리스트에 reversed() 함수를 적용해보기

    reversed([0,1,2,3,4])로 리스트에 reversed() 함수를 적용해보고 결과를 볼 수 있게 list 함수와 print로 감싸면

    print(list(reversed([0,1,2,3,4])))
    >>> [4, 3, 2, 1, 0]

     

    #딕셔너리에 reversed() 함수를 적용해보기 는 많지 않아서 생략

     

    #범위에 reversed() 함수를 적용해보기

    reversed(range(0, 9+1))

    print(list(reversed(range(0, 9+1))))
    >>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

     

    reversed() 함수는 범위를 반대로 출력할 때 주로 사용

    print ("카운트다운!")
    for i in reversed(range(0, 10+1)):
      print (f"{i}")
    >>> 카운트다운!
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1

     

    #왼쪽 정렬 별 피라미드

    • 문자열 반복 연산자를 사용하는 방법
    star = 10
    for i in range(1, star+1):
      print("*"*i)
    >>> 
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********

     

    그래서 백준 2438번은

    더보기

    문제
    첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

    입력
    첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

    출력
    첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

     

    star = int(input())
    
    for i in range(1, star+1):
      print("*"*i)
    • 문자열*연산자를 사용하지 않고 반복문으로 구현하는 방법

    step1) N(10)개의 별을 가로로 출력하기

    end 키워드를 사용하면 편하지만 아직 모르니까

    더보기
    N = 10
    for i in range(N):
      print("*", end="")
    >>> 
    **********

    result라는 문자열 매개변수를 만들고 result에다가 *을 하나씩 더해주고 문자열 매개변수를 출력한다.

    N = 10
    result = ""
    for i in range(N):
      result += "*"
    
    print(result)
    
    >>> **********

     

    step2) N개의 별을 가로로 출력하는 것을 반복문에 넣어주고 개수를 i개로 변환한다.

    star = 10
    for i in range(1, star+1):
      N = i
      result = ""
      for j in range(N):
        result += "*"
    
      print(result)
    >>>
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********

    N =  i를 바로 넣어버려서 코드를 조금 더 간단하게!

    더보기
    star = 10
    for i in range(1, star+1):
      result = ""
      for j in range(i):
        result += "*"
    
      print(result)

    #가운데 정렬 삼단 별 피라미드

     

    > 가운데 정렬처럼 보이는 삼단 피라미드는

    print("  *")
    print(" ***")
    print("*****")

    > 그렇다면 공백은 층별로 2,1,0개 / 별은 1,3,5개가 되니까

    공백의 일반항은 !층수 - i* / 별의 일반항은 !2i-1*

    twk = 3
    
    for i in range(1, twk+1):
      rst = ""
      rst += " " * (twk-i)
      #print("공백")
      rst += "*" * (2*i-1)
      #print("별")
      print(rst)
    >>>
      *
     ***
    *****

     

    > 문자열 *연산자 대신 반복문만 쓰면

    for i in range(1,twk+1):
      rst = ""
      for _ in range(twk-i):
        rst += " "
      #print("공백")
      for _ in range(2*i-1):
          rst += "*"
      #print("별")
      print(rst)

     


    #그외 별 피라미드도 연습해보기


    replit

Designed by Tistory.