Datatypes#

[1]:
i = 666
[2]:
type(i)
[2]:
int

Strings Intro#

[3]:
ein_string = 'hallo'
ein_string
[3]:
'hallo'
[4]:
print(ein_string)
hallo
[5]:
ein_anderer_string = "hallo"
[6]:
print(ein_anderer_string)
hallo
[7]:
s = 'ein paar zeichen, gefolgt von "double quotes", dann noch was'
[8]:
s = "abc ' fghjgfgh' "
[9]:
s
[9]:
"abc ' fghjgfgh' "
[10]:
s = '"" \'dfghgfgh '
[11]:
s
[11]:
'"" \'dfghgfgh '
[12]:
for i in [1,2,3]:
    print(i)
    print(i+1)
print('vorbei')
1
2
2
3
3
4
vorbei

Doc Strings#

[13]:
def do_something(a, b):
    '''diese funktion ist komplett sinnlos, und nimmt parameter a und b, die integers
    sein sollten, sonst funktioniert das ganze hier nicht.

    der returnwert ist noch sinnloserer weise die summe der parameter.'''

    # hier wird die komplexe berechnung der summe vorgenommen. obacht!
    return a + b
[14]:
x = do_something(1, 2)
x
[14]:
3
[15]:
type(do_something)
[15]:
function
[16]:
do_something.__doc__
[16]:
'diese funktion ist komplett sinnlos, und nimmt parameter a und b, die integers\n    sein sollten, sonst funktioniert das ganze hier nicht.\n    \n    der returnwert ist noch sinnloserer weise die summe der parameter.'
[17]:
help(do_something)
Help on function do_something in module __main__:

do_something(a, b)
    diese funktion ist komplett sinnlos, und nimmt parameter a und b, die integers
    sein sollten, sonst funktioniert das ganze hier nicht.

    der returnwert ist noch sinnloserer weise die summe der parameter.

Variablen#

[18]:
try:
    print(nix)
except Exception as e:
    print(e, type(e))
name 'nix' is not defined <class 'NameError'>
[19]:
nix = 666
print(nix)
666

Object Identity#

[20]:
a = 42
id(a)
[20]:
140672599989840
[21]:
b = a
id(b)
[21]:
140672599989840
[22]:
b = [1,2,3]
[23]:
id(b)
[23]:
140672464974720

Integers#

Hoechste Integer Zahl auf 64 Bit Rechnern:

