Wszyscy kochamy swiateczne drzewka

Odpowiedz Nowy wątek
2016-11-29 10:06
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 :)

Pozostało 580 znaków

2016-11-29 10:25
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.

Pozostało 580 znaków

2016-11-29 13:18
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

Pozostało 580 znaków

2016-11-30 09:53
Złoty Mleczarz
0

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

Pozostało 580 znaków

2016-12-02 11:57
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

Pozostało 580 znaków

2016-12-02 12:07

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.

edytowany 1x, ostatnio: Althorion, 2016-12-02 12:09

Pozostało 580 znaków

2016-12-06 11:56
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()
edytowany 1x, ostatnio: misiu34, 2016-12-06 13:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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