Micsoda rendetlenség a Python. Noggano - python, micsoda káosz dalszöveg

Timit és a kicsit hazavitték a sötét udvaron keresztül.
Turley a tengerekről és Miamiról.
Turley a kilencről és az új Java-ról.
Nyár volt, kint szúnyogok.

Megszólaltak, majd csendben maradtak.
Aztán megint arról beszéltek, amiről az elején.
Arról, hogy innen jó lenne kihajózni.
Szomorú vagy vicces?
Ez? Szomorú.

Hirtelen egy társaság jelent meg a sarok mögül.
Egy arc, amit a fiúk még nem láttak.
Dohányozzak? Van egy hívásod?
Honnan jöttél, miért nem dohányzol egyáltalán?
Ne legyél udvariatlan velem! Sokáig ne mozdulj!
Mik ezek az agarak, ki ír alá neked?

Amíg a terc sétált, a fickó teljes sebességgel rohant.
Körülbelül hat ember futott utána.
Timofey állva maradt a többiekkel.
Ehhez mindent megkapunk.

A kormoránok piszkos szavakat záporoztak.
De Timofey csak állt és azt gondolta, te vagy az?
A garázsok mögül üldözés jelent meg.
Nem utolérték a kicsit, vagy ott hagyták a kicsit.
És hirtelen a sikoly a betonba csapódott.
Mit vársz, hosszú f*sz, Python!!!

Tim azonnal megértette, ki a hosszú és ki a Python.
Ököl ütés az arcra, minden fehér lett a tejtől.
Ha pythonnak nevezed magad, akkor seggfejnek kell lenned.
Timit taposták, valaki elhúzta a telefont.

Valaki előrántotta a pénztárcát, az iratokat és a pénzt.
Letépték az Armani papucsot.
Hevesen fújták, mint a hóviharok, amelyek lucfákat fújtak északon.
A francba? 15 test tapos egy testen.

Amikor Tim magához tért, már hajnalodott.
Egy srác ült a közelben, és néhány srác a környékről.
Mi értelme van ezt mondani, amikor az arcod olyan, mint egy futballlabda?
Hazavittük Timit, ma nincs idő pumpálni!

Tima szívószálon keresztül eszik levest, és vérre piszkál.
Pálcával megy sétálni.
Erkélyéről élénken figyeli a területet.
- Hol található Python.

A házterven tanakodnak, mint a vezérkarban.
A megtorlásról és annak mértékéről beszélnek!
Sanya, a karatéka és a bátyja felállt.
Ezek a testvérek elég ahhoz, hogy kivegyék őket!

Mintegy 40 fős tömeg gyűlt össze.
80 kemény tornacipő.
Az egyik udvaron gyerekek ültek,
Timokha pedig azonnal koshoz költözött.

Úgy néz ki duzzadt arcának repedésein, mintha egy látványon keresztül.
Timyn patsik gyűrűben tartják ezt a csomót.
- Szia Python! Timofey hangosan kifakadt:
De erre a furcsa becenévre senki nem reagált.

Akkor sötét volt, és Tim nem emlékezett Python arcára.
Eszembe jutott, hogy a Python nem volt rövidebb a Libronnál.

Hé, hosszú!
- Én?
- Igen, te!
- Jól?
- Ismered a Python-t?
- Python? Nálunk nincs ilyen.
- Oké, mit csináltál 22-én este?
- 22-én? Igen. otthon aludtam.

válaszolsz?
- válaszolom, stopudovo!
- Otthon voltál?
- Igen, otthon voltam!

A hosszú nyomni kezdi Timont.
- Mi a baj? Milyen díjak vonatkoznak egyes Pythonokra?
nem ismerek ilyeneket. Mi az ilyenekért vagyunk „nem a témában”.
És hirtelen behajt az udvarra egy Lada 9.

A fényszórók belecsaptak a sötétbe,
Valami savanyú baromság hangjára
Az ajtók kinyílnak, és a „szarvas” kiesik -
A „szarvasoknak” pedig behajlított térde van;