[24]:
num = 2**64 -1
num
[24]:
18446744073709551615
[25]:
num = num +1
[26]:
num
[26]:
18446744073709551616
[27]:
num = 2**64
[28]:
num
[28]:
18446744073709551616
[29]:
2**100000
[29]:
9990020930143845079440327643300335909804291390541816917715292738631458324642573483274873313324496504031643944455558549300187996607656176562908471354247492875198889629873671093246350427373112479265800278531241088737085605287228390164568691026850675923517914697052857644696801524832345475543250292786520806957770971741102232042976351205330777996897925116619870771785775955521720081320295204617949229259295623920965797873558158667525495797313144806249260261837941305080582686031535134178739622834990886357758062104606636372130587795322344972010808486369541401835851359858035603574021872908155566580607186461268972839794621842267579349638893357247588761959137656762411125020708704870465179396398710109200363934745618090601613377898560296863598558024761448933047052222860131377095958357319485898496404572383875170702242332633436894423297381877733153286944217936125301907868903603663283161502726139934152804071171914923903341874935394455896301292197256417717233543544751552379310892268182402452755752094704642185943862865632744231332084742221551493315002717750064228826211822549349600557457334964678483269180951895955769174509673224417740432840455882109137905375646772139976621785265057169854834562487518322383250318645505472114369934167981678170255122812978065194806295405339154657479941297499190348507544336414505631657396006693382427316434039580121280260984212247514207834712224831410304068603719640161855741656439472253464945249700314509890093162268952744428705476425472253167514521182231455388374308232642200633025137533129365164341725206256155311794738619142904761445654927128418175183531327052975495370561438239573227939673030106077456848477427832195349227983836436163764742969545906672369124136325932123335643135894465219101882123829740907916386023235450959388766736403229577993901152154448003637215069115591111996001530589107729421032230424262035693493216052927569625858445822354594645276923108197305806280326516736449343761732409753342333289730282959173569273013286423311759605230495171677033163709522256952460402143387655197644016528148022348331881097559421960476479388520198541017348985948511005469246617234143135309938405923268953586538886974427008607028635502085562029549352480050796521564919683265106744100967822951954161617717542997520009887307377876210685890770969411610438028623950445323789591870760289260393489826100774887672852918106468489143893649064784591211612193300707900537059042188012856559403699070888032966871611655961232331998310923225082866180321880439447572986762096935819784385927969250123326935194693207724335527365566248223787833888074999276831633440318604463618703789784313032843823470410944306591471928341190975185239212327674384990561563688432939039442002617530976850605132937101449086396141620556053547335569926700941375271829142407234267937565069765567475934101310225342830080409079587329544213551307302050171598424230760469209732907290141606353960880559202357376885647852240092777111489134492416995607171786298436533978180869474106751111353523711540436599310889697485658800887861974934357929246204051767246012250618404011966289872673803070498361217974484679100747846356194664829224736134115135567179291781968056053726484141128347858241259121954601184412409349782963317042002530418661694962318735860652485410222211869544223788289189712080514575141361964805369723164570564998479537657174548128597406077339158775332355215609435919275199351014222246963017013717419337504919295363295101115292951836282819191821651676455946515828048984256116748150367805267878662716999649296949377045794876146628110929982020737013330324451005385378551188803474148198665114579322684900993000236736168555294173442059925371965244997925483159343706343970371809611470323074186985035054722289027174850333368328300281132910841693150457389933183934593292994942796015309756118708918929528449074243284767006243171171622731766606796101967802204564589015899524704741001158110963633731329388356868949408759334176909387806398584647300588928175998844477486130063153068760070084837267527789777356830042778902772105683833021470279728595336332110564064263909724579949686162908019604141753935768876587992428549912151737924270343248648414247456838889541893241450987505759403013249697541696955330296880219304874163501097920036210238768275176369980977614979636096704348140124130683576879904997436596296495705459524735382000363770324894982103331332913562315169854410415317054193928234723398848453552173203688088312100943941434938282203549650281530751087098604681224802973825631244989331965296202372608586509050307993308652001231671915182765742095689513136184095412121473786311042897717861448158316965848766949554826252504961227044714712229620274682362909803877469376987358942125441792355298387479830450253909788733469732603097544156474805473732732767248652759034995336354126953900458854988683574927864615252040800490114785892289085443353996994780867471613519785838571456421583171193004117989440790268346357550339888086725127883577297626499213827436573992927302238792576924232785487201297255386071968303782483063725899808484638503828356258403917311872694381464553651690062530023217591343084755215901475299149215296944362366910833233693767993138209275870024246238331218236715236772098417187703860172308522448043176333602759733161201262248323085329288986154559221427378507410978822244729512663572225567169779409767341543017289268332635077451210167869121334465680739797372711461919299938118178827541421792926883790285430909942441260511945849237909966329550263865701114884142266162969810073652710928504579470861508094054577797864301504899958634164700528220562786008864025709432444254044034243140203812074857537999016066465520986980790589347320243050635907363821521280600041827529325485247927904235727598574209554632363830932428250711518801775633739811523761994686263270550635099851254333875594601540900862014293625673738331693082328854327001487476635118830885173775268819526360165345900556160767713453617655450974424979076063906093300028416964847594027046669468486593636425428625241644836652173922586528474244952363302305311413449332339822336551611431469131900170488226836525916399723912626616140205707996727383529597479125488961419287261259757561701592645823541151922177253919651034344793680369057003813056557866311011476313189571556336518727757991908862890765494952019474922148851417079252352394293801701149485239005844358329748769279941586384640877265901749104933238853465429979253900561311562288241147192158137210120267399648622831610430287268739840335142120299516610846193164688075944526965248570070554452152547493450434852917987512185973647190461515413582582139040172118295702327537027389787793506904044938553587650503557155872873201596885061331145477101575699375441097493374115991199114962726801718038950907803041184400075585468560976965669584325627283327416418044590727844680051360774154288412712456353383625469068936430902068216750459819321744513362913853983154560610459692604508787700304184579153478291725762810632722108035826060904572460619204237580363147200158749075361633785243462298769917887808671453928846572417223504887766803869453474588831907597355292800709241471370696647029530700507083091412492771404776193459007315206233634226128137074504162520473449597415678882003845446774388950379192344594171245510231738995030348421937088083329709108176561010708693158020695060096428352046647333361163476664106311247065173802510599409266908984046663298613648854871230659903565772327667696057187057276814394932559371368029375974604116075641599919402266794230681485723361363592903676841480358328093127506801111571615062761556607158236612268544268330274725849294875852089790850962835235527978491475563744318483993474633300330972497012808415900969455190375849945750379465019166009861502794606130794726898507849610303884846035423392175449505876157130344700415823080225786693300512126831846009510203543174323783292176865976076275412421892808138872880175813109296020150746331979561488146333412674896256883784351178477592660577212734269328382384711746083782209939646612308343952169576581065423771981899573840430315930973215059901371218399762585055435459516340055149080565627330475362528926945020226163130902420795006258931367813005222140742964756194053782182452833097021554210929638693005460011927178302761563505715735405672652524175925436371863471836292012162456662093642074605500842449347289830619506077570528754845277680661218358066130291463288932240701043887535007851997159198390084654596996197138399723495863749806582439384615049184048485819193560667125968018574877819561104335238420873417743385185735663101292757409280586840011804854994149478736882949368786637202682607198707656286436753775709560349718397405565505269425218354301348910785234517795519757516484711545928466003754558485470994737493796615841040414239875763335201795518644856632201598556341934286668912522153446348791218159622744525372314219184738770596659942181275403613660438538829201810204850917717791485256026242529802492309229562177062770027659288158473994804255067730903420043491632913588644627415318468517462580180901314477358637486528221274450661883667873545037139535563260349778209992416559111602097437491432360787879331015052417047437823553506205617017572175387061751192919715660363028302343819584946594328460482931960515124867123604625653903565173322856758210937541222674223847046664733620292824834065137814475367747671882220098389682019784216724015491253360436437847479770633657905418133523010804559958547379685864708937791659340223795537045273849435441105983887969741143051069401271065628507537039823308867819868298171415185218271493613110963984021912448323423901392553811725954153209435002954807640291982765741514042956666953177304003358701503703497424897898108939453026976878231557938158928996868766367603579055322794822757659104812835219745724022347569914650240636730492833286151875049129873457930874999488048681250802904606446223569562767964898914869924201946458521355165709887118378290437174375625282606140534611987395334677500936625746765638459629521872262777473480491233965194281353725068660782076683862565487279038020486778099991754380815789820825255566234983933217491493864966284116889874665005414748264599972752003370084542592544301190399041231752771993767799847551279448012913842034323154888137932524887172099381195722163148101670274877379161830968937348720168944903299658932511996504109653674618914861599481632040891930577238630396311858213341337110096389113836596895914715370925073998461682046426447290788976525593505136546978364603183820619560578517561504972661817649030304982138534738696212234626114043035600967042547012317360449724623287452575151198771801585742829389025650825988275495110865424704218337264023078045681651420517807418196096401513461760794362769612228126118610912766814880500950963889032877710837651051900076128058473969258768737937306664751387942217354694021157675557568970168734104342446525522568974329716152742558110503495045718931752447070410307760830365536714180388723602948872805590752711115590794756926903978519601939790311768070356801944936106850640568519290645048685535628256787225734544146565541187816717729850612874044620890718502108518025052924590359814117522720320552642597751984410742492179242039080014606225999422109717176118746845802673724801365603866909971071347255859723217027554055085082090418987534829222004178998475030519537179062001509333023023881806519182405550818672164711702307529922652228033820404113386625335815042934115143980939986416365633923620673874259342713444701242702722227197573203194489407856355511639619115985907995399083680129468810771595938084908111251938016414866250141095286680914828503123938960997659175977315432797173945762560365023587931559926170852315074247849814256564693008105061976397395591733545472917526739598790117477449217745771908169489543790314578152667389689410604588351445026130645637237687631129964576699475767340673583537218704935177320214779403972566532581731659202199752942824432778102107532160580104432121067208273876100778332426569624765621063126975491546224343978061253999313893915782008560011171319773443130412998215626985098895722778159524505640435534979855872234521991778419564106622122049039017886737997905270552302412002780864726282517525092332555378737792434915926182736151242592242725872699844014132567954640475742451126102857394193479716383187138370722782422619384021010896271281685732287764210298708895557148397743497418109849633633910397778254225179400022143485886207532122646613614487518735142494469575836744785028013193033901949738716163113800864093408529297729741462836142201120573027427309566658849884965134295188287937016147499504685185116851709758146686994243673140036992381232483920618628663037402351333907771907455224248515748726136075048020960976567862025232356273025557054386729189255571672396871991669651834736987440295942395220863481341484029838939485593327256627318194137735451891544384960966451285561476772564932516923822003229733483331726306200059192067441136913243720403578098676440894672367334549903905283682411422011886949265324531399323764100563996744273693606586851243936737155349696358970470706246743064681511525580772367129358691546677179280674603197443660235664811911175324239792271603213932690900431433572511935591785787438931910836722219749594385217682817205537433987939372420698422586002026702204502341484432231418159837133223467338185995720215212999066855318593765188122815644349842897804044474253173187198249880219056124756835053121936684091113613451740380400041281474527453687530122741226292549431008458868082627169312891414237466973215688306962596297824286828479758198382340345222708757345393897126910174835179971320922911746435455023926629385455742630840473245989374307836875864087914312319228307304975362481708579849870550314357368660453504099679685389802578477910419231052505144696885248726344365369453921372194715998156624454330562798282777349584666757018969900985110164491047993602922961645132995224271404908186948080818144765441476070834943179921347693205775493727581146799477819807044909830887802418354528095576268178221596410712216509995196961932368766959924336939018675830477951348564967496643006978548120861013029026482640402316621018258604172734501970838570222765188590393123627245232006535983907604127898007628220791246163222713051906678029644273228763460060289213316094057396003523608149487855784819923604033709243920895785100953666245538047118419834068589948934026518132741951749125192568729824877982938351710224389886834755562218214866075518628420508441240855088408499405226548535776678864444680504301285988469915501692621173049550268365498340637943341584797390666973271817567111123445212701138287733170703648843560692535012857745637166012927846194135756491508269323010063559087991831480179606664893606864875569154700860602703909640090514609360513037280984989976472934205971076104365706670369636731086616773064361333184164332104073479210775688703754193241101764488071673304176268034528127946729244452919161882095335945667158450941476301537032588109254921620602423998383939639570864268315557737923542830477169053850721939927266830567227442913752680237178175908437269780708099690192695002592421020485193953805155158663266418230452129371046840218806665165231438597498081621420148051355131865453014871298249938624272154345372391802215126115854861975398983110888196358875565793593310597895992053240439684590862193232015232257668969509415398393721308747247732944493053757577694362680328316055060353219685001207195191671426063364056179006218671604638684249067247572855764071631397824639188693789635247708232195940400450829593853651517642510129335911478337995658501766175785429966837417247838838645892319920041196390925354226074199412181950196251598137076467085022479201649174056794994024967593003129957099742026595785390010668925864718839026058417582396497109522944729874183273952292247592156943695682037477731049514128818431210317476600507328613045698141876738705835589680568812062901672389707603039549708273418484069037215179862266581929555420755695654139976814235027490594662592770986044588793675562143709648705744665319814772892177290937799834952769995145061157204394128687121538756842568036622321369508041915737469009917048039885947260486258684449762362318724085339500204989295963618739437408918888568903691128987832325892601331155260901131911962536529384643993465666490271108522834470184768391573623895239732781158399355178022076177450755929138381468526577309152290502509145241134006895661073761320484545645543610238773087594308408699782711315425513472058939339453013548135244176754131385012770024156261936169649709944156933541666590935759784775946468953923516229723673403650805886186209888123677098892944769654360324668874429740130365009770291603536426502844618046128137324006034947889707723262364927515545013731797277615272236008596598736693841467685030166103516988390995570659331713219574003251046303604196295276316972893990945091279545361627593486818455830168634280653205028729105026906643726170661778439311154737149759096116144493812106746037251452616271615212935043141124155849847574091878458410177325030553207237661933970254488335435069113577757765584551136714634629223114497809546405079026755854160954260557783406467356189398503160303046687522579708387993298769182986822970667356246647939653365454544268386404322650296028881298557242198187208040207296077496128886166773288838620609977925416822156713703667391333322086520871904473048593017466793578173830832406459585018177267447690376523178740142636502172093102619263046542112708094769682392207383797482057034793196525139221370199877543931178601238198924707047629587501516299912892933069025343575488251454948469328322898202956506903308470482517744131166464774750723477861518055343466858040987132273453081836794564364430155246274158100731069323080734901590517008753654169600998911569598454702926629374049393677685285723039754691181021469267219333846563053673846537824970049506209403506606244584412627902384242785280551599253188262786271531989567165398385428909311577122438618119724985644233907558812574859217687149721341833317289714977694982117227337669878361212788465289349470676995146785835955074121568375032937822352378665103266923449887690619794116574936418347914823983988002067649967289214983486424468737742286438563064425223461210639952418146166111391586408089740413945879849036682695488197808766021959964846771145698159367567904768112047055740602351237499012258567357965107013251562237843754994747236883821060645969480067316032381351192535148322216761442411144695361182838761115795911310362420741510826322048374540404146990479647073113428368300158247350712922331119789013179701651764033036649606749518628656836032556353205617386602749327417799524243899880581322620681297935615821202736455540414428705857131835238951742471239050758919353490570268302812810704750603181709274434806504843422134152201579626776393642698168851485545206897802036257496043584180735523092410264794436423951474855853980259367017205588767985309971043290404884467541701918912275745752402121744890326681160647837985004639864193645792082105266057503921195311457592621400830660301768120178560328650220171413811642155986702637531155554821958388905393544592180587272433749899242041542816666821846374863337522729077994208960545264863862516411718049112903451378140021506899966762080732651380427792460930762263446994159193223142565029996403134383564087766689537759857473403120477091886596355579944643688205981242040477802943803932459722207541739589596692034052161680837588921636048584789929663903107349945667027830610483130862872680661015300745521669893857383782690975026078691245077096697355744971063878379083608563324774011426604588797712843335089341752120843133549155805945217503766728136818989701075795034975931147113851177529084708382646930943663837851488798723688771534770333456570254004964039987760745951276145936694695508877796318400093229973736770518512573233230127134210937068680950264362225510872877141635601716276267040168996816287213326422268377855327887822310204539762272583014902609710931194995685950834598509258803363019551891846212990914920155838298607568190737375958573348261713794703592503972126314316192159571451081744034114847904386601284244643362857392442316767411036417557776991886719910511456902002905771699177497748359489810115650557253501242519595931483440417116222205504589671636754478042893488385500275211497526246421122010774862333476246182576597178403980436617669560567049936789350370893174617560282074679058110806280348893136768773133234721178541038289213080580369302853910384704528018344058313252744129928355732704028220901951560054449764635932065083760864473989692709381120504251266930834839999956860216356148940167442564078469350152730245749435722205009403680810321136898946443062041659878360406811331217133504960504944165472883926378607868385731515366373416312566122603235977742473940324793478740770352725436532455308438250865693864330020957120719122826689237609273524467576647981797622831709248187143189474449928329051087066866263901462754600186683583622062445553828867143621415773638244852570664653423002003386087185683387095282564231892337305827467825102905239214464117590700082862874915647212962223100149842773910585262712095702633425139069275541249925826898755913048489059083665047386569005980726512682643809800080768716889749767005747228285165430935469423701296901225200041775975278099341399149455675655415791289014141807180970818010668626000334746783492116354330741766556197865412944331579610856733907210970815247694360208231077377319255935591919361509992241851869762511821971598449396422923222586939583205849537600173388242916813257003198490942805178528782842560021549233235032941872842601109623432061485547579038802849228139397130979180562447703494299530585909415031237400213445431607049538809117870571045686211621069655023028886617060314580222884344906879404890744067164557565160596397488164744575409400891911083945126233990453364772541741331330821153758983077390402549739751620825837898384996200874749622331436354553599710472896396262914675542281735624665804212007275401273982269651802596130334329792865330063654175676003369688243926391280713123038760076039957285658333390838592534249337153070457471482743551037417147024006867419141874398230449202772009682282474640802779068104741602882613440803256607530230172031981070796893051954145239327661783905828943932146148894821695918579498502263858318704473290299790473193753803543920285706350672484245008920689712995308213747335255792982565803469779504974053329506220584586976782376547358092670753891736652401577525890202354883227480678961328466821865972869785592672826822656457577958670571097728396605101516387163615321918203652729897586807786443044896628670393188486921931839182927172554503767733076856308657600665342622254535057629030862718937364327448083558928220102374951534665262857504222950995446014428801859061443379679142717413278286975998259993819084477469775220567898395378570154609157695006128689610825519373486612568225010585752375050450503641627804406676905130564807191014132285063482665726828511933059433717373899623654715534816591630086838520905491060194596758223701911513581142071521220673521948777069521608531717477580542554138038978873716058241771904252401056370661792996395808706717083872950238057238547610495061732689587948240319569499000594593719849004104550034415014066154526994609094441391439071866309009249691812468813088126242358787204856089608234037677437509496768451058059579977189006605354903359961784245121096144877063187466910292356627771165203522647016166296488083808997887687769308220856530068153940856748041349469491870704992660210066455819832886130678021460369893174499939107231230405088342485383796742208847060385334943928147519685791292174441917386398739155908915859310750449419969425856920503891277550092560029225566028245733054164370482965351532695757311986033153861767127072322962670122480612322195488891848040149357757131302308897501348573600357134307046628157178720021578705983302856401851403674168523579202306440644159448586566246905477964086572462611834063213025126230896949713642334585419351128373132157232101577687884147986752364441711298472354763142715850293434746434127230225735792097083439910498394019789979870351837786010778667226102241684498686398874227580631272581474396676719404444290071284914286251867085092358453277091441099575357659812178523756848934429670368686181229928033433456696493460770903592231804072849827640955873854491455416480621098619090449331761288966135325413062313991971462332768487224184119088841054819270878948939590681778579588918587881426099241767753862382406002451821149035160124492893940578494055432173589779503867792448614769448734671863583817296627073341404027631029821562303142157743379294616649374361560459036060298581224576085252700570061877609582745974967405315882162695982851143006320897730473133461172142945805407178876223011462558510520930761771493278603541262719880522826864107055049364370555816945830840650960447321868266858216903784868032280479864021706315653687489290467679015864709379478762373013822026373788822827564163725872670921602434077279298565679825234946428376162918717556993454693724759744644374586123577768842647346924365909558553162571564807969034052671504760754742676960038255814034354716520834598864538432593908154392918939089896109083521992519053530398359081516289247571043354786424954980741388745386023113329591390636006694539437438690759589121288758007804082911975207095278133335550232776761783391381794105109412999680430103899475051243232331431120663598726618610084717254696908726637456858466646162093223427680684601718516702427671125913080059583053658180035991214447685286534985397013876080817020918472863351368783745251292936294373137797794168163130983688833624592488270042533275310174037401858155192663147588032450316349828944090941459435709839331454077937638533884824056964583661906580362312059760037127664830995125859310214290237306052000883415749724405028863402500028747055233688541068593389039662379913776485715772093749681055718277781429659244251666703110135820625316518906936462663613376783677001574909561444962828205690820330013121289873007855206280915035880334071746233511142838096550651818271177825964147342275885803162473648253508879276299074813242692461714169521068548818275361612786955216412383263246164034602771053052217127416909831714425842754359325193708367920524870186212708574531518197079797624156322369627530303625010057401503185241771381716916959066550480494267473696656051819527729740440782487416353087074803447126307550453018768734511631260002571765708294113447159058326859464022975489061868569715529325333679192904509181338989039531226114077604146341395120253199068720690450654317360799352434791082039695478061926453254644053124586362026016156957888326419910345519741792140396061817459467332211367113051675844970722080638249309285348257747082754939860608508486386549912912220391895379332321814344998458680557267915553525212113907723389037979427485209309504641599639196053296030292739274663906234190084882219800040754390250718430168480866157009022053158273857417267902310193566064243660834080202786392263652453395504706244108957791049298908397097715806857036527872932846771952274875201321856644284239116502005786314083266606564469023548865452436995428173054383481532525156311603438941440612599662264959878769003712412406305072713049361060777519351766684350979095112470377728527045181653556285621656761979382960837252084759203181114384404005114613990326273362146150667851880079327563486444803726963278475818453468509565365380723807736793526242145533088833679727074192838872685484977387306670007551965761431583941102042492623133242770270821710047137152167948872468741189259805623910487138975034203376673344989060052111727844670530521327425332189734978888307943626099125569741350839434061750712876445222039557455150019442996232739317091487905148812821582894579949748623433452865460274945133477267345362799684706610937707688048379567860499887327287273158785195505216946986571759372875984514994087366735699690322212619073372131984972873714823922056361158276719293687517950957314775347729780073870450969204201405641649670458849057466793682155521901095027966023590200629563426621697556166261956721403439803621918243177242110484823901622121433246394511832190737036276362556947535372619436126996645342229589006736952014870393865015087074414735220220770411070088328030731545041085721762448600324574529642445801550887535581445128918173686346116567111050151109714760544361537920207546115073529167935359803746233158035402507293585422134950239655004818456256327794930441926282941363007224150758144477688955569616025741423859274415740477217643474948663183182648210083785749080222199122144694117400270856159095104885845967392332602301843740328702808569782311182460392642129024729192535226787567897868564600570545108945374190649371558894253329703486982693386634574807801078719254129784907155276683405362407228975018016417486695226639468897799829747034414846605232977531914266638473906810541671168066131262918834764800639654762345192540580400257727950859061817326000188356677576249635084512266410557551645134470262083485480776173701923626406384831371842087477223094467978661221649689842322789248762605167898686475739012260361067924661728390016267344059903224026536343550301552983264519865881303942586617734987280231892544278016113318354276103258002393942607858756949485119300715853929843163967575531352484221274814864027297307155457109423432471856970523635672286551516265672389248080659279448953078708153606666741314598260798811278754656313007785743484189610809499119436037561075326359414143476882494692530787790693275290895909945065272071979419682741840819830567497688086236460819345623637702467815073133466197923119939117195979352833117496820500577299938566476984260815518940866776320855483159836188850448339911351505132909703990088919063133375804094886955895465912648104534621430295733375992898959329664444686900648674531661878821297194146191914132978673375283702995190706179924178140249356285006536273771636355569720003246996130665282451695167273161831393867558791278264933758040011059211372270839123518459709107480669852696080909181872978501574064544548264471078633386599113188810137746318984496745989011540334259315347740082110734818471521253374507271538131048296612979081477663269791394570357390537422769779633811568396223208402597025155304734389883109376
[30]:
0b100110
[30]:
38
[31]:
1 == 2
[31]:
False
[32]:
1 < 2
[32]:
True
[33]:
1 + (2 * 3)
[33]:
7
[34]:
(1 + 2) * 3
[34]:
9
[35]:
2 * 3 * 4
[35]:
24
[36]:
20 % 3
[36]:
2
[37]:
2 * 10 % 3
[37]:
2
[38]:
(2 * 10) % 3
[38]:
2

