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)
#

čtvrtek 20. prosince 2018

python private public protected

v pythonu nepouzivame jako v php private a protected
filozofie pythonu je
we are all adults
takze se pouzva dana konvence

public_variable    verejna
_protected_variable   chranena, muzu ji pouzivat v tride a dedicich
__private variable  muzu pouzivat je v sve tride, nesmi koncit dvoma podrzitky!

stejne je to i u trid a metod
takze
def __moje_tajna_laska():   je private metoda

def _moje_laska_ale_pujcte_si_ji(): je protected a muze byt dedena, ale ne volana mimo dedice