És a pupilláikat az üveg alá rejtve a tömeg felé úsztak.
Tim úgy néz ki, Libron homloka nedves, izzadság folyik a homlokán.
Furcsa, mert egyáltalán nincs fülledt kint.
És az egyik „szarvas” megkérdezi Libront:

Szia Python! Mi van itt?


- Figyelj tesó!
- Python! mi van veled itt?
- Hé, Heló!
- Python! mi van veled itt?
- Szia tesó!
- Figyelj tesó!

Piton! mi van veled itt?
- Figyelj tesó!
- Python! mi van veled itt?
- Hé, Heló!
- Python! mi van veled itt?
- Szia tesó!
- Python! Minden világos, később beszélünk róla.

Igen, nem értettem. Mi az eredmény a Pythonnal?

Elmesélem a kis történetemet.

Megint belefáradtam az újabb vezérlővel, áramkörrel és NYÁK-val való trükközésbe, és egy közönséges elektronikai mérnök piaci átlagkeresetétől nyomasztóan elhatároztam – újra programozó akarok lenni.

Nem mondhatnám, hogy már programozó voltam, de 3 éve szereztem tanulmányaimat információs rendszerek és technológiák szakon a katonai mechanika szakon. A sors pedig az egyetemi éveim alatt hozott az elektronikai áramkör-tervezésbe. Korábban a webhelyekre tett gyakori üzleti utak megmentettek (amíg fiatal és egyedülálló voltam - ez érdekes), de tavaly minden teljesen unalmas volt.
A Habr olvasása közben a Pythont választottam.

Ez az első és második friss cikk segített meghatározni, hogyan és mit kezdjünk.

Valójában az ajánlásra szeptember elején kezdtem el tanulni: Mark Lutz. Learning Python, 4. kiadás. Fogcsikorgatva, mindent összeszorítva, ami ökölbe szorított, a maradék motivációt felhasználva a 803. oldalig olvastam, és végigcsináltam az összes gyakorlatot. Az OOP közepén teljesen összerándultam. A könyv jó, de sivár – nincs erőm.

Egyszerűen nem akartam feladni, így aztán kipróbáltam a Google python tanfolyamát. Hú, milyen klassz volt megoldani a végső problémát! Két este egy pillanat alatt elrepült.

Aztán rájöttem, hogy nem biztos, hogy a könyv átnyomtatása a legjobb megoldás. És eszembe jutott, hogy láttam egy bejegyzést a nyugati egyetemek kurzusairól. Az angol nyelvtudás megállított, de megértettem Nick Parlante-t!

Alig van szó, és most már két tanfolyamra is beiratkoztam. Az elsőről már írtunk, a másodikról. És az, hogy az egyik Python 2.7-es, a másikban 3.2 van, még jobb, gondoltam. Az aprólékos Lutz után mindkét kúra első 2 hete úgy csattant, mint a dió. Külön köszönet a folyamatjelzőnek a motivációért. És a linkekre kattintva megtalálta - CS188.1x: Mesterséges Intelligencia. mit írnak?

ELŐFELTÉTELEK
  • Programozás
    1. Objektumorientált programozás
    2. Rekurzió
    3. Python vagy a Python gyors megtanulásának képessége (rövid referens biztosított)
  • Adatstruktúrák
    1. Listák vs. Készletek (tömbök, hashtables)
    2. Sorba állás (halmok, sorok, elsőbbségi sorok)
    3. Fák vs. Grafikonok (bejárás, háttérmutatók)
  • Math
    1. Valószínűség, véletlen változók és elvárások (diszkrét)
    2. Alapvető aszimptotikus komplexitás (Big-O)
    3. Alapvető számlálás (kombinációk és permutációk)

Menő! Emlékszem a matekra, edzem a még kis pythonomat, és nem baj, hogy a tanfolyam már a 2. hete.

Teljes tanfolyami program

Bevezetés az AI-ba

  • Áttekintés
  • Ügynökök: észlelés, döntések és cselekvés