Exponentiation

[39]:
2**64
[39]:
18446744073709551616
[40]:
3 * 2**64 == 3 * (2**64)
[40]:
True

Floor Division

[41]:
3 / 2    # <----------------- Python 3!!!!!
[41]:
1.5
[42]:
3//2
[42]:
1

Variablen? Datenypen?#

[43]:
type(do_something)
[43]:
function
[44]:
type(a)
[44]:
int
[45]:
a = do_something
[46]:
type(a)
[46]:
function
[47]:
help(a)
Help on function do_something in module __main__:

do_something(a, b)
    diese funktion ist komplett sinnlos, und nimmt parameter a und b, die integers
    sein sollten, sonst funktioniert das ganze hier nicht.

    der returnwert ist noch sinnloserer weise die summe der parameter.

[48]:
a(2, 3)
[48]:
5
[49]:
a.__doc__
[49]:
'diese funktion ist komplett sinnlos, und nimmt parameter a und b, die integers\n    sein sollten, sonst funktioniert das ganze hier nicht.\n    \n    der returnwert ist noch sinnloserer weise die summe der parameter.'
[50]:
dir(a)
[50]:
['__annotations__',
 '__call__',
 '__class__',
 '__closure__',
 '__code__',
 '__defaults__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__get__',
 '__getattribute__',
 '__globals__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__kwdefaults__',
 '__le__',
 '__lt__',
 '__module__',
 '__name__',
 '__ne__',
 '__new__',
 '__qualname__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__']
