38 - reversed() 함수와 별 피라미드 - 추가연습 필요
#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