Diskuze: Start cyklu while v Pythoně

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V cyklech Tě zajímá výraz v podmínce cyklu, nic jiného. V tomto případě je výraz v podmínce True. Takový cyklus poběží do nekonečna, dokud jej explicitně neukončíme pomocí příkazu break. Proměnná x nikterak nesouvisí s řídící podmínkou cyklu ikdyž je uvnitř cyklu používána.
Celý kód jinak zapsaný může vypadat takto:
x = 1
while x < 50:
x += 1
print(f"hodnota x je {x}")
print("Program úspěšně skončil")
Při letmém pohledu je samozřejmě ukázkový úryvek kódu zbytečný, neboť se pouze inkrementuje hodnota proměnné do stanovené hodnoty, nic víc. Takový kód lze pak napsat takto:
x = 50
print(f"hodnota x je {x}")
print("Program úspěšně skončil")
Smyslem dotazu je ale spuštění cyklu na základě pravdivé podmínky. Výraz v podmínce je to, co způsobuje to zda cyklus poběží či nikoli.
Ohledně: "V cyklech Tě zajímá výraz v podmínce cyklu, nic jiného.
"
Podívej se prosím Lekce 6 Cykly v Pythonu. Máme tam kód:
print("Vítejte v kalkulačce")
pokracovat= "ano"
while (pokracovat== "ano"):
a = float(input("Zadejte první číslo: "))
b = float(input("Zadejte druhé číslo: "))
print("Vyberte jednu z požadovaných operací:")
print("1 - sčítání")
print("2 - odčítání")
print("3 - násobení")
print("4 - dělení")
operace = int(input(""))
if (operace == 1):
vysledek = a + b
................ i tak dál.
Mě je dost těžké pochopit jak mohu rozumět ten
while True:
V kódu výše je všechno jasně - tam je deklarovana podmínka `pokracovat=
"ano" ` ,
a pak, na je základě, se prodložuje kód
while (pokracovat== "ano"):
který se skončí znovu polem input
pokracovat= input("Přejete si zadat další příklad? [ano/ne]: ")
Tj. tady je jasně CO se spouští, CO dává cyklu příkaz START a cyklus
while
začíná pracovat.
Musím řict, že while True:
je dost těžké pochopit jako
příkaz START
.
Nehledej v tom nic složitého. Znovu, zajímá Tě pouze výraz v podmínce a to zda je pravdivý či nikoli. Pokud bude pravdivý, cyklus proběhne, pokud ne, řízení programu přejde do části za cyklem.
Pravdivá hodnota je jakákoli nenulová:
while True:
print("Toto je nekonečný cyklus s pravdivou podmínkou 'True'")
# Pro ukončení cyklu je třeba použít 'break' nebo jiný mechanismus
while 1:
print("Toto je nekonečný cyklus s pravdivou podmínkou '1'")
# Pro ukončení cyklu je třeba použít 'break' nebo jiný mechanismus
while -100:
print("Toto je nekonečný cyklus s pravdivou podmínkou '-100'")
# Pro ukončení cyklu je třeba použít 'break' nebo jiný mechanismus
while 1 + 5:
print("Toto je nekonečný cyklus s pravdivou podmínkou '1+5'")
# Pro ukončení cyklu je třeba použít 'break' nebo jiný mechanismus
x = 10
while x:
print(f"Toto je cyklus, který poběží, dokud je x={x} nenulové")
x -= 1
x = 10
while x < 100:
print(f"Hodnota x je {x} a cyklus bude pokračovat, dokud x<100")
x += 10
text = "Hello"
while len(text) > 0:
print(f"Zbývá {len(text)} znaků: {text}")
text = text[:-1]
x = 0
while x == 0:
print("Toto je cyklus s nulovou podmínkou 'x == 0'")
x += 1
atd.
A naopak, cyklus se přeskočí když výraz v podmínce bude nulový
flag = False
while flag:
print("Toto je cyklus s nulovou podmínkou 'flag'")
x = 0
while x:
print("Toto je cyklus s nulovou podmínkou 'x == 0'")
x += 1
x = 10
while False:
print("Toto je cyklus s nulovou podmínkou 'x == 10'")
x += 1
x = 10
while 0:
print("Toto je cyklus s nulovou podmínkou 'x == 10'")
x += 1
x = 10
while x == 0:
print("Toto je cyklus s nulovou podmínkou 'x == 0'")
x += 1
atd.
Dívej se pouze na podmínky cyklu. Obsahuje-li proměnnou, podívej, co je uvnitř proměnné. Pokud obsahuje prostý výraz (-100, False), stačí určit zda je tento výraz True. True nebo False je rovněž výraz, Výsledkem výrazu je True nebo False... Na základě výrazu se cyklus spustí nebo bude pokračovat, platí-li podmínka (výraz bude True). Přeskočí se, nebude-li podmínka platit (výraz bude False).
Velmi dobře. Tuto tabulku je nejlepší přidat do lekce pro
booleovské
výrazy. To umožňuje lepší pochopení
materiálu.
Ale mám otázku, chtěl bych jen upřesnit:
x = 10
while False:
print("Toto je cyklus s nulovou podmínkou 'x == 10'")
x += 1
Nulová podmínka tady je False
, ne?
A to samé zde:
x = 10
while 0:
print("Toto je cyklus s nulovou podmínkou 'x == 10'")
x += 1
Nulová podmínka tady je 0
, ne?
Příklady jsou namátkově vymyšlené a nejsou kompletní, ale pro pochopení to postačí.
Ano, u prvního úryvku kódu je výraz False a u druhého 0. Text uvnitř print je zavádějící. Smyslem bylo poukázat na to že ani u jednoho z úryvků kódu se neprovede cyklus while.
Zobrazeno 8 zpráv z 8.