Konzultace kodu z učebnice – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Konzultace kodu z učebnice – Python – Fórum – Programujte.comKonzultace kodu z učebnice – Python – Fórum – Programujte.com

 

shockwave0
Newbie
9. 5. 2020   #1
-
0
-

 Ahoj, popsal by prosim nekdo trosku srozumitelne, casti kodu, co jsem oznacil. Bohužel učebnice to řeší asi srozumitelně jen pro programátory, hlavně že učebice pro začátečníky- Vyukovy kurz Python3..

1.Ten kod prvně vyhvězdickuje - vykreslí ZERO a pak řeší další číslo v dalším sloupci? nebo se u každého čísla vypíše první řádek, paku každého čísla druhý řádek, až jsou vypsány všechny řádky?  Děkuju mooc za pomoc.

ipmort sys
Zero = ["  ***  ", " *   * ", "*     *", "*     *", "*     *",
        " *   * ", "  ***  "]
One = [„ * „, „** „, „ * „, „ * „, „ * „, „ * „, „***“]
Two = [" *** ", "*   *", "*  * ", "  *  ", " *   ", "*    ", "*****"]
Three = [" *** ", "*   *", "    *", "  ** ", "    *", "*   *", " *** "]
Four = ["   *  ", "  **  ", " * *  ", "*  *  ", "******", "   *  ",
        "   *  "]
Five = ["*****", "*    ", "*    ", " *** ", "    *", "*   *", " *** "]
Six = [" *** ", "*    ", "*    ", "**** ", "*   *", "*   *", " *** "]
Seven = ["*****", "    *", "   * ", "  *  ", " *   ", "*    ", "*    "]
Eight = [" *** ", "*   *", "*   *", " *** ", "*   *", "*   *", " *** "]
Nine = [" ****", "*   *", "*   *", " ****", "    *", "    *", "    *"]
Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]
try:
    digits = sys.argv[1]   #viz. co konkretně znamená argv[1], ceho se tyka, vyznam ?
    row = 0
    while row < 7:   #proc row < 7, pro 7 strings v kazdem listuseznamu  ?
        line = ""   # co ma za vyznam
        column = 0  # co ma za vyznam
        while column < len(digits): # len podle poctu cislic urci pocet column?
            number = int(digits[column])  #co provede tento radek
            digit = Digits[number]  # prosim pospat vyznam Digits[number] 
            for c in digit[row]:   # prosim popsat smycku a co deladigit[row]
                if c == "*":  #vyznam, code dela  ?
                    c = str(number)  #vyznam  ?
                    line += c  #vyznam, code udela tato cast ?
                    line += "  "   #vyznam, code udela tato cast ?
                    column += 1  #vyznam, code dela  ?
                    print(line)   #vyznam, code dela  ?
                    row += 1   #vyznam, code dela  ?
except IndexError:
    print("použití: bigdigits.py <číslo>")
except ValueError as err:
    print(err, "v", digits)
Nahlásit jako SPAM
IP: 212.4.155.–
Jerry
~ Anonymní uživatel
512 příspěvků
9. 5. 2020   #2
-
0
-

sys.argv[1] znamená první příkaz na příkazové řádce při vyvolání programu
https://stackoverflow.com/…ng-in-script

#proc row < 7  protože se to počítá od nuly takže 0-6

line = ""   # co ma za vyznam  ... protože line se plní inkrementálně tak se musí v každým cyklu vynulovat

column = 0  # co ma za vyznam  ... protože column se zvyšuje inkrementálně tak se musí v každým cyklu vynulovat

hele ty fakt neznáš python ani trochu co ? hele ale asi se to budeš muset naučit no ...

vyextrahuje jednotlivé části kodu a otestuj si co dělá každý zvlášť ...

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:bdeb:caeb:f08c:ee1e...–
gna
~ Anonymní uživatel
1891 příspěvků
9. 5. 2020   #3
-
0
-

Bez urážky, ale to jinak nejde napsat - čím déle se Pythonu věnuješ, tím debilnější máš dotazy.

V tomhle programu je PŘESNĚ NULA věcí, které jsi ještě neřešil, všechno triviality a přesto nechápeš ani řádek.

Několik tvých přikladů z různých podle tebe nesrozumitelných knih jsem dohledával a nikdy tam nebylo nic k nepochopení. Tak si některou z nich opravdu přečti a nesyp sem každou ptákovinu, na kterou při náhodném listování narazíš.

A možná prostě máš diametrálně odlišný způsob myšlení a toto není pro tebe. Zkus jiný jazyk nebo obor.

Nahlásit jako SPAM
IP: 213.211.51.–
Pavel
~ Anonymní uživatel
383 příspěvků
9. 5. 2020   #4
-
0
-

Je tam par syntaktickych chyb (import, uvozovky) a ten kod urcite nic "nevyhvezdickuje".

