python/연습문제 풀이

(연습문제) 사용자정의함수, 반복문 별찍기

연정양 2022. 9. 5.

 

<문제>

height 변수에 별(star)의 층수를 입력하면 각 층마다 별의 개수가 한 개씩 증가하여 출력되고, 마지막 줄에 별의 개수가 출력되도록 함수의 빈 칸을 채우시오.

def StarCount(height):
    dataset = range(1, height+1)  
    tot = 0
    for i in dataset:
        print('*'*i) 
        tot += i 
    return tot
height = int(input('height : '))
print('start 개수 : %d'%StarCount(height))

- while문으로 도전했다가 실패하고 for로 재도전..while문이 왜이렇게 어려운지 모르겠다...(나중에 while문 추가하기)

  (그중에서도 더 어려운 별찍기..왼쪽 오른쪽 반전 다 연습해도 다시 하려면 잘 모르겠다.)

- 누적합이 필요한 문제이므로, dataset과 tot값 설정을 해주었다. 

 

그밖에 어려웠던 건 역시 사용자정의함수의 세부 설정 .. 아직 많이 헷갈린다 

- return값을 어떤 걸로 하느냐가 중요한 문제..(한참 헤메었다)

- return값을 StarCount로 할 경우, 별이 출력되기는 하지만 합을 구할 수 없었다.

- line 2의 range 값을 (0, n)으로 설정할 경우 별이 찍히는 맨 첫 줄은 공백이 되므로 주의.

- range값 (n,n2)의 n2 는 4를 입력시 3까지 나타나기 때문에 원하는 값까지 출력하려면 +1을 해야 한다.

 

*참고용으로 첨부하는 주말에 연습한 별찍기 (while을 이용한)

*가운데 정렬은 +2씩 해주는 게 중요하며, f포매팅 설정을 해 줘야 한다!

*가운데 정렬을 input으로 하는 방법은 좀 더 연구가 필요함.....,.,,

*for 로 하면 더 간단한 형태도 가능하다. 

#왼쪽 정렬
N = int(input())
star = 0
while star < N:
    star += 1
    print("*" * star)

#오른쪽 정렬
star = int(input())
while star > 0:
    star -= 1
    print("*" * star)

#가운데 정렬
star = -1
tot = 0
while star < 11:
    star += 2
    tot = '*'*star
    print(f'{tot:^15}')

#가운데 역순
star = 11
tot = 0
while star > -1:
    star -= 2
    tot = '*'*star
    print(f'{tot:^15}')

 

댓글