[51]:
a.__name__
[51]:
'do_something'
[52]:
a.__class__
[52]:
function

Objects, Classes#

[53]:
class Karteikarte:
    def __init__(self, firstname, lastname, svnr):
        self.firstname = firstname
        self.lastname = lastname
        self.svnr = svnr
    def format(self):
        my_formatted_person = self.firstname + ' ' + self.lastname + ' (' + self.svnr + ')'
        return my_formatted_person
[54]:
joerg = Karteikarte('Joerg', 'Faschingbauer', '1037190666')
caro = Karteikarte('Caro', 'Faschingbauer', '123425041997')
[55]:
print(joerg.firstname + ' ' + joerg.lastname + ' (' + joerg.svnr + ')')
Joerg Faschingbauer (1037190666)
[56]:
print(caro.firstname + ' ' + caro.lastname + ' (' + caro.svnr + ')')
Caro Faschingbauer (123425041997)
[57]:
caros_string = caro.format()
joergs_string = joerg.format()
[58]:
print(caros_string)
Caro Faschingbauer (123425041997)
[59]:
dir(caro)
[59]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'firstname',
 'format',
 'lastname',
 'svnr']
[60]:
caro.__class__
[60]:
__main__.Karteikarte
[61]:
caro.format
[61]:
<bound method Karteikarte.format of <__main__.Karteikarte object at 0x7ff0dc48b490>>

