sobota 2. února 2019

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Bohuslav Holcek
# @Date:   2019-02-02 21:24:06
# @Last Modified time: 2019-02-02 22:58:03
# @Email: tisovak@gmail.com
# @License GPL
# run mypy dany soubor pro statickou analyzu
##################################################

import abc  # zavolame modul pro abstract metody


##
# @brief      abstraktni trida
##
class Total(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    #
    # @param      self  The object
    #
    # @return     { nevraci nic je abstraktni }
    #
    def tiskni(self) -> None:  # tady je type hinting
        pass

    @abc.abstractmethod
    def tiskniHezky(self) -> None:
        pass


class Hlavni(Total):
    """
    Tato trida vychazi z abstraktni tridy Total
    """

    ##
    # @brief      Constructs the object.
    ##
    # @param      self  The object
    # @param      meno  The meno
    ##
    def __init__(self, meno: str):
        self.meno = meno

    ##
    # @brief      { budeme tisnkout }
    ##
    # @param      self  The object
    ##
    # @return     { Nevraci zadnou hodnotu vynucene }
    ##
    def tiskni(self) -> None:
        print(self.meno)

    ##
    # @brief      { a jeste jednu funkci jen tak pro radost}
    ##
    # @param      self  The object
    ##
    # @return     { Taky zadna navratova hodnota vynucene z abc }
    ##
    def tiskniHezky(self) -> None:
        print("mame")


mama = Hlavni("jozef")
mama.tiskni()


##
# @brief      A jeste aby byla sranda to zkusime na dalsi tride
##
class Dedic(Total):

    ##
    # @brief      { jeste jedna trida ktera vychazi z Total }
    ##
    # @param      self  The object
    ##
    # @return     { Nic }
    ##
    def __init__(self, meno: str):
        self.meno = meno

    def tiskniHezky(self) -> None:
        print(self.meno + "hezky")

    def tiskni(self) -> None:
        print(self.meno)


tata = Dedic("kamarad ze skoly")
tata.tiskniHezky()



neděle 30. prosince 2018

idiomatic array input

# a dictionary, it's a list of (key : value) pairs (eg. "Maths" : 34)
marks = {}
subjects = ["jmeno", "prijmeni", "vek", "pohlavi", "work"]  # this is a list

# here we populate the dictionary with the marks for every subject
for subject in subjects:
    marks[subject] = input("Enter the " + subject + " marks: ")
print(marks)

sobota 29. prosince 2018

otevrit soubor, nahradit retezec a zavrit soubor v python3


old = '    \'params\' => ['
new = '''    \'params\' => [
        \'param:gdpr\' => true,'''
f = open('file.php', 'r')  # otevreme soubor pro cteni
m = f.read()  # m je ted jeden retezec celeho souboru
f.close()  # zavreme soubor

new_lines = m.replace(old, new)  # nahradime stare za nove
r = open('file.php', 'w')  # otevreme soubor pro zapis
r.write(new_lines)  # zapiseme obsah do souboru
r.close()  # a soubor zavreme
a dany kod si rozebereme
nejdrive pro jednodussi manipulaci vytvorime dve promenne old and new. je pekne jak python pracuje s mezerama atd. da se to pekne vyuzit
problem s otevrenim a zavrenim stejneho souboru je slozitejsi nez sem myslel, proste to funguje tak ze otevreme soubor na cteni, pak ulozime jeho obsah a pak je zavreme. pak vytvorime novy obsah a pak otevreme pro zapis a ulozime novy obsah.  a pak zavreme.
m = f.read()  nacte obsah celeho souboru do jedineho retetzce m
new_lines = m.replace(old, new) toto je zapis platny pro python3

čtvrtek 27. prosince 2018

spousteni php-cli v pythonu

narazil jsem na problem ze jsem v pythonu chtel spustit prikaz ktery byl ve skutecnosti php-cli command. a narazil jsem na tento problem



the input device is not a TTY



vyzkousel jsem
os.system, os.popen,.subprocess.run
etc a vysledek stale stejny...

dost jsem se s tim natrapil az jsem nasel reseni v instalaci balicku


sudo apt-get install expect-dev
 a pak pouzivani takto
unbuffer -p a dany prikaz c php-cli


středa 26. prosince 2018

formatovani kodu na blogspot


jak vkladat kusy kodu sem na blogspot.

toto je jedno z reseni

toto dame na uvod prispevku kde chceme formatovat kod.
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>


a pak pri pouziti kodu nekde  tak pak toto


<pre class="prettyprint lang-html">
muj kod

</pre>
muzeme pouzivat ruzne jazyky, takze pro python to bude
<pre class="prettyprint lang-py">
mozne jazyky jsou:
"bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java",
   "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml",
    "xsl".

python constatnty

V pythonu nenajdeme constatnty tak jak je znamy priklad z php takze neco jako SOUBOR = "log.tmp" v pythonu nenajdeme, aspon ne tak aby se to chovalo stejne cize aby se konstanta nedala nikde menit. po prostudovany hromady kodu a spusobu jak to lidi resi, se mi nejvice zalibilo toto reseni celeho problemu

def SOUBOR():

    return("log.tmp")



a pak pouzivame SOUBOR()



nebo v tridach

def SOUBOR(self):



    return("log.tmp")





self.JMENO_SOUBORU()

úterý 25. prosince 2018

Python slovniky



#!/usr/bin/python
# vytvorime slovnik(DICTIONARY)
seznam = {"name": "name",
          "id_uniqe": "mama",
          "starty": {},
          "zastavky": {1: {}}  # vnoreny seznam
          }
#  klic v slovniku muze byt retezec nebo cislo
#--------------------------------------------------
seznam.setdefault('id', "JOJO")
#  ^ setdefault , kdyz nenajde dany klic v seznam tak ho vlozi i z hodnotou
# do seznamu. Kdyz dany klic v seznamu najde tak neudela nic
print(seznam)
#  ted vypise {'name': 'name', 'id_uniqe': 'mama',
# 'starty': {}, 'zastavky': {1: {}}, 'id': 'JOJO'}
#---------------------------------------------------
print(seznam.get('name', "MAMA"))
#  ^ vypise MAMA jestli dany klic neexistuje jestli existuje tak se vypise
#  hodnota ktera je v klici
#  -------------------------------------------------
print(seznam.items())  # vypise jako tuple seznam (klic:hodnota)
#----------------------------------------------------
#             UPDATE MERGE
#
seznam2 = {'name': 'kote', 'bebe': 'ILGU'}  # novy seznam
seznam.update(seznam2)
# update prida do seznamu seznam2, jestli je klic i v seznamu2
# tak bude v seznamu prepsan
print(seznam)
seznam.update(dalsi=3)  # pridame klic 'dalsi' z hodntou 3.
print(seznam)
seznam3 = {"kamo": "jedes", "dop": "irepo"}
z = {**seznam, **seznam3}  # python3 a vyse, todle je update seznamu
print(z)
# dalsi spusob pro python3.5 a nize
D = seznam.copy()
D.update(seznam3)
print(D)
#