Wszyscy kochamy swiateczne drzewka

0

Hej wszystkim! Na uczelni zostalo mi zadane:
drzewko.JPG
Poki co mam to:

import random
def main():
    n = int(input("How many rows? "))
    christmas_tree(n)


def christmas_tree(n):

    z = n - 1
    x = 1
    for i in range(n):
        choice = random.choice(['*', 'i', 'O', 'V', '*', '*', '*', '*', '*', '*'])
        print(' ' * z + str(choice) * x + ' ' * z)
        x+=2
        z-=1
main()

a wyswietla mi:
How many rows? 10
*
***
*****
*******
*********
***********
iiiiiiiiiiiii


iiiiiiiiiiiiiiiii
OOOOOOOOOOOOOOOOOOO

Prosze o lekka wskazowke, bo nie moge tego rozgryzc na ten moment (poki co nie przejmuje sie "noga" drzewka, chce najpierw zajac sie ozdobami i drzewkiem wlasciwym")

W razie czego nie prosze o rozwiazanie, chcialbym poczuc swiateczna radosc rozwiazjac to, dlatego prosze tylko o lekka wskazowke :)

2

Ty w pętli decydujesz raz, jaki znak wypisujesz, i potem go drukujesz wielokrotnie, przez cały rząd. Tymczasem w zadaniu trzeba decydować nad każdym znakiem osobno.

0

Teraz mam takie cos, generalnie wyswietla pelno bledow, ale chyba jestem blizej (chyba?)

import random


def main():
    n = int(input("How many rows? "))
    christmas_tree(n)


def christmas_tree(n):
    z = n - 1
    x = 1
    for i in range(n):
        print(' ' * z + str(choice(x)) + ' ' * z)
        x += 2
        z -= 1


def choice(x):

    candle = ['*', 'i', 'O', 'V', '*', '*', '*', '*', '*', '*']
    for y in range(x):
        return random.sample(candle, x)

main()

KASZA.JPG

0

Hej, może spróbuj najpierw obliczyć ilość poszczególnych znaków w całej choince a potem je odpowiednio wypisz.

0

Wreszcie mam troche czasu, wiec moge sie za to zabrac. Na ten moment napisalem to + mam czesc rysujaca choinke (w teen zly sposob, wypisuje to samo w calym rzedzie, ma ktos moze jakas wskazowke? Pewnie rozwiazanie jest proste, ale od patrzenia na ten program juz w glowie mi sie miesza i potrzebuje swiezego spojrzenia :) Pozdro!

import random


def main():
    rows = int(input("How many rows should tree have?"))
    tree(rows)


def dec(rows):
    x = 1
    amount_of_el = (rows * rows)
    while x <= amount_of_el:
        choice = random.randint(1, 100)
        if 0 < choice <= 10:
            x += 1
            return "V"

        elif 11 < choice <= 20:
            x += 1
            return "i"

        elif 21 < choice <= 30:
            x += 1
            return "O"

        else:
            x += 1
            return "*"


def tree(rows):
    z = rows - 1
    y = 1

    for i in range(rows):
        print(" " * z + str(dec(rows)) * y + ' ' * z)
        z -= 1
        y += 2
1

Wskazówka taka sama jak poprzednio: nie generuj całego wiersza na raz, tylko znaczek po znaczku. Czyli zamiast linijki print(" " * z + str(dec(rows)) * y + ' ' * z) chcesz mieć coś w stylu print(' ' * z + ''.join([LISTA ZNAKÓW]) + ' ' * z).

LISTA ZNAKÓW może być generowana gdzieś osobno, albo możesz wykorzystać tę okazję, by się dowiedzieć, co to takiego list comprehension w Pythonie.

Nawiasem mówiąc, w dokumentacji Pythona masz ładnie przedstawiony czytelny i krótki sposób na losowanie elementu z listy z niejednorodnym prawdopodobieństwem.

0

Dzieki za pomoc, wlasnie mialem troche czasu i prawie skonczylem drzewko :)

 import random


def main():
    rows = int(input("How many rows should tree have?"))
    Tree(rows)


def Tree(rows):
    elements = []

    x = 1
    v = 0
    i = 0
    o = 0
    a = 0
    amount_of_el = (rows * rows)
    while x <= amount_of_el:
        choice = random.randint(1, 100)
        if 0 < choice <= 10:
            x += 1
            elements.append("V")
            v += 1
        elif 11 < choice <= 20:
            x += 1
            elements.append("i")
            i += 1
        elif 21 < choice <= 30:
            x += 1
            elements.append("O")
            o += 1
        else:
            x += 1
            elements.append("*")
            a += 1

    z = rows - 1
    y = 1
    P = 0
    G = 0
    O = 0
    random.shuffle(elements)

    for i in range(rows):
        print(" " * z + ''.join(map(str, elements[P:G])) + ' ' * z)

        z -= 1
        y += 2
        P = G
        G += 1 + O
        O += 2
    while z <= 2:
        print(" " * ((y//2) - 3 ) + "***")
        print(" " * ((y//2) - 3 ) + "***")
        break


    table(v, o, i, amount_of_el, a)


def table(v, o, i, amount_of_el, a):
    print("")
    print("Cones:", v, "It is", round(v / amount_of_el * 100, 2), "%")
    print("Balls:", o, "It is", round(o / amount_of_el * 100, 2), "%")
    print("Candles:", i, "It is", round(i / amount_of_el * 100, 2), "%")
    print("Astrix:", v, "It is", round(a / amount_of_el * 100, 2), "%")


main()

1 użytkowników online, w tym zalogowanych: 0, gości: 1