프로그래밍 향상 강좌 1: 별을 그려 보자

프로그램 언어의 문법을 기억해도
어떻게 쓰면 좋을까
아직 몰라요—라는 사람 많다고 생각합니다.

그런 분들을 위한 프로그래밍 향상 강좌입니다.
생각하고 싶은 분은 동영상을 멈추고
프로그램을 생각해보십시오.

해설 동영상은 이쪽



별을 쓰자.



이번 테마는 星を書いてみる 입니다.
다음과 같은 별을 그리는 함수를 만들어 봅시다.

条件 
n = 行数 
def star(n):
    処理 

※별이나 입은 전각

초급 문제


n段目にn個の星を描く
예를 들면
star(5)

실행하면 다음과 같은 느낌으로
표시되는 함수를 만들어 봅시다.


★★
★★★
★★★★
★★★★★

중급 문제


n段に三角形になるように星を描く
star(5) 

입구 입구 ★ 입구 입구
입구 입 ★★★ 입구 입
입구 ★★★★★ 입구
입 ★★★★★★★ 입
★★★★★★★★★

고급 문제


n段にダイヤを描くように星を描く
star(9)

입구 입구 ★ 입구 입구
입구 입 ★ 입 ★ 입구 입
입구 ★ 입구 입 ★ 입구
입 ★ 입 입 입 입 ★ 입
★ 입구 입 입 입 입 ★
입 ★ 입 입 입 입 ★ 입
입구 ★ 입구 입 ★ 입구
입구 입 ★ 입 ★ 입구 입
입구 입구 ★ 입구 입구
star(10)

입구 입구 ★★ 입구 입구
입구 입 ★ 입구 ★ 입구 입
입구 ★ 입구 입구 ★ 입구
입 ★ 입 입 입 입 입 ★ 입
★ 입구 입 입 입 입 입 ★
★ 입구 입 입 입 입 입 ★
입 ★ 입 입 입 입 입 ★ 입
입구 ★ 입구 입구 ★ 입구
입구 입 ★ 입구 ★ 입구 입
입구 입구 ★★ 입구 입구

※짝수개와 홀수개 때 처리가 바뀝니다
가운데에서 접어

자, 생각해 봅시다.

초급편 답변



우선 print 함수로 문자를 출력할 수 있습니다.

n단째에 n개의 별이므로
매번 개수가 바뀌므로

이러한 반복을 수행하려면for 문을 사용합니다.
def star(n):
    for i in range(n):
        print('★'*(i+1))
star(5)
range 함수를 사용하면
숫자 대신 사용할 것을 생성할 수 있습니다.

수치는 0부터 시작하므로 1을 더해 줍니다.

파이썬에서는 문자에 관해서* 로 반복을 표현할 수 있기 때문에print 함수로 문자를 n표시하도록 하면 완성입니다.

중급편 답변



우선, 인수로 입력된 행수로 총량을 구해 둡니다.
피라미드형에 별을 출력하는 개수는 行数 x 2 -1 개가 됩니다.

다음 출력
星の左側の口星の右側の口
와 같이 3분할하여 각각의 개수를 계산합니다.

별의 개수가 정해지면 전체에서 당겨
2로 나누면 외부 입의 개수가 됩니다.

이런 함수가 되었습니다.
def star(n):
    tmp = n*2-1
    for i in range(n):
        s = ((i+1)*2-1)
        k = (tmp - s)//2
        res = '口'*k + '★'*s + '口'*k
        print(res)

star(5)

상급편 답변



상급은 풀기까지 시간이 걸린다고 생각합니다.

먼저 입력 된 행 수가 홀수 일 때
짝수 때 처리가 변경됩니다.

다이아몬드의 상단과 하단에
처리가 바뀌는 것에주의가 필요합니다.
ひし形の左の口ひし形に描くための★の外枠と口ひし形の右の口
나누어 생각해
각 부분의 개수를 계산하여 연결하면
정답에 도착할 수 있습니다.

if 문의 조건 분기로 개수를 먼저 생각
출력하는 1행분의 문자를 생각합니다.

이런 느낌의 코드로 별을 그릴 수 있습니다.

def star(n):
    for i in range(n):
        s = (i+1)*2-1        
        k = (i-n//2) if (i+1>n//2) else (n - s)//2
        w = (n-(k*2)-2) if (i+1>n//2) else (i*2 if n%2==0 else i*2-1) 
        res = '口'*k
        if (i+1)==1 or (i+1)==n:
            res += '★★' if n%2==0 else '★'
        else:
            res += '★' + '口'*w + '★'
        res +='口'*k
        print(res)

참고 예이므로 결과가 있으면 정답입니다.

요약



그런데 어땠습니까?

프로그래밍 아이디어는
몸에 왔습니까?

계속 해 나가고 싶기 때문에
프로그래밍을 향상시키고 싶은 분은
풀어보세요.

그럼.

저자 정보



을py의 HP :
h tp // w w. 오츠 py. 네 t/

Youtube:
htps //w w. 요츠베. 코 m / 찬 l / 우카 T7x ぺq8 1G_HcJ

Twitter:
htps : // 라고 해서 r. 코 m / 오츠 py 텐

좋은 웹페이지 즐겨찾기