Domácí úkol - Python. – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Domácí úkol - Python. – Python – Fórum – Programujte.comDomácí úkol - Python. – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Libor
~ Anonymní uživatel
90 příspěvků
22. 1. 2015   #1
-
0
-

Zdravím, 

najde se tu někdo kdo by mi udělal totálně jednoduchý úkol do programování se kterým si nevím rady?

Děkuji moc i za snahu. Vůbec netuším. :/

Vaším úkolem je napsat program, který ze souboru "zprava.txt" načte text a podle daného klíče ho zašifruje, vypíše a uloží pod názvem "zasifrovana(klíč).txt".

Šifrování znamená, že každé písmeno vstupního textu nahradíte písmenem, které je o zadané číslo dále v abecedě, například písmeno "a" pro zadané číslo 2 nahradí písmenem "c". Posun v abecedě je cyklický (tzn. po "Z" následuje"A" atd).

Klíč (input) může být zadaný dvěma způsoby:
1. celým číslem (kladným nebo záporným)
2. dvěma písmeny

Pokud uživatel zadá "a, c" (tedy 2. případ klíče), program prvně musí zjistit, o kolik by musel posunout písmeno "a", aby se dostal na písmeno "c". Z takového vstupu určí klíč jako 2 a výstup uloží jako "zasifrovana(2).txt". Musíte ovšem počítat s tím, že uživatel může zadat i "z, a", což znamená, že klíč určí jako -25 a výstup uloží jako "zasifrovana(-25).txt".

Používejte abecedu bez diakritiky! Ze vstupního textu diakritiku odstraňte a velká písmena převeďte na malá.

Nahlásit jako SPAM
IP: 88.103.160.–
Reklama
Reklama
hanpari0
Návštěvník
22. 1. 2015   #2
-
0
-

#1 Libor
Když je "totálně jednoduchý", tak proč si s ním nevíš rady?

Zkus zapojit mozek, tady máš částečné řešení:

 

def sifruj(klic, text):
    return "".join(chr(c if (96 < c < 123) else
                       (c%122+96) if c > 122 else c+26) for c in
                        map(lambda x: x+klic, text.encode()))

test = "abcxyz"
print(sifruj(2,test))
print(sifruj(-2, test))

#pro příliš malá nebo velká čísla je potřeba funkci doladit
print(sifruj(-102, test))
print(sifruj(500, test))
Nahlásit jako SPAM
IP: 178.72.234.–
hanpari0
Návštěvník
23. 1. 2015   #3
-
0
-

#1 Libor
Ještě doplním,

že to co potřebuješ jsou jen funkce chr, ord a open. To musíš zvládnout :)

Příklad:

for i in range(97,123):
	print("{} : {}".format(i,chr(i)))
Nahlásit jako SPAM
IP: 195.5.186.–
Libpr
~ Anonymní uživatel
1 příspěvek
23. 1. 2015   #4
-
0
-

Díky moc!. Je to asi super. Akorát mi to hlásí error s typy proměnných. :( Zkoušel jsem to dát na int, ale stejně to nejde.

Nahlásit jako SPAM
IP: 37.44.18.–
hanpari0
Návštěvník
23. 1. 2015   #5
-
0
-

#4 Libpr
Tak sem napiš svůj kód a když tak tu chybu. Možná si pleteš dvě věci. Ty funkce pracují takto:

ord("a") ==97

chr(97) == "a"

Tj. do chr dáváš číslo znaku, zatímco do ord samotný znak jako řetězec o délce 1.

Nahlásit jako SPAM
IP: 195.5.186.–
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, 18 hostů

Podobná vlákna

Domácí úkol — založil Ondra

Domáci úkol — založil Franta

Domácí úkol — založil Anonim

Domácí úkol — založil jelis

Domaci ukol — založil Jakub

 

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