Python 별찍기 총정리(9개)

jongeun·2022년 12월 17일
0

파이썬을 처음 배우기 시작할 때, 네이버 블로그에 메모해두었던 별찍기 코드 풀이를 가져왔다.
오랜만에 보니까 내가 성장했다는 것을 알아서 뿌듯하다.
파이썬 코드 기본중에 기본 별찍기.
역시 기본이 탄탄해야 된다.

1. 숫자만큼 계단 별자리 출력(왼쪽 정렬)

ex) 1입력 시, , 2입력 시 한줄 띄고 ** 등등

star = '*' #변수 star 설정
n = int(input()) #int로 input 에 넣는 값을 정수값으로 설정
for i in range(1, n + 1): #1~n+1 반복문이므로 해당 구간 모두 출력(n은 input에 넣는 값이며 하나 전임을 필수 기억!)
    print(i * star) 
for i in range(int(input())): #범위를 n번 반복(5넣었을 때 0,1,2,3,4)
    print("*"*(i+1)) #5를 넣을 때 
*
**
***
****
*****

2. 숫자만큼 계단 별자리 출력(오른쪽 정렬 +공백 추가)

space = ' ' #공백 변수 space 지정
star = '*'
n = int(input()) 
for i in range(n, 0, -1): #n에서 1까지 역순으로 숫자 생성(마지막 숫자보다 +1임을 기억)
    print(space * (i - 1) + star * (n - (i - 1))) #공백과 for문 곱하고 + 별과 input값에서 for문-1을 뺀걸 곱함 
n = int(input())
for i in range(1, n+1): #1~n까지 범위
    print(" "*(n-i)+"*"*i) #5넣었을 때, 4공백+1별
    *
   **
  ***
 ****
*****

✔️알게 된 것: n부터 1까지 -1씩 증가하는 숫자를 생성, n부터 1까지 1씩 감소하면서 반복
🌠어려웠던 것: n값은 input에 넣는 값이고 i는 순차적 범위 값이다.(예를 들어 5를 넣었을 때 2넣었을 때 2~1이므로 2,1 순차적으로 넣어줌)

3. 거꾸로 계단 모양(왼쪽 정렬)

n = int(input())
star = '*'

for i in range(n , 0, -1): # n부터 1까지 1씩 감소하면서 반복
    print(i * star)
n = int(input())

for i in range(n,0,-1): #n~1까지 내림차순 순서대로 반복
    print("*"*i) #5입력 시 별다섯개
*****
****
***
**
*

4. 거꾸로 계단 모양(오른쪽 정렬)

n = int(input())
star = '*'
blank = ' '

for i in range(0, n): #0부터 n-1까지 순서대로
    print(blank * i + star * (n - i)) #공백을 순서대로 0부터~n-1까지 
다음 별을 n - i의 갯수 만큼 출력해 둘을 더함
n = int(input())

for i in range(n, 0, -1): #내림차순 n~1까지
   print(" "*(n-i)+"*"*(i)) #5입력 시 5-5=0공백+5별
*****
 ****
  ***
   **
    *

5. 세모 모양

n = int(input())
star = '*'
blank = ' '
stars = 1

for i in range(n, 0, -1): #n~1까지 내림차순
    print(blank * (i - 1) + stars * star) #여기까지 출력하며 앞에 공백 생김
    stars += 2 #범위 내 다음 순서부터 stars의 변수가 2씩 추가 됨 
n = int(input())

for i in range(1,n+1): # 1~n 
    print(" "*(n-i)+"*"*(i*2-1)) #5입력 시 4공백+1별
    *
   ***
  *****
 *******
*********

✔️알게 된 것: +=는 왼쪽 변수에 오른쪽을 더하는 것

6. 거꾸로 세모 모양

n = int(input())
for i in range(n,0,-1): #n~1 범위 내 순서대로 내림차순 반복
    print(" "*(n-i)+"*"*(i*2-1)) #5넣었을 때 5-5=0공백, 9별
n = int(input())
for i in range(n,0,-1): #n~1 내림차순
    print(" "*(n-i)+"*"*(i*2-1)) #5입력 시 공백 없고 + 별9
*********
 *******
  *****
   ***
    *

7. 다이아몬드, 햄버거 모양 (For문 두개)

n = int(input())

for i in range(1,n+1): #1~n까지 순서대로
    print(" "*(n-i)+"*"*(i*2-1)) #예를들어 4를 넣었을 때 4-1=3 공백, 1*(범위 내 반복)
for j in range(n-1, 0, -1): #n-1~1까지 순서대로 감소하는 범위(예를들어 4넣었을 때 3~1 반복)
    print(" "*(n-j)+"*"*(j*2-1)) #4-3=1 공백 + 3*2-1=5*
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

8. 리본모양

n = int(input())

for i in range(1, n+1): #1~n까지 순서대로 반복
    print("*"*i + " "*(n*2-i*2) + "*"*i) #5를 넣었을 때 1별+ 10-2=8공백+ 1별
for i in range(n-1, 0, -1): #n-1~1까지 내림차순 순서대로 반복(예:5넣었을 때 4~1)
    print("*"*i + " "*(n*2-i*2) + "*"*i) #5 넣었을 때 4별+2공백 + 4별
*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

9. 모래시계 모양 (세모+역세모)

n = int(input())

for i in range(n,0,-1): #n~1까지 내림차순
    print(" "*(n-i) + "*"*(i*2-1)) #역피라미드와 동일

for i in range(2,n+1): #피라미드에서 바뀐것: 1별이 아닌 3별이기 때문에범위를 1이아닌 2부터로 시작(2~n)
    print(" "*(n-i)+"*"*(i*2-1)) #5넣었을 때 3공백 + 3별 
*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********
profile
기록으로 성장하는 개발자 되기

0개의 댓글