Înainte de gândire despre cum să pună în aplicare acest lucru în Python (sau orice limbă) vă permite uita-te la pseudocod, care arată ca un plan destul de bun pentru a rezolva problema.
Mi - ar ghici ca un lucru s-ar putea fi obtinerea blocat pe este modul în care face referire la pseudocod variabile , cum ar fi highși low. Modul de a înțelege variabile este de a le considera sloturi că valorile pot fi stocate. La un moment dat, o variabilă are o anumită valoare, cum ar fi numărul 5, sau o trimitere la un fișier deschis. Această valoare poate fi convocată în orice moment , folosind numele său, sau poate fi dat o nouă valoare prin atribuirea acestuia, iar vechea valoare va fi uitat cu noua valoare a lua locul.
Pseudocodul face referire la trei variabile, high, lowși tries. De asemenea, vă spune ce ar trebui să fie valorile lor inițiale. După a doua linie a executat, aceste valori sunt setate la 1000, 1 și 1, respectiv, dar ele iau valori noi pe măsură ce programul avansează.
O altă caracteristică a pseudocod este o buclă condiționată, precum și o analiză de caz introduse de utilizator. Traducerea dvs. a buclei pseudocod este incorectă. În cazul dumneavoastră, ați creat o nouă variabilă, iși - au instruit programul pentru a rula corpul buclei cu fiecare valoare a lui i între 1 și 1000. Evident , acest lucru nu are o mulțime de a face cu pseudocod.
În schimb ceea ce vrei să faci este bucla pentru totdeauna, până la o anumită stare (care se schimbă în corpul buclei) devine falsă. În piton, whiledeclarația face acest lucru. Dacă sunteți familiarizat cu o ifdeclarație, whilearată la fel, dar după ce corpul se face, condiția este reevaluată , iar corpul este executat din nou , dacă este încă adevărat.
În cele din urmă, analiza de caz în corpul buclei necesită compararea ceva de așteptat valori. Deși unele alte limbi au un număr de modalități de a exprima acest lucru, în Python avem doar if- elif- elseclauze.
In afara de transformare a pseudocod codului de lucru, este, probabil, util pentru a înțelege ceea ce programul este, de fapt face. Cheia aici este pe linia 4, în cazul în care programul ghicește media a două valori. după care programul acționează asupra cât de bine ghici lucrat.
În prima rulare prin bucla, cu care highconține 1000 și lowconținând 1, media este de 500 ( de fapt , media este de 500.5, dar din moment ce suntem o medie de numere întregi, Ghiciri python pe care vrem rezultatul diviziunii să fie , de asemenea , un număr întreg ). Evident că ghici are doar o șansă de 0,1% de a fi drept, dar dacă este greșit, utilizatorul este de așteptat să ne spună dacă era prea mare sau prea mică. Oricum, acest răspuns elimina complet de 50% din posibile presupuneri.
În cazul în care, de exemplu, utilizatorul se gândea la un număr redus, atunci când programul de ghicit 500, utilizatorul ar spune programul pe care 500 a fost prea mare, iar apoi programul nu ar fi vreodată să ghicească că numărul a fost în gama de 501 până la 1000. Acest lucru poate salva calculatorul o mulțime de muncă.
Pentru a pune aceste informații pentru a utiliza, programul ține evidența intervalului de valori posibile numărul obiectiv ar putea fi. Când numărul ghicit este prea mare, programul reglează limita superioară în jos, chiar sub ghici, iar dacă ghici era prea mică, programul reglează de jos în sus legat chiar deasupra ghici sale.
În cazul în care programul ghicește din nou, ghici este chiar în mijlocul intervalului posibil, reducerea intervalului în jumătate din nou. Numărul de posibile presupuneri a trecut de la original 1000 la 500 într-o singură presupunere, la 250 în două presupuneri. În cazul în care programul are noroc teribil, și nu se poate obține două (care este de fapt destul de probabil), apoi de-al treilea, are doar 125 de numere de la stânga să vă faceți griji. După a patra ghici, numai 62 numere rămân în raza de acțiune. Acest lucru continuă, și după opt presupuneri, numai 3 numere rămân, iar programul încearcă numărul de mijloc pentru a noua ghici. În cazul în care se dovedește a fi greșit, doar un singur număr este lăsat, iar programul îl ghicește!
Această tehnică de divizare un interval în jumătate și apoi continuând jumătate mai aproape este numit de împărțire în două și apare într - o largă gamă de subiecte de interes pentru știința calculatoarelor.
Ce zici de un cod! Din moment ce eu nu vreau să vă lipsească de experiența de învățare, am să vă dau doar câteva fragmente pe care le-ar putea ajuta de-a lungul. Python este un limbaj conceput pentru explorare interactivă, așa că pornim interpretul dumneavoastră și să dea acest lucru o șansă. Voi fi postați exemple cu instrucțiunile afișate, de fapt, nu de tip asta.
Iată un exemplu folosind whileclauza:
>>> x = 1000
>>> while x > 1:
... x = x/2
... print x
...
500
250
125
62
31
15
7
3
1
>>> x
1
Obținerea de intrare consola de utilizator ar trebui să se facă prin intermediul raw_input()funcției. Se returnează doar indiferent de tipurile de utilizatori. Acesta este un pic mai greu pentru a arăta. Pentru a simplifica lucrurile, după fiecare linie de piton , care necesită intrare, o să tip „Hello World!“ (fără ghilimele)
>>> raw_input()
Hello World!
'Hello World!'
>>> y = raw_input()
Hello World!
>>> print y
Hello World!
>>>
Cum despre unele combinarea conceptelor!
>>> myvar = ''
>>> while myvar != 'exit':
... myvar = raw_input()
... if myvar == 'apples':
... print "I like apples"
... elif myvar == 'bananas':
... print "I don't like bananas"
... else:
... print "I've never eaten", myvar
...
apples
I like apples
mangoes
I've never eaten mangoes
bananas
I don't like bananas
exit
I've never eaten exit
>>>
Hopa. pic de un bug acolo. Vezi dacă poți repara!