Keresés és tervezés
  • Tájékozatlan keresés (mélység-első, szélesség-első, egységes költség)
  • Tájékozott keresés (A*, Mohó keresés)
  • Heurisztika és optimalitás
Kényszer-elégedettségi problémák
  • Visszalépés a kereséshez
  • Kényszer terjedése (előre ellenőrzés, ívkonzisztencia)
  • A gráfstruktúra kihasználása
Játékfák és döntéselmélet
  • Döntéselmélet
    Beállítások, racionalitás és segédprogramok
    Maximális várható segédprogram
  • Játékfák és fastrukturált számítások
    Minimax, Expectimax, kombinációk
    Értékelési függvények és közelítések
    Alfa-béta metszés
Markov döntési folyamatok (MDP)
  • Irányelvek, jutalmak és értékek
  • Értékiteráció
  • Szabályzati iteráció
Megerősítő tanulás (RL)
  • TD/Q tanulás
  • Felfedezés
  • Közelítés
Következtetés és összefoglaló
Nincs előadás, záróvizsga hét
Első találkozás a valósággal
A tanfolyamról bővebben mesélek. A bevezető előadás igen kedvező benyomást keltett. Egy kellemesen mondható (és ami a legfontosabb, nem szakállas!) srác, jól megtervezett diák (később megtudtam, hogy külön tervező dolgozott a képeken). Az előadásokat valódi közönségből rögzítik, hallhatóak a hallgatók reakciói (leginkább nevetés). Elmondták, mit értenek ma mesterséges intelligencia alatt, mi változott az 50-es évek óta, mutattak videókat a Google gépeiről, valamint a robotjukat, amely szépen hajtogatja az ingeket és pólókat. Hmm, az én egyetememen a mesterséges intelligenciával kapcsolatos ismeretek átadása a Turing-tesztről szóló történettel kezdődött és ért véget.

Számomra az a hátránya, hogy nem lehet helyileg letölteni feliratos videókat.

Az előadások jók, de gyakorlat? Igen, az első héten van (opcionális) Math Self Diagnostic, (opcionális) Python Refresher.
Íme egy példa egy kérdésre a Matek részből:

Ön egy pasziánsz játékot játszik, amelyben három kártyát osztanak ki csere nélkül egy 10 lapból álló egyszerűsített pakliból (1-től 10-ig jelölve). Akkor nyersz, ha az egyik lapod 10-es, vagy ha az összes lapod páratlan.
Hány nyerő kéz van, ha a különböző sorrendek különböző kezek?
Mennyi esélyed van nyerni?

Igazából a műszaki felsőoktatás azt súgja: „Ez már megtörtént valahol...” A Wikipédia segítségével a matematika jutott eszembe. Belenéztem a python frissítőbe, de a Lutz és két tanfolyam után megszerzett önbizalom lustaságba torkollott, és nem csináltam a problémát, úgy döntöttem, hogy továbblépek a második hétre.

Keresés és fák
Az egyetemen megismerkedtem a gráfok és a keresőfa-bővítés fogalmával. Szóval arra számítottam, hogy kicsit unalmas lesz. De a tanár által mutatott sárga öreg Pac-Man fenntartotta az érdeklődésemet. Mélység első, szélesség először, egységes költség, mohó, A* (heurisztikus) keresés – mindezt szekvenciálisan magyarázták el, és a példa a Pac-Man volt, aki boldogan futott át a labirintusban pontokért a keresési algoritmusnak megfelelően. És egy kódsor sem az előadásokban. Tetszik.

Ugyanezen a napon a házi feladatot előadásokkal - grafikonokkal és általános kérdésekkel a bogarakról a labirintusban - elsajátították.
De a további lapprojekt 1 kábultságba taszított. Töltsd le az archívumot (további részletek az Nbooo-nak köszönhetően), futtasd a pacman.py-t python 2.7 alatt, és játssz (segítségképpen a -h kapcsolóval is futtathatod). Most írja be funkcióit a search.py ​​modulba, a pacmannek ételt kell találnia a labirintus sarkában. Így néz ki.

