Zdravim učim sa z pythonom a hned na začiatok som si vymyslel podla všetkého niečo trocha zložitejši
Ak by som Vás mohol poprosiť o radu a niake vysvetlenie kde robím chybu dakujem
OS = raw_input ("Pre operačný systém Ubuntu 14.04 a vyžšie zvol U ak KILI zvol K:")
while OS == "U":
Ubuntu = raw_input ("inštalácia programov: Airmon-ng , airodump-ng , reaver ? A-Ano, N-nie:")
if Ubuntu == "A":
subor = open("uvod2.py","a")
subor.write ("sudo apt-get install libpcap-dev libsqlite3-dev reaver aircrack-ng")
subor.close()
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
break
elif Ubuntu == "N" :
subor = open("uvod2.py","a")
subor.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Ako super o to menej\"")
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
break
while OS == "K":
subor = open("uvod2.py","a")
subor.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Ako super o to menej\"")
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
print "Pri KALI by maly byt všetky programy naištalované."
break
pointa je teraz ked sa pita rvú otázku Ubuntu alebo kali tak ked zadam niečo ine tak sa neviem dostať na to aby ma to poslalo naspať a mohli by sa uriť iba U/K. No pri druhej otázke sa mi to podarilo aj ked nerozumien tomu preči je to tak ale podarilo :D dakujem za pomoc a navedenie k správnemu riešeniu
Logika!
1. nemas zavrenej subor1.
2. Co podle tebe dela kod?
while OS == "U":
Ubuntu = raw_input ("A-Ano, N-nie?")
if Ubuntu == "A":
break
if Ubuntu == "N":
break
Opakuj, dokud OS = U. Takze, kdyz ted uzivatel zmackne X misto a nebo N, tak cyklus skonci. A kdyz zmackne A, tak break cyklus taky ukonci. Jaka podminka tam tedy musi byt, aby se cyklus neukoncil pri jine klavese nez je U?
Návod som dostal ale aj tak nerozumiem tomu používanie while prečítal som o tom už niekoľko článkov a neviem tomu pochopiť vôbec. (asi bude chyba medzi klávesnicou a stoličkou :D )
ale kód som upravil takto a funguje:
OS = raw_input ("Pre operačný systém Ubuntu 14.04 a vyžšie zvol U ak KILI zvol K:")
while OS not in set(["U", "K"]):
OS = raw_input ("Pre operačný systém Ubuntu 14.04 a vyžšie zvol U ak KILI zvol K:")
while OS == "K":
subor = open("uvod2.py","a")
subor.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Ako super o to menej\"")
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
print "Pri KALI by maly byt všetky programy naištalované."
break
if OS == "U":
Ubuntu = raw_input ("Inštalácia programov: Airmon-ng , airodump-ng , reaver ? A-Ano, N-nie:")
while Ubuntu not in set(["A", "N"]):
Ubuntu = raw_input ("Inštalácia programov: Airmon-ng , airodump-ng , reaver ? A-Ano, N-nie:")
if Ubuntu == "A":
subor = open("uvod2.py","a")
subor.write ("sudo apt-get install libpcap-dev libsqlite3-dev reaver aircrack-ng")
subor.close()
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
subor1.close()
break
while Ubuntu == "N":
subor = open("uvod2.py","a")
subor.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Ako super o to menej\"")
subor.close()
subor1 = open("uvod3.py","a")
subor1.write ("#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nprint \"Prepnutie sietovej karty do sledovacieho modu:\"\npokracovanie = raw_input (\"Pre pokračovanie slač Enter:\")")
subor.close()
break
Najskôr inicializujeme premennú i na 1. Nastavenie počiatočnej hodnoty riadiacej premennej cyklu while predstavuje veľmi dôležitý prvý krok.
Potom začneme vykonávať samotný príkaz while. V ňom sa vyhodnocuje boolovký výraz.
Pokiaľ je výsledkom výrazu hodnota True, docháza k vykonaniu nasledujúceho odsadeného bloku. V tomto prípade nadobúda premenná i hodnoty menšie než 10, takže zahájime vykonávanie bloku kódu.
Vykoná sa príkaz print, ktorý vytlačí prvé číslo (1).
Na ďalšom riadku sa zvyšuje (inkrementuje) hodnota riadiacej premennej i. V tomto prípade je to posledný rovnako odsadený riadok, čo znamená, že blok cyklu while končí.
Vraciame sa opäť k príkazu while a vykonávame kroky 4 až 6, vždy s novými hodnotami premennej i.
Uvedená postupnosť akcií sa opakuje až do doby, keď i dosiahne hodnotu 11.
V tom okamžiku vráti test cyklu while hodnotu False a vykonávanie odsadeného bloku sa prekočí. Pokračovať sa bude riadkom, ktorý má rovnaké odsadenie, ako riadok s príkazom while.
V tomto prípade žiadne ďalšie riadky nenasledujú, takže program skončí.
OS not in set(["U", "K"])
V tvojom prípade vyhodnocuješ v boolovskom výraze či sa hodnota premennej OS nenachádza v množine {U, K}.
Ježiš jasne už viem o čo ide ja som si to stále komplikoval použitím if,else ..... .
Preto mi nedával zmysel poriadne ani ten vzorec čo si uviedol ti.
Je jasne že sa mi to pomiešalo a na miesto toho aby som riešil while ako samotný príkaz som si sám v hlave ho podmieňovaľ používaním daľších príkazov preto mi to nedávalo zmysel.
Tak skúsim ešte jednu otázku:
používam Ubuntu a KALI
Ked pišem v pythone chcel by som dosiahnuť aby som mohol použiť príkaz z terminálu napr:
sudo apt-get install ......
alebo iný a python by ho dal vykonať počkal by na jeho ukončenie a program by dalej pokračoval da sa to vôbec.
v C sa som mal tendenciu sa učiť tiež ale niekde som čítal že python je jednoduchý na naučenie a potom už nerobí problém sa preorientovať na iný jazyk.