timhle dosadis tak akorat za kazdou hvezdicku cislo

c = str(number)
line += c 
Nahlásit jako SPAM
IP: 46.13.186.–
gna
~ Anonymní uživatel
1891 příspěvků
9. 5. 2020   #5
-
0
-

Tady si to můžeš odkrokovat (s opravenými chybami)

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
11. 5. 2020   #6
-
0
-

Totální nepochopení programování a algoritmů.

Neschopnost si cokoliv najít sám a opsat to správně z knížky, 

Mě to připadá spíš jako úkol do školy.

V příkladu jsou věci co by student měl znát po pár základních lekcích.

V pythonu nedělám a nevšiml jsem si řešení od GNA, ale všechny chyby od překlepu v Importu přes špatné uvozovky po chyby v odsazení jsem měl vyřešené za necelých 5 minut.

Nahlásit jako SPAM
IP: 91.139.9.–
KIIV
~ Moderátor
+43
God of flame
12. 5. 2020   #7
-
0
-

Zdrojove kody ke knizkam jsou obvykle na netu k dispozici. Jestli je to ta spravna knizka tak si vsimni v sekci "Podrobné Informace" podsekce "Ke stažení". Tim ti odpadne problem ze nejsi schopnej opsat kod spravne.

Samozrejme anglictina by taky dost pomohla, hned bys vedel, ze ipmort je kravina a je to import (ikdyz import je docela zname slovo i v cestine).

Prvni lekce by asi mela byt spise "Jak pouzivat debugger", protoze neni nic lepsiho, nez si vypsat vsechny promenne, ktere ches sledovat (watches) a pote krokovat program a sledovat, co se stane.

Otazkou je, jestli by ti nevyhovovalo programovat v necem vice vizualnim, co neni pro zacatek vazano na naprosto presnou syntaxi, odsazeni a hlavne konkretni typy zavorek, uvozovek a tak (ano, jsou vselijake druhy, ale funguji jen ty prave jedine spravne). Neco jako https://makecode.microbit.org/, umi to zakladni simulaci vcetne pomaleho krokovani...

Mimochodem, asi je to spravna knizka:

#!/usr/bin/env python3
# Copyright (c) 2008-9 Qtrac Ltd. All rights reserved.
# This program or module is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. It is provided for educational
# purposes and is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.

import sys


Zero = ["  ***  ",
        " *   * ",
        "*     *",
        "*     *",
        "*     *",
        " *   * ",
        "  ***  "]
One = [" * ", "** ", " * ", " * ", " * ", " * ", "***"]
Two = [" *** ", "*   *", "*  * ", "  *  ", " *   ", "*    ", "*****"]
Three = [" *** ", "*   *", "    *", "  ** ", "    *", "*   *", " *** "]
Four = ["   *  ", "  **  ", " * *  ", "*  *  ", "******", "   *  ",
        "   *  "]
Five = ["*****", "*    ", "*    ", " *** ", "    *", "*   *", " *** "]
Six = [" *** ", "*    ", "*    ", "**** ", "*   *", "*   *", " *** "]
Seven = ["*****", "    *", "   * ", "  *  ", " *   ", "*    ", "*    "]
Eight = [" *** ", "*   *", "*   *", " *** ", "*   *", "*   *", " *** "]
Nine = [" ****", "*   *", "*   *", " ****", "    *", "    *", "    *"]

Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]

try:
    digits = sys.argv[1]
    row = 0
    while row < 7:
        line = ""
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            line += digit[row] + " "
            column += 1
        print(line)
        row += 1
except IndexError:
    print("použití: bigdigits.py <číslo>")
except ValueError as err:
    print(err, "v", digits)

A jeste spusteni:

pi@kiiv-pi:/tmp $ python3 bigdigits.py 6578
 ***  ***** *****  ***
*     *         * *   *
*     *        *  *   *
****   ***    *    ***
*   *     *  *    *   *
*   * *   * *     *   *
 ***   ***  *      ***
Nahlásit jako SPAM
IP: 78.80.17.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
12. 5. 2020   #8
-
0
-

Mozna by nebylo vubec od veci vyuzit https://www.onlinegdb.com/online_python_compiler

Jde v nem hlavne krokovat (kdyz zmacknes debug, tak pak v panelu pod kodem je step over.

Blbe je akorat to, ze Zero az Nine + Digits ten panel pekne zaserou a musis po kazdem kroku hledat promennou, co to zmenilo

Nicmene to nevypada na knizku pro uplneho zacatecnika. Uz jen pouziti dvou ruznych promennych s podobnym nazvem: Digits a digits  je priserna prasarna

Nahlásit jako SPAM
IP: 78.80.17.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 11 hostů

Podobná vlákna

Konzultace kodu, while — založil shockwave

Konzultace v C# — založil Ramisha

 

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