und strings???

[62]:
s = 'Mississippi'
[63]:
s.__class__
[63]:
str
[64]:
type(s)
[64]:
str
[65]:
s.count('ss')
[65]:
2
[66]:
pos = s.find('ss')
[67]:
pos
[67]:
2
[68]:
next_pos = s.find('ss', pos+1)
[69]:
next_pos
[69]:
5

Datatype Conversions#

[70]:
type(str)
[70]:
type
[71]:
type(Karteikarte)
[71]:
type
[72]:
s = str('abc')
[73]:
s
[73]:
'abc'
[74]:
s = 'abc'
[75]:
s
[75]:
'abc'
[76]:
i = 42
[77]:
s = str(i)
s
[77]:
'42'
[78]:
type(int)
[78]:
type
[79]:
i = int('666')
[80]:
i
[80]:
666
[81]:
type(i)
[81]:
int
[82]:
int('0xdeadbeef', 16)
[82]:
3735928559
[83]:
float('0.1234')
[83]:
0.1234
[84]:
try:
    float('Joerg')
except Exception as e:
    print(e, type(e))
could not convert string to float: 'Joerg' <class 'ValueError'>
[85]:
bool(1)
[85]:
True
[86]:
bool(42)
[86]:
True
[87]:
bool(-1)
[87]:
True
[88]:
bool(0)
[88]:
False
[89]:
bool('Joerg')
[89]:
True
[90]:
bool('')
[90]:
False
[91]:
if 'Joerg':
    print('Oida!')
Oida!
[92]:
if len('Joerg') != 0:
    print('Oida!')
Oida!
[93]:
l = [1,2,3]
type(l)
[93]:
list
[94]:
l = list('Joerg')
l
[94]:
['J', 'o', 'e', 'r', 'g']
[95]:
import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Boolean#

[96]:
True and False
[96]:
False
[97]:
True or False
[97]:
True
[98]:
False or False
[98]:
False
[99]:
True and True
[99]:
True
[100]:
False and True
[100]:
False
[101]:
def wahr():
    print('wahr')
    return True
def falsch():
    print('falsch')
    return False
[102]:
x = wahr()
print(x)
wahr
True
[103]:
if wahr():
    print('jo eh')
else:
    print('nix da')
wahr
jo eh
[104]:
if wahr() and wahr():
    print('jo eh')
wahr
wahr
jo eh
[105]:
if wahr() or falsch():
    print('jo eh')
wahr
jo eh
[106]:
if falsch() and wahr():    # False and True
    print('jo eh')
else:
    print('nix da')
falsch
nix da

Compound Datatypes#

Listen#

[107]:
l = [1, 2, 'drei', ['4.0', 5], 666.7]
[108]:
len(l)
[108]:
5
[109]:
l[0]
[109]:
1
[110]:
l[3]
[110]:
['4.0', 5]
[111]:
l[3][1]
[111]:
5
[112]:
l[2][2]
[112]:
'e'
[113]:
l[3][0][1]
[113]:
'.'
[114]:
try:
    l[4][3]
except Exception as e:
    print(e, type(e))
'float' object is not subscriptable <class 'TypeError'>

BTW, wie kriegt man die Nachkommastellen aus einem Float raus?

[115]:
f = 666.789

Erste Moeglichkeit:

[116]:
round((f - (int(f))) * 1000)
[116]:
789

Zweite Moeglichkeit:

[117]:
f_str = str(f)
f_str
[117]:
'666.789'
[118]:
punkt_pos = f_str.find('.')
[119]:
punkt_pos
[119]:
3
[120]:
nachkomma_str = f_str[punkt_pos+1:]
[121]:
int(nachkomma_str)
[121]:
789

Weiter im Text …

[122]:
l
[122]:
[1, 2, 'drei', ['4.0', 5], 666.7]
[123]:
l.append('sieben')
[124]:
l
[124]:
[1, 2, 'drei', ['4.0', 5], 666.7, 'sieben']
[125]:
l.extend(['eight', 9.0])
[126]:
l
[126]:
[1, 2, 'drei', ['4.0', 5], 666.7, 'sieben', 'eight', 9.0]
[127]:
l.extend('aber hallo')
[128]:
l
[128]:
[1,
 2,
 'drei',
 ['4.0', 5],
 666.7,
 'sieben',
 'eight',
 9.0,
 'a',
 'b',
 'e',
 'r',
 ' ',
 'h',
 'a',
 'l',
 'l',
 'o']