Hogy lehet ez, mert nem tanítottak meg írni. De mióta elvettem. A munkát félretették. Az első napon a Depth First Search több ferde megvalósítását írták, a pacman rendszeresen elkezdett táplálkozni. De kíméletlenül eltávolították őket, és kiderült, hogy a keresés során feltárt ágak számát és az ösvény optimálisságát szigorúan ellenőrizték. Funkcióit és módszereit a rendszer automatikusan teszteli, miután feltöltötte a forráskódot a szerverre. Miután ismét kitörölte a kódlapot, eldobta a kardot, és felvette az ekevasat. A papírdarabokat fák borították, Pac-Man rajzai és egy labirintus. Az elektronikai mérnöktársak kötelességüknek tartották, hogy vigyorogjanak, amikor elhaladtak mellette. Ennek eredményeként megvalósult a megvalósítás. Aki tanulni akar, annak egyedül kell szenvednie. Akik járatosak a pythonban és az algoritmusokban, örömmel várom az üggyel kapcsolatos észrevételeket.

Kód

Szerintem itt minden világos, az util.Stack() és az utilQueue() valójában osztályokba csomagolt listák a tanulók kényelme érdekében, push és pop módszerekkel, FIFO és LIFO:

Def mélységElső Keresés(probléma): """ Először keresse meg a keresési fa legmélyebb csomópontjait. A keresési algoritmusnak vissza kell adnia a célt elérő műveletek listáját. Győződjön meg arról, hogy egy gráfkereső algoritmust implementál A kezdéshez érdemes lehet megpróbálni néhány egyszerű parancs az átadott keresési probléma megértéséhez: print "Start:", problem.getStartState() >>> Start: (4, 3) print "Cél-e a kezdés?", problem.isGoalState (problem.getStartState()) >>> A start egy cél Hamis nyomtatás "Start utódjai:", problem.getSuccessors(problem.getStartState()) >>> Start utódai: [((4, 4)? ), "Észak", 1), ((4, 2), "Dél", 1), ((5, 3), "Kelet", 1), ((3, 3), "Nyugat", 1) ] """ def fromXYtoXY(coord1, coord2): """ tuple(int,int), tuple(int,int) -> str Koord1 coord2 sorok közelébe veszi, karakterlánc módot vagy hibamintát ad vissza a tinyMaze számára: >>> fromXYtoXY((5,5),(4,5)) >>>"Nyugat" >>>fromXYtoXY((1,3),(2,3)) >>>"Kelet" """ if coord1== coord2: if coord1-coord2==1: return "Dél" else: visszatér "Észak" elif coord1==coord2: if coord1-coord2==1: visszatér "Nyugat" else: return "Kelet" else: return ("Path" nem található %s és %s között" % (coord1, coord2)) Fringe = util.Stack() currState=problem.getStartState() Fringe.push() while True: currState=Fringe.pop() if problem.isGoalState( currState[-1]): listWays= fromState=currState # kimeneti listát képez a currState állapotához tartozó útvonalakkal: # pl.: ["Dél", "Nyugat"] listWays.append(fromXYtoXY(államból,állam)) fromState=state visszatérési lista Állapot, Út, Ár úttörése a problem.getSuccessors(currState[-1]): ha nem Állapot a currState-ban: nextPath=currState[:] nextPath.append(State) Fringe.push(nextPath)

A Breadth First Search megvalósítása véleményem szerint kicsit szebben sikerült.

Kód

def widthFirstSearch(problem): """ Először keresse meg a keresési fa legsekélyebb csomópontjait. """ fringe=util.Queue() visitedNodes= fringe.push() # kezdő koordináták mentése + null elérési út, miközben nem fringe.isEmpty() : #míg van valami a sorban currNode = fringe.pop() #vegye az utolsót, ha a currNode nincs a visitedNodes-ban: #if visitedNodes.append(currNode) #add for State, Way, Price in problem.getSuccessors(currNode) : path=currNode[:] #készítsünk elérési utat a gyermekághoz.append(Way) if problem.isCélállapot(Állapot): return path else: fringe.push()

Ezután az Uniform Cost Search és az A* Search viszonylag könnyen megvalósítható volt (az ételtől való euklideszi távolsággal, mint heurisztikus függvény).

Kód

def uniformCostSearch(problem): "Keresse meg először a legkisebb összköltségű csomópontot fringe=util.PriorityQueue() visitedNodes= fringe.push(,0), de nem fringe.isEmpty(): currNode = fringe.pop(), ha probléma van." .isGoalState(currNode): return currNode, ha a currNode nincs a látogatottCsomópontban: #ha nem látogatta meg a visitedNodes.append(currNode) #add for State, Way, Price in problem.getSuccessors(currNode): path=currNode[:] #make a path gyermekághoz totalCost=currNode+Price path.append(Way) fringe.push(,totalCost) def aStarSearch(problem, heuristic=nullHeuristic): "Keresse meg azt a csomópontot, amelyiknél a legalacsonyabb a kombinált költség és a heurisztika." "*** A KÓD ITT ***" fringe=util.PriorityQueue() visitedNodes= fringe.push(,0), de nem fringe.isEmpty(): currNode = fringe.pop() if problem.isGoalState(currNode): print "Siker!!", currNode return currNode if currNode nem látogatottNodes: #if not visited visitedNodes.append(currNode) #add for State, Way, Price in problem.getSuccessors(currNode): #print "succ", State , Way, Price path=currNode[:] #készítse el az utódág elérési útját totalCost=currNode+Price path.append(Way) fringe.push(,totalCost+heuristic(State,problem))

Az 1. projekt második része arra kérte a tanulókat, hogy módosítsák a keresési problémákat a searchAgents.py modulban a gyermekosztályok módszereinek adaptálásával. Ha korábban egy Pac-Man és egy étel volt, most egy Pac-Man és 4 sarokban van az étel, amelyen keresztül az optimális úton kell végigmenni. És dolgozzon ki egy heurisztikus függvényt az A* kereséshez, amely a keresési faágak kiterjesztésének költségeit csökkenti (a pontozási rendszer a következő: az inkonzisztens heurisztikák nem kapnak jóvá. 1 pont minden nem triviális konzisztens heurisztikaért). 1 pont 1600-nál kevesebb csomópont bővítéséért .1 pont 1200-nál kevesebb csomópont bővítéséért.).

