Átalakítás játék pszeudo kódot python

szavazat
1

Tedd a számítógépet kitalálni egy számot, amely a felhasználó úgy dönt 1 és 1000 között nem több mint 10 guesses.This hozzárendelés egy algoritmus az úgynevezett bináris keresés. Miután minden találgatás, az algoritmus csökkenti a számos lehetséges választ keresni a felét. Pszeudokódját a teljes programot alább megadott a feladat az, hogy átalakítsuk azt egy működő python programot. A program elindításához nyomtatásával utasításokat a képernyőn, kifejtve, hogy a felhasználó válasszon egy számot 1 és 1000 között, és a számítógép hiszem, nem több, mint 10 próbálkozás. Ezután elindítja tippelgetni, és mindegyik után hiszem, hogy arra kéri a felhasználót visszajelzést. A felhasználó figyelmét fel kell hívni, hogy adja meg -1, ha a becslés kell lennie alacsonyabb, 0, ha igaza van, és 1, ha kell lennie higher.When a program kitalálja rendesen, meg kell jelenteni, hogy hány találgatások volt szükség. Ha a felhasználó érvénytelen választ, az utasításokat meg kell ismételni, és a felhasználó újból próbálkozhat.

pszeudókód

- Print instructions to the user  
-Start with high = 1000, low = 1, and tries = 1 
- While high is greater than low   
  - Guess the average of high and low  
  - Ask the user to respond to the guess  
  - Handle the four possible outcomes:  
    - If the guess was right, print a message that tries guesses were required and quit the program
    - If the guess was too high, set high to one less than the guess that was displayed to the user and increment tries  
    - If the guess was too low, set low to one more than the guess that was displayed to the user and increment tries
    - If the user entered an incorrect value, print out the instructions again
- high and low must be equal, so print out the answer and the value of tries

Kell egy kis komoly segítséget! Nem értem minden ez a cucc egyáltalán! Ez minden, amit

def main(x, nums, low, high):
        input(Enter -1 if the guess needs to be lower, 0 if the guess was right, or 1 if the guess needs to be higher: )
    for i in range (1, 1001):

main()

és én nem is tudom, ha ez így van!

A kérdést 14/06/2009 04:28
a forrás felhasználó
Más nyelveken...                            


7 válasz

szavazat
4

Nyilvánvalóan nagyon új programozás, és azt hiszem, ez az egyik oka a késleltetett választ a közösség. Nehéz eldönteni, hol kezdjem, és hogyan végigvezeti az egész gyakorlat.

Szóval, mielőtt kap egy jó válasz, hogy itt is létre érti, hogy mi történik ott, és végigvezet az épület az oldatot saját magának (ideális esetben!) Azt javaslom, keresse fel ezt az oldalt, hogy megpróbálja, hogy egy felfogni a tényleges probléma maga.

http://www.openbookproject.net/pybiblio/gasp/course/4-highlow.html

Addig nézd meg az összes választ ebben a téma, és folyamatosan szerkeszti a bejegyzést, hogy tudjuk, kapsz rá.

Válaszolt 14/06/2009 04:37
a forrás felhasználó

szavazat
1

Oké, a szép az egészben Python, hogy ez szinte pszeudokódokra egyébként.

Most pedig gondolj az egyes lépések:

  1. Hogyan juthat az átlag a magas és alacsony?

  2. Hogyan kérdezze meg a felhasználót, ha a answerr helyes

  3. Mit „ha” nyilatkozatok néz ki, mint a Python, és hogyan írnál a pszeudokódokra ki, mintha állításokkal?

Itt egy tipp - futtathat python tolmácsként és próbálja egyes állítások mentén, így például, ha tehetnék

high=23
low=7

majd számítani, mit gondol legyen az átlagos vagy középpont között (tipp: 15)

Válaszolt 14/06/2009 04:42
a forrás felhasználó

szavazat
11

Nem értem minden ez a cucc egyáltalán!

Ez elég problémás, de finom, csináljuk egy lépéssel egy időben! A házi feladat kezdődik:

Nyomtatás utasítások a felhasználó számára

Szóval nem értek az egészből a dolgot, akkor azt mondják, hogy azt jelenti, hogy nem értem ezt a részét sem. Nos: „felhasználó” az a személy, aki fut a program. „Használati utasítás” az angol mondat, hogy megmondja neki, mit kell tennie, hogy a játék, mint egy a következő idézet ebből kiválóan világos és részletes feladat:

A program elindításához nyomtatásával utasításokat a képernyőn, kifejtve, hogy a felhasználó válasszon egy számot 1 és 1000 között, és a számítógép hiszem, nem több, mint 10 próbálkozás.

print” Egy Python utasítást bocsát ki információt; például, próbáljon ki egy programot, amely csak

print "some information"

hogy hogyan működik. OK, legyen szíves, módosítsa a válasz, hogy megmutassa, hogy már ütött ezen a ponton, így tudunk lépni a következő? Nyugodtan comment Itt a további kérdéseket, ha olyan szavakat vagy fogalmakat Én a még mindig túl fejlett az Ön számára, és megpróbálom tisztázni!

Válaszolt 14/06/2009 04:43
a forrás felhasználó

szavazat
14

Mielőtt gondolkodni, hogy hogyan hajtsák végre ezt a python (vagy bármilyen nyelven) nézzük meg a pszeudokódokra, ami úgy néz ki, mint egy nagyon jó terv, hogy megoldja a problémát.

Gondolom, hogy az egyik dolog, amit lehet, hogy elakadás van az út a pszeudokódokra szám változó , mint a highés low. Az út, hogy megértsük változók megvizsgálni azokat résidők érték tárolható. Egy adott időben, egy változó van némi értéke, mint az 5-ös, vagy utalás egy megnyitott fájl. Ez az érték lehet hívni bármikor segítségével a nevét, illetve lehet adni egy új értéket rendelünk, és a régi érték lesz elfelejteni az új értéket vesz helyére.

A pszeudokódját szám három változó, high, lowés tries. Azt is elmondja, hogy milyen kezdeti értékük legyen. Miután a második vonal lefutása az értékeket beállítottuk 1000, 1 és 1, illetve, de hogy új értékeket a program előrehaladtával.

Másik jellemzője a pszeudokód egy feltételes hurok, és egy eset elemzése a felhasználótól. A fordítást a pszeudokódokra hurok helytelen. Az Ön esetében, ha már létrehoztunk egy új változót, iés utasította a programot futtatni a hurok test minden i értéke 1 és 1000. Nyilvánvaló, hogy ez nem egy csomó köze a pszeudokódokra.

Ehelyett mit szeretne csinálni a loop örökké, amíg egy feltétel (amely megváltoztatja a ciklus törzse) hamissá válik. A python, az whileállítás ez. Ha ismeri egy ifnyilatkozatot, whileugyanúgy néz ki, de miután a szervezet végzi, a feltétel átértékelődik, és a test ismét lefut, ha ez még mindig igaz.

Végül az eset elemzése a hurok teste igényel összehasonlítva valamit várt értékeket. Bár néhány más nyelven is számos módon fejezik ki ezt a python már csak if- elif- elsezáradékokat.


Kívül átalakítja pszeudokódokra dolgozó kód, valószínűleg hasznos megérteni, mi a program valójában csinál. A kulcs itt van a 4-es vonal, ahol a program kitalálja átlagosan két értékeket. azt követően, hogy a program működik, hogy mennyire jól a becslés dolgozott ki.

Az első futás át a hurkon, és highamely 1000 és lowamely 1, az átlag 500 (valójában az átlag 500,5, de mivel mi átlagosan egész számok, python találgatások, hogy szeretnénk az eredmény a részleg is egész ). Nyilvánvaló, hogy a becslés csak 0,1% az esélye, hogy van, de ha ez a baj, a felhasználó várhatóan mondja el, ha nem volt túl magas, vagy túl alacsony. Akárhogy is, ez a válasz teljesen kiküszöböli az 50% -át lehet találgatások.

Ha például a felhasználó gondolt alacsony számát, majd amikor a program kitalálta 500, a felhasználó azt mondja a program, amely 500 volt túl magas, és ezután a program soha nem kell kitalálni, hogy ez a szám a tartományban 501 thru 1000. Ez lehet menteni a számítógép a sok munka.

Ahhoz, hogy ezt az információt használja, a program nyilvántartja a lehetséges értékek a kapu szám lehet. Ha a szám kitalálta túl magas, akkor a program beállítja a felső határ lefelé, csak alul a találgatás, és ha a becslés túl alacsony volt, a program igazodik az alsó kötött felfelé éppen a találgatás.

