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

debugovani php a v pythonu

obcas se nam stane ze program nam nefunguje jak jsme si mysleli a je moc sloziti na to aby jsme dokazali jasne identifikovat kde je chyba.
k tomu je dobre pouzivat

file_put_contents("/tmp/roaming.log", var_export($_POST, true), FILE_APPEND);

to stejne muzeme udelat pythonu:

with open("file.txt", "a") as f:

    f.write(promenna + "\n")

promenna musi byt string

python3 muj tahak

takze hezky od zacatku.
hodne prace aspon ze zacatku delame z funkci print od verze 3 ma tento zapis
print("")
pripadne formatovani promnenich
kamarad = " pepa nos z trutnova"
print("ahoj {}".format(kamarad))

a jedeme dale. velice sikovan vec je, kdyz potrebujeme vstup od uzivatele, bud budeme psat slozite konstrukce na to aby jsme dosahli kontroly nad vstupnima datama atd. lepsi je importovat
argparse

pak jednoduchi spusob definice

ap = argparse.ArgumentParser(description='search in themes description and give it you a theme_config')
ap.add_argument("-s", required=True,
help="string for search")
args = vars(ap.parse_args())

ted dany program volame a musime mu zadat -s a string. jinak bude vypisoat hezkou napovedu a to vse udelal za nas.
navic dostaneme pristup k promene args['s']
kterou muzeme hezky kontrolovat jestli je nastavena

if args["s"]:




python3 sublime text

Tak po dlouhe dobe sem pustil opet do pythonu....
Toto je muj poznamkovy blok..
pouzivam sublime a k tomu mam nainstalovane dane balicky na podporu programovani v pythonu

Anaconda

doxydoxygen

PyYapf formater

sublime-linter-flake8


formatovani dat

pouzivam z menu doxygen document all