Az 1. projekt a sok pont optimális elfogyasztásának problémájának megoldásával zárult egy labirintusban.

Ennek eredményeként közel 3 munkanapot töltöttem a problémák megoldásával, szerencsére volt némi szünet a munkában. Érdekes volt agyalni, és remélem hasznos volt a jövőben.

A tanár úr humoros szavaival szeretném befejezni az egyik előadást:

Bármit akarsz csinálni, NP-kemény. Elnézést, ez egy AI osztály. Minden nehéz.
Remélem, ez az áttekintés segített valakinek egy kicsit. A tanfolyamot (vagy csak problémamegoldást) minden kezdőnek ajánlom a pythonnal való ismerkedéshez, és nagyon várom a 2. projektet.

Címkék: Címkék hozzáadása


Egy fiú udvar története Gazgolderből és Nogganoból.
!

Kim és a fiú sötét udvarokon át sétáltak haza.
Turley a tengerekről és Miamiról;
Turley a kilencről és az új Java-ról.
Nyár volt, kint szúnyogok.

Megszólaltak, majd csendben maradtak.
Aztán újra beszélgettek arról, amiről az elején beszéltek.
Arról, hogy innen jó lenne kihajózni.
- Szomorú vagy vicces?
- Ezt? Szomorú.

Hirtelen egy társaság bukkant elő a sarok mögül,
Egy arc, amit a fiúk még nem láttak.

Van mit szívni?
- Van egy hívásod?
- Honnan leszel?
- Mi van, nem dohányzol már?
- Ne legyél udvariatlan velem!
- Hosszú, ne rándulj!
- Mik ezek az agarak?
- Ki ír alá neked?