Amikor a program kitalálja ismét a találgatás kellős közepén a lehetséges tartomány, vágás tartományban felében újra. A számos lehetséges találgatások mentek az eredeti 1000-500 egy találgatás, 250 két találgatások. Ha a program szörnyű szerencse, és nem értem a két (ami valójában elég valószínű), akkor a harmadik, azt csak 125 szám balra kell aggódnia. Miután a negyedik találgatás, csak 62 szám marad tartományban. Ez így folytatódik, és miután nyolc találgatások, csak 3 szám marad, és a program megpróbálja a középső szám kilencedik kitalálni. Ha ez kiderül, hogy rossz, csak egy szám van hátra, és a program kitalálja meg!

Ez a technika ketté egy sor a felét, majd folytatja a szorosabb fele úgynevezett felező és úgy tűnik, a legkülönbözőbb témákról érdekes számítástechnika.


Mit szólnál egy kis kódot! Mivel nem akarom megfosztani a tanulási tapasztalat, én csak ad egy kis töredék, amelyek segítenek mentén. python nyelven tervezett interaktív feltárása, így indítsa el a tolmács, és hogy ez egy lövés. Majd kiküldetés példát az utasításokat látható, valójában nem írja ezt.

Íme egy példa a whilezáradék:

>>> x = 1000
>>> while x > 1:
...     x = x/2
...     print x
...
500
250
125
62
31
15
7
3
1
>>> x
1

Első konzol felhasználói bevitelt kell tenni a raw_input()funkciót. Csak vissza, amit a felhasználó beír. Ez egy kicsit nehezebb megmutatni. Az egyszerűség kedvéért, miután minden sora python, amely előírja, input, én írja: „Hello World!” (idézőjelek nélkül)

>>> raw_input()
Hello World!
'Hello World!'
>>> y = raw_input()
Hello World!
>>> print y
Hello World!
>>> 

Mit szólnál egy kis ötvözi a fogalmak!

>>> 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
>>> 

Hoppá. kicsit egy hiba van. Ha lehet megjavítani!

Válaszolt 14/06/2009 05:17
a forrás felhasználó

szavazat
0

Itt van néhány tanácsot a kezdéshez:

Átlagos = Érték + érték + érték [...] / értékek száma; (Például, ((2 + 5 + 3) / (3))

Sok programozási nyelvek használatát a különböző szolgáltató elsőbbséget. Amikor én programozás, mindig használjunk zárójeleket, ha én vagyok biztos abban, hogy kezelő elsőbbséget. Az én fenti példában, ha csak nem 2 + 5 + 3/3, a program elvégzi a szétválást hozzáadása előtt - így lenne evaulate 2 + 5 + (3/3), vagy 2 + 5 + 1 == 7 .

Hagyja ki ezt a python felhasználók / * Másodszor: a legkorábbi programok részesülhetnek const helyességét ( itt egy jó magyarázat, hogy mi ez, és ezért rendkívül jó gyakorlat). Kérjük, olvassa el ezt, és megérteni, hogy miért érdemes használni állandók (vagy bármilyen python megfelelője). Szintén felnéz „bűvös szám”, ami egy nagy terület, ahol állandók használnak. * /

Google „Megbocsátja Kedves Sally” (Megjegyzés: ez csak foglalkozik matematikai művelet, és többnyire igaz a programozási nyelveket; átfogóbb tanulmányt operátor precedencia, felnéz a választott nyelvet dokumentációját részesítendő - azt is megjegyzik, hogy a legtöbb program nincs beépített teljesítmény szereplők, de a legtöbb szabványos könyvtárak pow funkciók).

Apropó standard könyvtár: Ismerkedjenek szabványos könyvtári funkciót (én még soha nem használt Python, nem tudom, hogyan hajtja végre a SL, de én rendkívül meglepve, ha egy nyelvet, hogy a népszerű nem volt fejlett SL). Ha nem tudja, mit jelent ez, és a könyv / tutorial nincs meg, kap egy újat. Bármilyen erőforrás, amely nem hivatkozik a standard könyvtár nem éri meg az időt.

Végül: míg ez a post tűnhet, tudom, mit beszélek, igazán még a korai fázisban a tanulás, mint te. Néhány dolog, amit érdemes megszokni az elején (amikor kimarad ezek a részek, lelassult az én tanulási sok): használata referenciák és mutatók (Q megjegyzések: nincs Python van mutatókat?), A különbség az adatok a memóriába, és a tényleges memória hely (sokszor, a helyét a memória értékét lesz hasznosabb, mint maga az érték, legalábbis ha az adatok írása struktúrák). Különösen szokni a standard könyvtár; nézd a másolás, találni, stb típusú funkciók hasznos karakterlánc-manipulálás.

Tulajdonképpen újraolvasás az eredeti bejegyzést, nem vettem észre, hogy ez egy házi típusú feladat. Ha nem ezt a szórakoztató, akkor valószínűleg soha nem veszem a tanácsot. Csak arra emlékszem, hogy a programozás is rendkívül szórakoztató, ha nem teszik a házimunkát - és nem kap csalódott, ha a kód nem fordul le (vagy ... értelmezni), vagy nem várt eredmények, stb

Válaszolt 14/06/2009 05:24
a forrás felhasználó

szavazat
1

Üdvözöljük a verem túlcsordulás!

A trükk az, hogy rájönnek, hogy a Python programot kell nézni mintha a pszeudokódokra.

Először nézzük meg, hogy pontosan megértsük, mi a pszeudokódokra csinál. Ha kellett, hogy befolyásolja a program által leírt pszeudokódokra, akkor a következőképpen néz ki:

Think of a number between 1 and 1000 and press Enter.
>>> 
Is it 500? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.
>>> 1
Is it 750? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.
>>> -1
Is it 625? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.

stb.

Amikor először gondol a számot, a program tudja, csak azt, hogy az 1 és 1000. képvisel ez a tudás változó beállításával „alacsony”, hogy az 1. és a változó „magas” 1000. Az első becslés átlaga ezeknek számok, amely 500.

Miután megmondjuk a programnak, hogy a szám nagyobb, mint 500, akkor frissíti az értéke „alacsony” a 501. Vagyis a program, akkor tudja, hogy mi a szám között 501 és 1000 Ezután kitalálja átlaga 501 és 1000, amely 750. azt mondja el, hogy mi a szám alacsonyabb, így a program frissíti az értéket a „nagy”, hogy 749 és kitalálja az átlag 501 és a 749 mellett, és így tovább, amíg kitalálja, vagy szűkült a lehetséges tartomány le egy számot (vagyis a következő találgatás lesz jobb).

Tehát vissza írásban a program Python: Mi alapvetően csak lefordítani a pszeudokódokra sorról sorra. Például mi program hurok látszik, mintha azt abban a pseucode:

while high > low:
  # Guess (high + low) / 2 and ask user to respond
  # Handle user response

Nincs szükség a hurok, amíg van a kódban.

Hogy a bemenet tehetünk valamit, mint ez:

guess = (high + low) / 2
response = input('Is it ' + str(guess) + '? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.')

Most a felhasználói tárolja a változó „válasz”, és tudjuk kezelni a lehetőségeket, ha nyilatkozatok, mint „ha választ == -1:” például.

Csak arra emlékszem, hogy nyomtassa ki a utasításokat, és állítsa a „magas” és „alacsony” a kezdeti értékre, mielőtt a while ciklus, és nem lesz minden.

Sok szerencsét!

Válaszolt 14/06/2009 06:59
a forrás felhasználó

szavazat
2

Nem egyezik a psudocode pontosan, de működik. lol;)

Tudom, hogy ez egy gonosz régi post, de ez ugyanaz a megbízás kaptam is. Itt van, amit végül a:

high = 1000
low = 1
print "Pick a number between 1 and 1000."
print "I will guess your number in 10 tries or less."
print "Or at least i'll try to.  ;)"
print "My first guess is 500."
guess = 500
tries = 0
answer = 1
print "Enter 1 if it's higher."
print "Enter -1 if it's lower."
print "Enter 0 if I guessed it!"
print ""
while (answer != 0):
    answer = int(raw_input("Am I close?"))
    if answer == 1:
        tries = tries + 1
        low = guess
        guess = (high + low) / 2
        print "My next guess is:"
        print guess
    elif answer == -1:
        tries = tries + 1
        high = guess
        guess = (high + low) / 2
        print "My next guess is:"
        print guess
    elif answer == 0:
        tries = tries + 1
        print "Your number is:"
        print guess
        print "Yay! I got it! Number of guesses:"
        print tries
Válaszolt 25/09/2010 20:02
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more