[129]:
l1 = [1,2,3]
l2 = ['vier', 'fuenf']
l = l1+l2
l
[129]:
[1, 2, 3, 'vier', 'fuenf']

Tuple#

[130]:
t = (1,2,3)
[131]:
t[0]
[131]:
1
[132]:
t[1:]
[132]:
(2, 3)
[133]:
try:
    t.append(4)
except Exception as e:
    print(e, type(e))
'tuple' object has no attribute 'append' <class 'AttributeError'>

Single element tuples?

[134]:
t = (1)     # '(', ')': Operator praezedenz
type(t)
[134]:
int
[135]:
(1+2)*3
[135]:
9
[136]:
t = ((1))
t
[136]:
1
[137]:
[(1)]
[137]:
[1]
[138]:
(1,)
[138]:
(1,)
[139]:
t1 = (1,2,3)
t2 = ('vier', 'fuenf')
t = t1+t2
t
[139]:
(1, 2, 3, 'vier', 'fuenf')

Dictionary#

[140]:
table = {'one': 1,
        'two': 2}
[141]:
table['two']
[141]:
2
[142]:
table['three'] = 3
[143]:
'three' in table
[143]:
True
[144]:
'four' in table
[144]:
False
[145]:
del table['one']
[146]:
'one' in table
[146]:
False
[147]:
'one' not in table
[147]:
True
[148]:
not 'one' in table
[148]:
True

Set#

Sequentielle Suche in Liste

[149]:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
[150]:
2 in l
[150]:
True
[151]:
11 in l
[151]:
True
[152]:
12 in l
[152]:
False
[153]:
s = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
[154]:
11 in s
[154]:
True
[155]:
s.remove(11)
[156]:
11 not in s
[156]:
True
[157]:
type(s)
[157]:
set

Frage: wie wandele ich ein Dictionary in ein Set um? Oder gach in eine Liste?

[158]:
table
[158]:
{'two': 2, 'three': 3}
[159]:
list('Joerg')   # <-- ITERATION
[159]:
['J', 'o', 'e', 'r', 'g']
[160]:
set('Joerg')
[160]:
{'J', 'e', 'g', 'o', 'r'}
[161]:
for k in table.keys():
    print(k)
two
three
[162]:
for k in table:
    print(k)
two
three
[163]:
set(table)
[163]:
{'three', 'two'}

Wie mache ich aus einem Set ein Dictionary? (Hm. Woher kommen die Keys?)

[164]:
import random
[165]:
s = {1, 2, 3}
[166]:
d = {}
for element in s:
    d[element] = random.randrange(100)
[167]:
d
[167]:
{1: 65, 2: 45, 3: 69}

Python Standard Libarary Examples#

collections#

ChainMap#

[168]:
from collections import ChainMap
[169]:
d1 = {'one': 1, 'two': 2}
d2 = {'three': 3, 'four': 4}
[170]:
chained = ChainMap(d1, d2)
chained['one']
[170]:
1
[171]:
chained['three']
[171]:
3
[172]:
chained['five'] = 5
[173]:
d1
[173]:
{'one': 1, 'two': 2, 'five': 5}
[174]:
d2
[174]:
{'three': 3, 'four': 4}
[175]:
try:
    d['ten']
except Exception as e:
    print(e, type(e))
'ten' <class 'KeyError'>

deque#

Liste vorne anhaengen:

[176]:
l = [3,4,5]
l.append(6)
[177]:
l.insert(0, 2)
l
[177]:
[2, 3, 4, 5, 6]
[178]:
del l[0]
[179]:
l
[179]:
[3, 4, 5, 6]

Aber: langsamer als man sich wuenschen wuerde

[180]:
import collections
[181]:
d = collections.deque([3, 4, 5])
[182]:
d
[182]:
deque([3, 4, 5])
[183]:
d.append(6)
d
[183]:
deque([3, 4, 5, 6])
[184]:
d.appendleft(2)
d
[184]:
deque([2, 3, 4, 5, 6])
[185]:
d.extend('Joerg')
d
[185]:
deque([2, 3, 4, 5, 6, 'J', 'o', 'e', 'r', 'g'])
[186]:
d.extendleft('Faschingbauer')
d
[186]:
deque(['r',
       'e',
       'u',
       'a',
       'b',
       'g',
       'n',
       'i',
       'h',
       'c',
       's',
       'a',
       'F',
       2,
       3,
       4,
       5,
       6,
       'J',
       'o',
       'e',
       'r',
       'g'])
[187]:
relem = d.pop()
relem
[187]:
'g'
[188]:
d
[188]:
deque(['r',
       'e',
       'u',
       'a',
       'b',
       'g',
       'n',
       'i',
       'h',
       'c',
       's',
       'a',
       'F',
       2,
       3,
       4,
       5,
       6,
       'J',
       'o',
       'e',
       'r'])
[189]:
d.popleft()
[189]:
'r'
[190]:
d
[190]:
deque(['e',
       'u',
       'a',
       'b',
       'g',
       'n',
       'i',
       'h',
       'c',
       's',
       'a',
       'F',
       2,
       3,
       4,
       5,
       6,
       'J',
       'o',
       'e',
       'r'])

os.path#

[191]:
import os.path
[192]:
os.path.join('a', 'b')
[192]:
'a/b'
[193]:
os.path.normpath('a/b/c/d/../../x')
[193]:
'a/b/x'

Suchalgorithmen und Datenstrukturen (Ausflug)#

[194]:
l = [5, 3, 1, 10, 8, 0]
l.sort()
[195]:
l
[195]:
[0, 1, 3, 5, 8, 10]
[196]:
l = [5, 3, 1, 10, 8, 0]
sorted_l = sorted(l)
[197]:
l
[197]:
[5, 3, 1, 10, 8, 0]
[198]:
sorted_l
[198]:
[0, 1, 3, 5, 8, 10]
[199]:
t = (5, 3, 1, 10, 8, 0)
sorted_t = sorted(t)
[200]:
t
[200]:
(5, 3, 1, 10, 8, 0)
[201]:
sorted_t
[201]:
[0, 1, 3, 5, 8, 10]
[202]:
type(sorted_t)
[202]:
list
[203]:
s = 'Joerg'
sorted_s = sorted(s)
[204]:
s
[204]:
'Joerg'
[205]:
sorted_s
[205]:
['J', 'e', 'g', 'o', 'r']

Slicing#

[206]:
text = 'Hello World'
[207]:
len(text)
[207]:
11
[208]:
text[0:5]
[208]:
'Hello'
[209]:
text[:5]
[209]:
'Hello'
[210]:
text[6:11]
[210]:
'World'
[211]:
text[6:]
[211]:
'World'
[212]:
text = 'Mississippi'
pos = text.find('ss')
pos
[212]:
2
[213]:
subtext = text[pos:]
subtext
[213]:
'ssissippi'

Copy:

[214]:
text
[214]:
'Mississippi'
[215]:
id(text)
[215]:
140672464726576
[216]:
copied_text = text[:]
copied_text
[216]:
'Mississippi'
[217]:
id(copied_text)
[217]:
140672464726576
[218]:
l = [1,2,3]
copied_l = l[:]
copied_l
[218]:
[1, 2, 3]
[219]:
id(l)
[219]:
140672464784832
[220]:
id(copied_l)
[220]:
140672464784064

