python

[Python] 다양한 별찍기 (while문)

dackyy 2022. 7. 26. 11:29
반응형
#모든 메소드는 "*"과 "" 을 가지고 result에 별을 추가하는 방식
def one(star, result):
    cnt = 4
    while cnt > 0:
        ct = 5
        while ct > 0:
            result += star
            ct -= 1
        result += "\n"
        cnt -= 1
    return result


def two(star, result):
    cnt = 0
    while cnt < 4:
        j = 0
        while j < cnt:
            result += star
            j += 1
        result += "\n"
        cnt += 1
    return result


def three(star, result):
    cnt = 1
    while cnt < 4:
        j = 3 - cnt
        while j > 0:
            result += " "
            j -= 1
        result += star * cnt
        result += "\n"
        cnt += 1
    return result


def four(star, result):
    cnt = 1 #높이가 고정되있으므로 공백을 2로 고정시키고, 반복문 종료마다 한개씩 줄어듬
    j = 2
    while cnt < 6:
        result += " " * j
        result += star * cnt
        result += "\n"
        cnt += 2
        j -= 1
    return result


def five(star, result):
    l = 3
    result = four(star, result)#마름모 윗뚜껑 가져오기
    cnt = 1
    while cnt < 3:
        #k를 공백의갯수로 잡고 마름모 밑부분 추가
        result += " " * cnt
        result += star * l
        result += "\n"
        l -= 2
        cnt += 1
    return result


def six(num, result):
    a = int(num / 2) # int 로 형변환 하여 소숫점 없애기
    l = int(num / 2) # 마름모 밑부분의 행의 갯수와 동일
    cnt = 1
    while cnt < num + 1:
        result += " " * a
        result += "*" * cnt
        result += "\n"
        a -= 1
        cnt += 2
    ct = 1
    while ct < l+1:
        num -= 2
        result += " " * ct
        result += "*" * num
        result += "\n"
        ct += 1
    return result


star = "*"
start = ""
menu = int(input("원하는 과제를 쓰세요 1 ~ 6 : "))
if menu == 1:
    print(one(star, start))
elif menu == 2:
    print(two(star, start))
elif menu == 3:
    print(three(star, start))
elif menu == 4:
    print(four(star, start))
elif menu == 5:
    print(five(star, start))
elif menu == 6:
    me = int(input("출력할 마름모의 값을 입력하시오 : "))
    if me % 2 == 1:
        print(six(me, start))
    else:
        print("홀수만 입력해주세요!")
else:
    print("잘못 입력했습니다!")
반응형