Vă prezentăm prima noastră structură de control. De obicei, computerul începe cu prima linie și apoi coboară de acolo. Structurile de control modifică ordinea în care sunt executate instrucțiunile sau decid dacă o anumită instrucțiune va fi rulată. Iată sursa unui program care utilizează structura de control while
:
a = 0 # ÎNTÂI, setați valoarea inițială a variabilei a la 0 (zero).
while a < 10: # În timp ce valoarea variabilei a este mai mică de 10, faceți următoarele:
a = a + 1 # Creșteți valoarea variabilei a cu 1, ca în: a = a + 1!
print(a) # Imprimați pe ecran care este valoarea actuală a variabilei a.
# REPETAȚI! până când valoarea variabilei a este egală cu 9!? Vezi nota.
# NOTĂ:
# Valoarea variabilei a va crește cu 1
# cu fiecare repetare sau buclă a „instrucțiunii while BLOCK”.
# de exemplu a = 1 apoi a = 2 apoi a = 3 etc. până la a = 9 apoi...
# codul va termina adăugarea 1 la a (acum a = 10), imprimând
# rezultatul și apoi ieșirea din „instrucțiunea while BLOCK”.
# --
# While a < 10: |
# a = a + 1 |<--[ Instrucțiunea while BLOCK ]
# print (a) |
# --
Și iată rezultatul extrem de interesant:
1 2 3 4 5 6 7 8 9 10
(Și ați crezut că nu se poate mai rău după ce v-ați transformat computerul într-un calculator de cinci dolari?)
Deci, ce face programul? Mai întâi vede linia a = 0
și setează a
la zero. Apoi vede while a < 10
: și astfel computerul verifică dacă a < 10
. Prima dată când computerul vede această afirmație, a
este zero, deci este mai mic decât 10. Cu alte cuvinte, atâta timp cât a
este mai mic de zece, computerul va rula filele în declarații. Acest lucru în cele din urmă face a
egal cu zece (prin adăugarea de unu la a
din nou și din nou) și cât timp a < 10
nu mai este adevărat. Ajungând în acel punct, programul va opri rularea liniilor indentate.
Nu uitați întotdeauna să puneți două puncte „:” la sfârșitul liniei de instrucțiune while
!
Iată un alt exemplu de utilizare a lui while
:
a = 1
s = 0
print('Enter Numbers to add to the sum.')
print('Enter 0 to quit.')
while a != 0:
print('Current Sum:', s)
a = float(input('Number? '))
s = s + a
print('Total Sum =', s)
Enter Numbers to add to the sum. Enter 0 to quit. Current Sum: 0 Number? 200 Current Sum: 200.0 Number? -15.25 Current Sum: 184.75 Number? -151.85 Current Sum: 32.9 Number? 10.00 Current Sum: 42.9 Number? 0 Total Sum = 42.9
Observați cum print('Total Sum =', s)
este rulat doar la sfârșit. Instrucțiunea while
afectează numai liniile care sunt indentate cu spații albe. !=
înseamnă nu este egal, deci
înseamnă, atâta timp cât
while a != 0:a
nu este zero, rulați instrucțiunile cu file care urmează.
Rețineți că a
este un număr în virgulă mobilă și nu toate numerele în virgulă mobilă pot fi reprezentate cu acuratețe, așa că utilizarea lui !=
pe ele nu poate funcționa uneori. Încercați să introduceți 1.1 în modul interactiv.
Bucle infinite sau buclă fără sfârșit
Acum că avem bucle while, este posibil să avem programe care rulează pentru totdeauna. O modalitate ușoară de a face acest lucru este să scrieți un program ca acesta:
while 1 == 1:
print("Help, I'm stuck in a loop.")
Operatorul „==” este folosit pentru a testa egalitatea expresiilor de pe cele două părți ale operatorului, la fel cum „<” a fost folosit pentru „mai puțin decât” înainte (veți obține o listă completă a tuturor operatorilor de comparație în capitolul următor ).
Acest program va obține Help, I'm stuck in a loop
. până la moartea termică a universului, sau îl oprești, pentru că 1 va fi totdeauna egal cu 1. Modul de a-l opri este să apeși butonul Control (sau Ctrl) și C (litera) în același timp. Acest lucru va ucide programul. (Notă: uneori va trebui să apăsați enter după Control-C.) Pe unele sisteme, nimic nu îl va opri, cu excepția uciderii procesului – așa că evitați!
Exemple
Secvența Fibonacci
Fibonacci-metoda1.py
# Acest program calculează șirul lui Fibonacci
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
count = count + 1
print(a, end=" ") # Observați magic end=" " din argumentele funcției de imprimare
# care îl împiedică să creeze o nouă linie.
old_a = a # trebuie să ținem evidența lui a când îl schimbăm.
a = b
b = old_a + b
print() # gets a new (empty) line.
Ieșire:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Rețineți că rezultatul este pe o singură linie din cauza argumentului suplimentar end=” ” din argumentele de tipărire.
Fibonacci-method2.py
# Metodă simplificată și mai rapidă de calculare a succesiunii Fibonacci
a = 0
b = 1
count = 0
max_count = 10
while count < max_count:
count = count + 1
print(a, b, end=" ") # Notice the magic end=" "
a = a + b
b = a + b
print() # gets a new (empty) line.
Ieșire:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Fibonacci-method3.py
a = 0
b = 1
count = 0
maxcount = 20
#once loop is started we stay in it
while count < maxcount:
count += 1
olda = a
a = a + b
b = olda
print(olda,end=" ")
print()
Ieșire:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Introdu parola
Password.py
# Așteaptă până când a fost introdusă parola. Folosește Control-C pentru a ieși fără
# parola
#Rețineți că aceasta nu trebuie să fie parola, astfel încât
# bucla while rulează cel puțin o dată.
parola = str()
# rețineți că != înseamnă nu este egal
while password != "unicorn":
password = input("Password: ")
print("Welcome in")
Exemplu de rulare:
Password: auo Password: y22 Password: password Password: open sesame Password: unicorn Welcome in
Exerciții
Scrieți un program care să solicite utilizatorului un nume de conectare și o parolă. Atunci, când cineva scrie „lock”, să-și introducă numele și parola pentru a debloca programul.
name = input("What is your UserName: ")
password = input("What is your Password: ")
print("To lock your computer type lock.")
command = None
input1 = None
input2 = None
while command != "lock":
command = input("What is your command: ")
while input1 != name:
input1 = input("What is your username: ")
while input2 != password:
input2 = input("What is your password: ")
print("Welcome back to your system!")
Dacă doriți ca programul să ruleze continuu, adăugați doar un
: bucla în jurul întregului lucru. Va trebui să indentați restul programului atunci când adăugați acest lucru în partea de sus a codului, dar nu vă faceți griji, nu trebuie să o faceți manual pentru fiecare linie! Doar evidențiați tot ceea ce doriți să indentați și faceți clic pe „Indent” sub „Format” în bara de sus a ferestrei Python.
while 1 == 1
Un alt mod de a face acest lucru ar putea fi:
name = input('Set name: ')
password = input('Set password: ')
while 1 == 1:
nameguess=""
passwordguess=""
key=""
while (nameguess != name) or (passwordguess != password):
nameguess = input('Name? ')
passwordguess = input('Password? ')
print("Welcome,", name, ". Type lock to lock.")
while key != "lock":
key = input("")
Observați or
în while (nameguess != name) or (passwordguess !=
, pe care nu le-am introdus încă. Probabil vă puteți da seama cum funcționează.
password)
Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu
Lasă un răspuns