soubor = open("soubor.txt", mode="r", encoding='utf-8')
novy_soubor = open("soubor2.txt", mode="w", encoding='utf-8')
for text in soubor:
novy_soubor.write(text)
print ("Soubor zkopírován.")
soubor.close()
novy_soubor.close()
with open("soubor.txt", mode="r", encoding='utf-8') as soubor:
with open("soubor2.txt", mode="w", encoding='utf-8') as novy_soubor:
novy_soubor.write(soubor.read())
print ("Soubor zkopírován.")
Proč se tolik opakovat, když můžeme počet pokusů použít přímo, převést jej na řetězec a jen připojením přípony z něj udělat název souboru?
def vykresliPanacka(pocet_pokusu):
"Funkce na základě neúspěšných pokusů vypisuje obrázky, dokud hra neskončí."
if pocet_pokusu == 1:
vstup=open("1.txt", encoding='utf-8')
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 2:
vstup=open("2.txt", encoding='utf-8')
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 3:
vstup=open("3.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 4:
vstup=open("4.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 5:
vstup=open("5.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 6:
vstup=open("6.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 7:
vstup=open("7.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 8:
vstup=open("8.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
elif pocet_pokusu == 9:
vstup=open("9.txt")
obrazek = vstup.read()
print(obrazek)
else:
vstup=open("10.txt")
obrazek = vstup.read()
print(obrazek)
vstup.close()
print ("Konec hry, prohrál jsi!")
def vykresliPanacka(pocet_pokusu):
"Funkce na základě neúspěšných pokusů vypisuje obrázky, dokud hra neskončí."
with open(str(pocet_pokusu) + ".txt", encoding='utf-8') as soubor:
print(soubor.read())
def vyplnZnak(hadanka, znak, tajneSlovo):
for index in range(len(tajneSlovo)):
if znak == tajneSlovo[index]:
hadanka = hadanka[:index] + znak + hadanka[index + 1:]
return hadanka
.txt
{ "data": { "sessionMaterial": { "id": "session-material:2019/pyladies-ostrava-jaro:file:4", "title": "Zpětná vazba k domácím projektům", "html": "\n \n \n\n <div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h1>Feedback k domácím projektům</h1>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Použití <em>with</em></h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<ul>\n<li><em>with</em> nám může ušetřit práci i starosti s přemýšlením nad uzavřením otevřeného souboru</li>\n<li>čtení celého souboru nemusíme dělat jen přes cyklus for, ale můžeme jej přečíst celý najednou metodou <em>.read()</em></li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In [ ]:</div>\n<div class=\"inner_cell\">\n <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">soubor</span> <span class=\"o\">=</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"soubor.txt"</span><span class=\"p\">,</span> <span class=\"n\">mode</span><span class=\"o\">=</span><span class=\"s2\">"r"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span>\n<span class=\"n\">novy_soubor</span> <span class=\"o\">=</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"soubor2.txt"</span><span class=\"p\">,</span> <span class=\"n\">mode</span><span class=\"o\">=</span><span class=\"s2\">"w"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span>\n\n<span class=\"k\">for</span> <span class=\"n\">text</span> <span class=\"ow\">in</span> <span class=\"n\">soubor</span><span class=\"p\">:</span>\n <span class=\"n\">novy_soubor</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">text</span><span class=\"p\">)</span> \n\n<span class=\"nb\">print</span> <span class=\"p\">(</span><span class=\"s2\">"Soubor zkopírován."</span><span class=\"p\">)</span>\n\n<span class=\"n\">soubor</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n<span class=\"n\">novy_soubor</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n</pre></div>\n\n </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In [ ]:</div>\n<div class=\"inner_cell\">\n <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">with</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"soubor.txt"</span><span class=\"p\">,</span> <span class=\"n\">mode</span><span class=\"o\">=</span><span class=\"s2\">"r"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span> <span class=\"k\">as</span> <span class=\"n\">soubor</span><span class=\"p\">:</span>\n <span class=\"k\">with</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"soubor2.txt"</span><span class=\"p\">,</span> <span class=\"n\">mode</span><span class=\"o\">=</span><span class=\"s2\">"w"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span> <span class=\"k\">as</span> <span class=\"n\">novy_soubor</span><span class=\"p\">:</span>\n <span class=\"n\">novy_soubor</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">soubor</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">())</span> \n<span class=\"nb\">print</span> <span class=\"p\">(</span><span class=\"s2\">"Soubor zkopírován."</span><span class=\"p\">)</span>\n</pre></div>\n\n </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Ukázkový příklad porušení DRY</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>Proč se tolik opakovat, když můžeme počet pokusů použít přímo, převést jej na řetězec a jen připojením přípony z něj udělat název souboru?</p>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In [ ]:</div>\n<div class=\"inner_cell\">\n <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">vykresliPanacka</span><span class=\"p\">(</span><span class=\"n\">pocet_pokusu</span><span class=\"p\">):</span>\n <span class=\"s2\">"Funkce na základě neúspěšných pokusů vypisuje obrázky, dokud hra neskončí."</span>\n <span class=\"k\">if</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">1</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"1.txt"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">2</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"2.txt"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">3</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"3.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">4</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"4.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">5</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"5.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">6</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"6.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">7</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"7.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">8</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"8.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"k\">elif</span> <span class=\"n\">pocet_pokusu</span> <span class=\"o\">==</span> <span class=\"mi\">9</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"9.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"k\">else</span><span class=\"p\">:</span>\n <span class=\"n\">vstup</span><span class=\"o\">=</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">"10.txt"</span><span class=\"p\">)</span>\n <span class=\"n\">obrazek</span> <span class=\"o\">=</span> <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">obrazek</span><span class=\"p\">)</span>\n <span class=\"n\">vstup</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n <span class=\"nb\">print</span> <span class=\"p\">(</span><span class=\"s2\">"Konec hry, prohrál jsi!"</span><span class=\"p\">)</span>\n</pre></div>\n\n </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In [ ]:</div>\n<div class=\"inner_cell\">\n <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">vykresliPanacka</span><span class=\"p\">(</span><span class=\"n\">pocet_pokusu</span><span class=\"p\">):</span>\n <span class=\"s2\">"Funkce na základě neúspěšných pokusů vypisuje obrázky, dokud hra neskončí."</span>\n <span class=\"k\">with</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"n\">pocet_pokusu</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"s2\">".txt"</span><span class=\"p\">,</span> <span class=\"n\">encoding</span><span class=\"o\">=</span><span class=\"s1\">'utf-8'</span><span class=\"p\">)</span> <span class=\"k\">as</span> <span class=\"n\">soubor</span><span class=\"p\">:</span>\n <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">soubor</span><span class=\"o\">.</span><span class=\"n\">read</span><span class=\"p\">())</span>\n</pre></div>\n\n </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Šibenice a vyplnění jednoho znaku do hádaného slova</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In [5]:</div>\n<div class=\"inner_cell\">\n <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"k\">def</span> <span class=\"nf\">vyplnZnak</span><span class=\"p\">(</span><span class=\"n\">hadanka</span><span class=\"p\">,</span> <span class=\"n\">znak</span><span class=\"p\">,</span> <span class=\"n\">tajneSlovo</span><span class=\"p\">):</span>\n <span class=\"k\">for</span> <span class=\"n\">index</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">tajneSlovo</span><span class=\"p\">)):</span>\n <span class=\"k\">if</span> <span class=\"n\">znak</span> <span class=\"o\">==</span> <span class=\"n\">tajneSlovo</span><span class=\"p\">[</span><span class=\"n\">index</span><span class=\"p\">]:</span>\n <span class=\"n\">hadanka</span> <span class=\"o\">=</span> <span class=\"n\">hadanka</span><span class=\"p\">[:</span><span class=\"n\">index</span><span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"n\">znak</span> <span class=\"o\">+</span> <span class=\"n\">hadanka</span><span class=\"p\">[</span><span class=\"n\">index</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">:]</span>\n <span class=\"k\">return</span> <span class=\"n\">hadanka</span>\n</pre></div>\n\n </div>\n</div>\n</div>\n\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Drobnosti</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<ul>\n<li>Dokumentační řetězce se píšou hned pod název funkce a nikde jinde</li>\n<li>Nepoužívat kapitálky pro názvy proměnných. Většinou to není potřeba.</li>\n<li>Soubor nemusí mít příponu a rozhodně to nemusí být vždy <code>.txt</code></li>\n<li>Používání knihoven pro kopírování souborů nebylo cílem, ale snaha se cení.</li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Martinovy prosby</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<ul>\n<li>Nebalte do archívů každou úlohu zvlášť. Jeden archiv bohatě postačí.</li>\n<li>Neposílejte nám složky s virtuálním prostředím.</li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2>Obecné rady, pochvaly a doporučení</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n</div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<ul>\n<li>Velká pochvala za úkoly na githubu</li>\n<li>Pochvala za hledání pomoci na internetu a používání nových věcí</li>\n<li>Pochvala těm, kdo měli obrázky šibenice a japonské abecedy ve zvláštním souboru a ne přímo v kódu</li>\n<li>Pochvala za psaní komentářů k funkcím a složitějšímu kódu</li>\n</ul>\n</div>\n</div>\n</div>\n \n\n\n\n\n " } } }