Amíg ment a terc, a kicsi teljes sebességgel rohant.
Körülbelül hat ember futott utána.
Timofey állva maradt a többiekkel.
- Mindent el fogunk venni ehhez.

A kormoránokat tolvajszavakkal hintették be.
De Timofey csak állt és azt gondolta, te vagy az?
A garázsok mögül üldözés jelent meg.
Nem utolérték a kicsit, vagy ott hagyták a kicsit.
És hirtelen betonnak ütközött az Opel.
- Mit vársz, hosszú fasz, Python!

Tim azonnal megértette, ki a hosszú és ki a Python.
Ököl ütés az arcra, minden fehér lett a tejtől.
Ha Pythonnak nevezed magad, akkor seggfejnek kell lenned.
Timit taposták, valaki elhúzta a telefont.

Valaki előhúzta a pénztárcát, az iratokat és a pénzt.
Letépték az Armani papucsot.
Hevesen fújták, mint a hóviharok a lucfenyőket északon.
A francba? 15 test tapos egy testen.

Amikor Tim magához tért, már hajnalodott.
Egy srác ült a közelben, és néhány srác a környékről.
Mi értelme van ezt mondani, amikor az arcod olyan, mint egy futballlabda?
Hazavittük Timit, ma nincs idő pumpálni!
www.site
Tima szívószálon keresztül eszik levest, és vérre piszkál.
Sétálni bottal megy.
Erkélyéről élénken figyeli a területet.
- Hol található Python.

A ház tervén tanakodnak, mint a vezérkarban.
A megtorlásról és annak mértékéről rúgnak!
Sanya, a karatéka és a bátyja felállt.
Ezek a testvérek elég ahhoz, hogy kivegyék őket!

Mintegy 40 fős tömeg gyűlt össze.
80 kemény tornacipő.
Az egyik udvaron gyerekek ültek,
Timokha pedig azonnal koshoz költözött.

Úgy néz ki duzzadt arcának repedésein, mintha egy látványon keresztül.
Timyn patsik gyűrűben tartják ezt a csomót.
- Szia Python! Timofey hangosan kifakadt:
De erre a furcsa becenévre senki nem reagált.

Akkor sötét volt, és Tim nem emlékezett Python arcára.
Eszembe jutott, hogy a Python nem volt rövidebb a Libronnál.

Hé, hosszú!
- Én?
- Igen, te!
- Jól?
- Ismered a Python-t?
- Python? Nálunk nincs ilyen.
- Oké, mit csináltál 22-én este?
- 22-én? Igen. otthon aludtam.

válaszolsz?
- válaszolom, stopudovo!
- Otthon voltál?
- Igen, otthon voltam!

A hosszú nyomni kezdi Timont.
- Mi a baj? Milyen díjak vonatkoznak egyes Pythonokra?
nem ismerek ilyeneket. Mi az ilyen „témán kívüliek”ért vagyunk.
És hirtelen behajt az udvarra egy Lada 9.

A fényszórók belecsaptak a sötétbe,
Valami savanyú baromság hangjára
Az ajtók kinyílnak, és a „szarvas” kiesik -
A „szarvasoknak” pedig behajlított térde van;

És a pupilláikat az üveg alá rejtve a tömeg felé úsztak.
Tim úgy néz ki, Libron homloka nagyon nedves.
Furcsa, mert egyáltalán nincs fülledt kint.
És az egyik „szarvas” megkérdezi Libront:

Szia Python! Mi van itt?


- Figyelj testvér!

- Hé, Heló!
- Python! mi van veled itt?
- Szia tesó!

- Figyelj tesó!

Piton! Mi van itt?
- Figyelj testvér!
- Python! mi van veled itt?
- Hé, Heló!
- Python! mi van veled itt?
- Szia tesó!
- Python! Minden világos, később beszélünk róla.

Igen, nem értettem. Mi az eredmény a Pythonnal?

Munka és oktatás