study with Q - 파이썬

38 - reversed() 함수와 별 피라미드 - 추가연습 필요

quaquaz 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