Přesýpací hodiny a dlažba – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přesýpací hodiny a dlažba – Python – Fórum – Programujte.comPřesýpací hodiny a dlažba – Python – Fórum – Programujte.com

 

python_test
~ Anonymní uživatel
1 příspěvek
20. 10. 2016   #1
-
0
-

Ahoj, potřeboval bych funkci, co mi vykreslí v textové grafice přesýpací hodiny... nemusí být funknční, prostě takový tvar přibližného X, kde budu moci pomocí parametru zadávat, "velikost" hodin (kolik znaků bude obsahovat každá čára).

Toto:

def square(num):
    for X in range(num):
        print "w",
    for y in range(num):
        print "#",
        print

Mi dá


>>> square(5)
w w w w w #
#
#
#
#
>>>
 

A potom vykreslení dlažby.... dokážu udělat zámkovou dlažbu, ale je to velice primitivní.... tam bych potřeboval nějak vlepit parametr, kolik má mít dlažba cihliček.


from turtle import Turtle
julie = Turtle()
julie.forward(10)
julie.right(45)
julie.forward(10)
julie.left(45)
julie.forward(10)
julie.left(45)
julie.forward(10)
julie.left(315)
julie.forward(10)
julie.right(90)
julie.forward(30)
julie.right(90)
julie.forward(10)
julie.right(45)
julie.forward(10)
julie.left(45)
julie.forward(10)
julie.left(45)
julie.forward(10)
 

Děkuju

Nahlásit jako SPAM
IP: 195.113.155.–
Wrunx
~ Anonymní uživatel
35 příspěvků
23. 10. 2016   #2
-
0
-

U hodin potřebuje výpis odsazovat od levého kraje pomocí mezer.

Nástin řešení by mohl vypadat třeba nějak takhle:

def hodiny(sirka):
	h0="W"*sirka
	for i in range(sirka/2+1):
		if sirka-i*2>0:
			print " "*i,h0[:sirka-i*2]
	for i in reversed(range(sirka/2+1)):
		if sirka-i*2>0:
			print " "*i,h0[:sirka-i*2]
# zkusíme to...
hodiny(5); print
hodiny(9)
Nahlásit jako SPAM
IP: 188.120.195.–
hanpari0
Stálý člen
23. 10. 2016   #3
-
0
-

#1 python_test

Pokud jde o tu želvu, myslel jsi toto?

from turtle import Turtle
julie = Turtle()

def vykresli(zelva, start, data, koef = 1):
    julie.pu()
    julie.goto(*start)
    julie.pd()
    julie.setheading(0)
    for delka, uhel in data:
        zelva.forward(delka *  koef)
        zelva.right(uhel)

data = ((10, 45),
        (10, -45),
        (10, -45),
        (10, -315),
        (10, 90),
        (30, 90),
        (10, 45),
        (10, -45),
        (10, -45),
        (10, 90))

vykresli(julie, (0,0), data, 0.5)
vykresli(julie, (40,40), data, 1)
vykresli(julie, (80, 80), data, 2)
Nahlásit jako SPAM
IP: 178.72.234.–
peter
~ Anonymní uživatel
3619 příspěvků
24. 10. 2016   #4
-
0
-

python_test - zkousel jsi rozbor ulohy? 

xxxxx
.xxx.
..x..
.xxx.
xxxxx

kdyz x (pocet x) stoupa, pak by y (mezery) melo klesat a opacne. Pak tam tedy mas cyslus vypis '.', vypis 'x', vypis '.'. Ve tvem kodu tam nevidim vypis mezer (tecek).

 Netestovano:

def f0(n,cb):
    for i in range(n): cb(n,i)
def f1(n,i):
    print "."
def f2(n,i):
    print "x"
def f3(n,i):
    cyklus(n, f4)
def f4(n,i):
    a = n - i
    b = i >> 1 // nebo deleno 2
    f0(b, f1)
    f0(a, f2)
    f0(b, f1)

f3(4,0)
f4(7,0)
Nahlásit jako SPAM
IP: 2001:718:2601:26c:60f3:b5...–
peter
~ Anonymní uživatel
3619 příspěvků
24. 10. 2016   #5
-
0
-

   

import sys

def f0(n,cb):
    for i in range(n): cb(n,i)
def f1(n,i):
    sys.stdout.write('.')
def f2(n,i):
    sys.stdout.write('x')
def f3(n,i):
    f0(n, f4)
    f0(n, f5)
def f4(n,i):
    a = n - i
    b = i
    f0(b, f1)
    f0(a, f2)
    f0(b, f1)
    print
def f5(n,i):
    b = n - i
    a = i
    f0(b, f1)
    f0(a, f2)
    f0(b, f1)
    print

f3(4,0)
f3(7,0)

testovano na http://pythonfiddle.com/
Nechce se mi ted zjednodusovat f4, f5.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:60f3:b5...–
peter
~ Anonymní uživatel
3619 příspěvků
24. 10. 2016   #6
-
0
-

Jo, a musel jsem tam pouzit stdout, protoze pythonfiddle neumi print jako funkci s parametry jako je end, sep a pod. Tak jsem to musel nahradit, aby mi to nezalamoval. Nebo by se to muselo ukladat do promenne a vypsat az na zaver.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:60f3:b5...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Podobná vlákna

Hodiny — založil AtomicKiller

Hodiny — založil CJ

Hodiny — založil delphak

C# Atomove hodiny — založil Tessi

Analogové hodiny — založil Petr

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý