Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
na zítra mám dobrovolný úkol do programování, a to vytvořit kalendář na jeden měsíc. Program funguje tak, že mu zadáte pouze první den v měsíci (např. 1 jako pondělí) a on vygeneruje tabulku. Měsíc bude mít vždy 31 dnů.
Mám jediný problém. Když mu zadám 6 nebo 7, tak mi nezalomí poslední 2 čísla tj. 30 a 31. Opravdu by se mi hodila pomoc.
Můj zdrojový kód:
b=1 print "Pondeli=1\n" c=input("Zadejte prvni den v tydnu: ") t="" sezn=range(1,32) print "Pondeli=1\n" if c>=1 and c<=7: print "Po\tUt\tSt\tCt\tPa\tSo\tNe\n" for b in sezn: t=t+str(b)+"\t" if b==(8-c) or b==(15-c) or b==(22-c) or b==(29-c): t=t+"\n" if c==1: print t else: t=(c-1)*"\t"+t print t else: print "Nespravny vstup"
a výsledek
Pro čísla 1-5 funguje v pořádku.
Děkuji za pomoc.
Offline
if b==(8-c) or b==(15-c) or b==(22-c) or b==(29-c):
zaměnit za
if b==(8-c) or b==(15-c) or b==(22-c) or b==(29-c) or b==(36-c):
Ale obecně by bylo lepší napsat to nějak lépe, ideálně
if (b+c-1) % 7 == 0, kde % značí modulo (neznam syntaxi Pythonu, možná to bude jinak).
A pojmenovávat proměnné b, c, t je nechutnost...
Offline
↑ Jookyn:
Díky moc, už to dělá to co má dělat! Vyzkoušel jsem i postup s modulem a už funguje také.
Jinak proměnné si vždy během práce označuji co nejkratší, abych mohl rychle psát. Po ověření funkčnosti je přepisuji tak, aby bylo jasné co znamenají.
Ještě jednou díky, moc jste mi pomohl.
Offline