Slice Assignment#

[221]:
l = [2, 3, 'a', 'b', 7]    # wanted: [2,3,4,5,6,7]
[222]:
l[2:4]
[222]:
['a', 'b']
[223]:
l[2:4] = [4,5,6]
l
[223]:
[2, 3, 4, 5, 6, 7]
[224]:
l[:0]
[224]:
[]
[225]:
l[:0] = [0,1]
l
[225]:
[0, 1, 2, 3, 4, 5, 6, 7]
[226]:
l.insert(0, -1)
l
[226]:
[-1, 0, 1, 2, 3, 4, 5, 6, 7]
[227]:
l[len(l):]
[227]:
[]
[228]:
l[len(l):] = [8,9]
[229]:
l
[229]:
[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Lesbarer:

[230]:
l.extend([10,11])
[231]:
l
[231]:
[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

References, (Im)mutability#

[232]:
a = 42
[233]:
id(a)
[233]:
140672599989840
[234]:
b = a
id(b)
[234]:
140672599989840
[235]:
a += 1
[236]:
a
[236]:
43
[237]:
id(a)
[237]:
140672599989872
[238]:
id(b)
[238]:
140672599989840
[239]:
b
[239]:
42

Lists are mutable#

[240]:
l1 = [1, ['abc', 'def'], 3]
len(l1)
[240]:
3
[241]:
l1[0]
[241]:
1
[242]:
l1[1]
[242]:
['abc', 'def']
[243]:
l1[2]
[243]:
3

Machen wir eine Kopie:

[244]:
l2 = l1[:]
[245]:
id(l1)
[245]:
140672464751872
[246]:
id(l2)
[246]:
140672464768512
[247]:
l1
[247]:
[1, ['abc', 'def'], 3]
[248]:
l2
[248]:
[1, ['abc', 'def'], 3]
[249]:
l1.append(4)
l1
[249]:
[1, ['abc', 'def'], 3, 4]
[250]:
l2
[250]:
[1, ['abc', 'def'], 3]
[251]:
l1[1]
[251]:
['abc', 'def']
[252]:
l2[1]
[252]:
['abc', 'def']
[253]:
l1[1].append('ghi')
l1
[253]:
[1, ['abc', 'def', 'ghi'], 3, 4]
[254]:
l2
[254]:
[1, ['abc', 'def', 'ghi'], 3]
[255]:
id(l1[1])
[255]:
140672464594880
[256]:
id(l2[1])
[256]:
140672464594880
[257]:
l1[1] is l2[1]
[257]:
True

ist das gleiche wie …

[258]:
id(l1[1]) == id(l2[1])
[258]:
True
[259]:
l1.insert(0, -100)
l1
[259]:
[-100, 1, ['abc', 'def', 'ghi'], 3, 4]
[260]:
l1[2] is l2[1]
[260]:
True
[261]:
l2
[261]:
[1, ['abc', 'def', 'ghi'], 3]
[262]:
l2[1].append('jkl')
[263]:
l2
[263]:
[1, ['abc', 'def', 'ghi', 'jkl'], 3]
[264]:
l1
[264]:
[-100, 1, ['abc', 'def', 'ghi', 'jkl'], 3, 4]

Shallow copy and deep copy#

[265]:
l1 = [1, ['abc', 'def'], 3]

Shallow copy:

[266]:
l2 = l1[:]
[267]:
l1[1] is l2[1]
[267]:
True

Deep copy:

[268]:
import copy
[269]:
l3 = copy.deepcopy(l1)
l1[1] is l3[1]
[269]:
False
[270]:
l1[1].append('ghi')
l1
[270]:
[1, ['abc', 'def', 'ghi'], 3]
[271]:
l3
[271]:
[1, ['abc', 'def'], 3]

while Loops#

[272]:
i = 0
while i < 10:
    i += 1
print(i)
10
[273]:
i = 0
while i < 10:
    print('hallo suesser')
    i += 1
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
[274]:
for i in range(10):
    print('hallo suesser')
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
hallo suesser
[275]:
import random
while True:
    number = random.randrange(1,7)
    if number == 6:
        print('yay!')
        break
    else:
        print(f'lose ({number})')
lose (3)
lose (1)
lose (1)
lose (1)
lose (2)
lose (3)
yay!

else#

Potschert: Flag

[276]:
import random

sechser_gewuerfelt = False
n_tries = 0
while n_tries < 6:
    n_tries += 1
    number = random.randrange(1,7)
    if number == 6:
        sechser_gewuerfelt = True
        break

if sechser_gewuerfelt:
    print('yay!')
else:
    print('versager!')
yay!
[277]:
import random

n_tries = 0
while n_tries < 6:
    n_tries += 1
    number = random.randrange(1,7)
    if number == 6:
        print('yay!')
        break
else:
    print('versager!')
versager!

for Loops, range()#

[278]:
for name in ['Caro', 'Johanna', 'Eva', 'Jörg']:
    print(name)
Caro
Johanna
Eva
Jörg
[279]:
for _ in [0,1,2,3,4,5]:
    number = random.randrange(1,7)
    if number == 6:
        print('yay!')
        break
else:
    print('versager!')
versager!
[280]:
for _ in range(6):     # python2: xrange()
    number = random.randrange(1,7)
    if number == 6:
        print('yay!')
        break
else:
    print('versager!')
yay!
[281]:
for i in range(3):
    print(i)
0
1
2
[282]:
for i in range(3,10):
    print(i)
3
4
5
6
7
8
9
[283]:
for i in range(3,10,2):
    print(i)
3
5
7
9

Iterator Protocol#

[284]:
r = range(3)
r
[284]:
range(0, 3)
[285]:
type(r)
[285]:
range
[286]:
it = iter(r)
it
[286]:
<range_iterator at 0x7ff0dc48bed0>
[287]:
next(it)
[287]:
0
[288]:
next(it)
[288]:
1
[289]:
next(it)
[289]:
2
[290]:
try:
    next(it)
except StopIteration as e:
    print(e, type(e))
 <class 'StopIteration'>
[293]:
for i in range(3):
    print(i)
0
1
2

Iteration over Compound Datatypes#

[295]:
s = {1,2,3}
for element in s:
    print(element)
1
2
3
[296]:
d = {
    0: 'zero',
    1: 'one',
    2: 'two',
}
[297]:
for element in d:
    print(element)
0
1
2
[300]:
for key in d.keys():
    print(key)
0
1
2
[302]:
for value in d.values():
    print(value)
zero
one
two
[303]:
for element in d.items():
    print(element)
(0, 'zero')
(1, 'one')
(2, 'two')
[304]:
for pair in d.items():
    key = pair[0]
    value = pair[1]
    print(f'Key: {key}, value: {value}')
Key: 0, value: zero
Key: 1, value: one
Key: 2, value: two

Tuple unpacking:

[309]:
a, b = 1, 2
[310]:
(a, b) = (1, 2)
[307]:
a
[307]:
1
[308]:
b
[308]:
2
[311]:
t = (1, 2)
a, b = t
[312]:
a
[312]:
1
[313]:
b
[313]:
2
[314]:
for key, value in d.items():
    print(f'Key: {key}, value: {value}')
Key: 0, value: zero
Key: 1, value: one
Key: 2, value: two

Functions#

[317]:
def maximum(a, b):
    if a < b:
        return b
    return a
[316]:
maximum(1,2)
[316]:
2
[319]:
maximum('abc', 'def')
[319]:
'def'
[325]:
'abc' < 'def'
[325]:
True
[326]:
'Huber' > 'Hannes'
[326]:
True
[323]:
1 < 2
[323]:
True
[328]:
try:
    1 < 'abc'
except Exception as e:
    print(e, type(e))
'<' not supported between instances of 'int' and 'str' <class 'TypeError'>
[331]:
try:
    maximum(1, 'abc')
except Exception as e:
    print(e, type(e))
'<' not supported between instances of 'int' and 'str' <class 'TypeError'>
[335]:
[3,1,4] < [3,4,5]
[335]:
True
[336]:
maximum([3,1,4], [3,4,5])
[336]:
[3, 4, 5]

Default Parameters#

[338]:
def greet(name, phrase):
    return phrase + ', ' + name
print(greet('Joerg', 'Hallo'))
Hallo, Joerg
[339]:
def greet(name, phrase='Hallo'):
    return phrase + ', ' + name
greet('Joerg')
[339]:
'Hallo, Joerg'
[340]:
greet('Joerg', 'Gruess Gott')
[340]:
'Gruess Gott, Joerg'

Default Parameters: Pitfalls#

[341]:
def fill_in_user(svnr, firstname, lastname, database):
    if database.get(svnr):
        raise Exception(svnr + ' gibts scho')
    database[svnr] = (firstname, lastname)
[342]:
my_db = {}
fill_in_user('1037190666', 'Joerg', 'Faschingbauer', my_db)
my_db
[342]:
{'1037190666': ('Joerg', 'Faschingbauer')}
[351]:
def fill_in_user(svnr, firstname, lastname, database={}):
    if database.get(svnr):
        raise Exception(svnr + ' gibts scho')
    database[svnr] = (firstname, lastname)
[352]:
fill_in_user('1037190666', 'Joerg', 'Faschingbauer')
[353]:
try:
    fill_in_user('1037190666', 'Joerg', 'Faschingbauer')
except Exception as e:
    print(e, type(e))
1037190666 gibts scho <class 'Exception'>

dict.fromkeys()#

[372]:
dict.fromkeys(range(5))
[372]:
{0: None, 1: None, 2: None, 3: None, 4: None}
[373]:
dict.fromkeys(range(5), 666)
[373]:
{0: 666, 1: 666, 2: 666, 3: 666, 4: 666}
[374]:
l = [2, 3, 1, 10, 3, 3, 1, 10, 5, 2]
uniq_dict = dict.fromkeys(l)
uniq_dict
[374]:
{2: None, 3: None, 1: None, 10: None, 5: None}
[375]:
for key in uniq_dict.keys():
    print(key)
2
3
1
10
5
[377]:
list(uniq_dict.keys())
[377]:
[2, 3, 1, 10, 5]

Generators#

Generator, der die Quadratzahlen startend von einem konfigurierbaren Startwert ausgibt …

Start = 3 9, 16, 25, 36, 49, …

[378]:
def squares(start, max):
    l = []
    i = start
    while True:
        sqnum = i**2
        i += 1
        if sqnum == max:
            break
        l.append(sqnum)
    return l
[381]:
for num in squares(3, 100):
    print(num)
9
16
25
36
49
64
81
[393]:
def squares(start, max):
    i = start
    while True:
        sqnum = i**2
        i += 1
        if sqnum >= max:
            break
        yield sqnum
[383]:
for num in squares(3, 100):
    print(num)
9
16
25
36
49
64
81
[394]:
sq = squares(3, 50)
sq
[394]:
<generator object squares at 0x7ff014b01820>
[395]:
it = iter(sq)
next(it)
[395]:
9
[396]:
next(it)
[396]:
16
[397]:
next(it)
[397]:
25
[398]:
next(it)
[398]:
36
[399]:
next(it)
[399]:
49
[401]:
try:
    next(it)
except Exception as e:
    print(e, type(e))
 <class 'StopIteration'>

Miscellaneous String Methods#

[403]:
s = '    \n\r\t   '
s.isspace()
[403]:
True
[404]:
'abcDEF'.isalpha()
[404]:
True
[406]:
'abc'.isidentifier()
[406]:
True
[408]:
'_'.isidentifier()
[408]:
True
[409]:
'666'.isidentifier()
[409]:
False
[411]:
'abc'.capitalize()
[411]:
'Abc'
[413]:
'abc'.upper()
[413]:
'ABC'
[414]:
'hallo'.center(50)
[414]:
'                      hallo                       '
[416]:
'file.xslx'.endswith('.xslx')
[416]:
True
[417]:
s = 'mississippi'
[418]:
s.find('ss')
[418]:
2
[419]:
s.find('ss', 3)
[419]:
5
[420]:
s.find('xxx')
[420]:
-1
[421]:
s.index('ss')
[421]:
2
[422]:
s.index('ss', 3)
[422]:
5
[424]:
try:
    s.index('xxx')
except Exception as e:
    print(e, type(e))
substring not found <class 'ValueError'>

join, split#

[427]:
l = ['abc', 'def']
','.join(l)
[427]:
'abc,def'
[428]:
import os.path
[430]:
os.path.join('abc', 'def')
[430]:
'abc/def'
[432]:
'abc:def'.split(':')
[432]:
['abc', 'def']
[437]:
firstname, lastname = 'joerg:faschingbauer'.split(':')
[438]:
firstname
[438]:
'joerg'
[440]:
lastname
[440]:
'faschingbauer'

strip, lstrip, rstrip#

[441]:
'         abc       '.strip()
[441]:
'abc'
[442]:
'         abc       '.lstrip()
[442]:
'abc       '
[443]:
'         abc       '.rstrip()
[443]:
'         abc'
[444]:
'xy   abc    yz'.strip('xyz')
[444]:
'   abc    '

List Comprehension#

[445]:
def squares(l):
    lret = []
    for i in l:
        lret.append(i**2)
    return lret
[447]:
numbers = [1,2,3,4]
sqnums = squares(numbers)
for i in sqnums:
    print(i)
1
4
9
16
[449]:
sqnums = [i**2 for i in numbers]
for i in sqnums:
    print(i)
1
4
9
16
[450]:
for i in [i**2 for i in numbers if i%2 == 0]:
    print(i)
4
16

Raw Strings#

[451]:
s = 'C:\irgendwas\nochwas'
[452]:
print(s)
C:\irgendwas
ochwas
[453]:
s = 'C:\\irgendwas\\nochwas'
[454]:
print(s)
C:\irgendwas\nochwas
[456]:
s = r'C:\irgendwas\nochwas'
[455]:
print(s)
C:\irgendwas\nochwas