Het Werk, Inkomsten & Ervaringen topic

Discussie in 'Actualiteiten, Sport, Entertainment en Lifestyle' gestart door Danger, 15 okt 2008.

  1. Tyrant

    Tyrant Well-Known Member

    Berichten:
    12.053
    Leuk Bevonden:
    9.611
    Gelachen
     
    fredfenster en Jimmy J. vinden dit leuk.
  2. Kimi NL

    Kimi NL It's the first page of the second chapter!

    Berichten:
    2.144
    Leuk Bevonden:
    3.360
  3. Chrizzle

    Chrizzle Active Member

    Berichten:
    1.150
    Leuk Bevonden:
    756
    Yo
     
    Tyrant vindt dit leuk.
  4. deadly seconz

    deadly seconz kaas is geel

    Berichten:
    161
    Leuk Bevonden:
    165
    Ja I know, heb al wat uitgezocht.

    Kijk dit sowieso een jaartje aan, wellicht ontwikkeld het zich. Het is ook geen slechte baan by any means, maar heb niet het idee dat dit echt een baan/carrierepad is welke ik leuk genoeg ga vinden voor de rest van mijn leven.

    Of misschien moet ik gewoon niet zo ver veruit denken, dat dit het pad is wat ik heb gekozen en dus ga doen.

    Who knows.
     
  5. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    @Modder-Eter Hey, weer even een vraag hoor :D

    De volgende:

    Code:
    T = [[3-i for i in range (3)] for j in range (3)]
    s = 0
    for i in range (3):
         s += T[i][i]
    print(s)

    Hoe kan ik deze het beste lezen? En waar precies leiden die
    Code:
    [i][i]
    naar toe in s+= ?
     
  6. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    21.603
    Leuk Bevonden:
    8.717
    Zoals je misschien al in de theorie hebt gelezen is de eerste regel een Python list comprehension.
    Dit is een syntactic sugar (een mooie snellere vorm [syntax = vorm] om het op te schrijven) voor het maken en initialiseren van lijsten.

    Deze moet je eigenlijk stiekem van achteren naar voren lezen. Je gaat for iets een bepaalde expressie uitvoeren, eventueel met if condities achter de for.
    In dit geval moeten we het dus lezen als: We willen een list aanmaken voor de getallen 0-3 (een range met een enkel getal begint op 0). Voor ieder van deze getallen gaan we iets doen:

    [3-i for i in range (3 )]

    Voor ieder van deze getallen gaan we dus een nieuwe lijst creëren met weer een list comprehension. We hadden iets leuks kunnen doen door j te gebruiken, maar eigenlijk maakt het niet uit wat de originele waarde van j was. In dit geval hebben we de getallen 0-3 gekozen voor j, maar we hadden er net zo goed 4 woorden voor kunnen kiezen. Dit had tot hetzelfde resultaat geleid, maar is minder makkelijk te begrijpen.

    Terugkomend op de list comprehension die voor de for staat:

    [3-i for i in range (3 )]

    We gaan dus voor ieder getal in 0-3 een keer de bovenstaande expressie (in dit geval een list comprehension) uitvoeren. Dit is in totaal dus 4 keer. Het resultaat dat in T komt te staan is dus in ieder geval een lijst met daarin 4(!) lijsten. De list comprehension [3-i for i in range (3 )] bepaalt hoe die lijsten eruit gaan zien.
    Het gedeelte na de for is nu al bekend, dat is hetzelfde als eerder besproken, de getallen 0 tot en met 4. Nu gaan we als expressie echter iets doen met iedere waarde van i, namelijk 3-i bepalen. De lijst wordt dus gevuld door iedere waarde van i uit de range(3 ) te pakken, deze in te vullen in 3 - i en vervolgens aan de lijst toe te voegen. De uiteindelijk vorm van deze lijst is dus [3, 2, 1, 0]. Aangezien we in de buitenste list comprehension al bepaald hebben dat we deze lijst 4 keer moeten creëren, komt dat neer op het volgende: T = [[3, 2, 1, 0], [3, 2, 1, 0], [3, 2, 1, 0], [3, 2, 1, 0]]

    Vervolgens gaan we blijkbaar een variable s op 0 zetten. Ik ben niet zo fan van deze namen, want het zegt niets over de intentie. Uit deze code komt duidelijk naar voren dat het uiteindelijk een som gaat zijn van waarden, dus sum is een betere variabele naam. Vervolgens gaat we voor de waarden 0 tot en met 3 (deze for is nu al heel vaak langs gekomen en moet ondertussen wel duidelijk zijn) deze sum vullen.

    Waarmee gaan we hem vullen? Met een waarde uit de lijst T! Lijst T is echter niet een simpele lijst, maar een lijst die zelf weer lijsten bevat. Hoe pak je een waarde uit een lijst? Met een index uiteraard! Hiervoor wordt de waarde i gebruikt. Dus tijdens de eerste run van de loop is de waarde van i gelijk aan 0. We gaan dus de waarde uit de lijst pakken op index 0. Wat is hier de code voor? T[0]. In plaats van een concrete waarde staat er echter een lijst op deze index! Wat kunnen we met deze lijst doen? We kunnen hier ook waardes uithalen! Maar hoe dan, ome Modder-Eter? Nou, op dezelfde manier als we normaal ook doen: Door de index te gebruiken: T[0][0]. We pakken dus de eerste waarde uit de eerste lijst in de eerste run van de for loop en tellen deze op bij de som. Voor i=1 pakken we de tweede waarde uit de tweede lijst en tellen deze op. Voor i = 2 doen we dit met de derde waarde uit de derde lijst en voor i = 3 gebeurt dit voor de laatste waarde uit de laatste lijst.

    Nadat de loop is afgelopen hebben we dus een som van waarden waar ieder component afzonderlijk afkomstig is van de i'e waarde uit de i'e lijst!
     
    Martijnn vindt dit leuk.
  7. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    Tnx! Ik ga het straks uitgebreid doornemen! :)

    @Modder-Eter Kan het kloppen dat je een klein foutje hebt gemaakt wat betreft range ( 3 )

    De range begint inderdaad bij 0, maar eindigt bij 2 omdat het laatste cijfer niet wordt meegeteld, wat zou betekenen dat het totaal 3 keer is.
     
    Laatst bewerkt: 26 jun 2019
  8. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    21.603
    Leuk Bevonden:
    8.717
    Dat zou kunnen. Het is al een tijd geleden sinds ik met Python heb gewerkt. Maar buiten eventueel dat foutje houdt de rest nog steeds stand.

    Edit: Dat klopt inderdaad. Uit de Python documentation:
     
  9. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    @Modder-Eter Ik heb enigszins nog wat problemen met het begrijpen van de term "return" wat het nu echt inhoudt en waarom je die moet gebruiken.
     
  10. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    21.603
    Leuk Bevonden:
    8.717
    In welke context?
     
  11. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    Eigenlijk in z'n totaliteit. Ik zie het zo nu en dan voorbij komen, maar ik snap niet helemaal waarom het gebruikt wordt.

    Werkt return, of wordt return enkel gebruikt tijdens het definiëren van een functie?
     
    Laatst bewerkt: 27 jun 2019
  12. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    21.603
    Leuk Bevonden:
    8.717
    Normaal gesproken wordt het gebruikt in functies. Net als een functie in wiskunde geeft een functie een bepaald resultaat op basis van bepaalde invoerwaarden (de parameters). Dit resultaat moet geretourneerd worden.

    Code:
    func Example(int number)
    {
      return number * number;
    }
    
    Bovenstaande functie krijgt een nummer als invoer en retourneert (de return) het kwadraat hiervan. Soms hoef je echter niets te retourneren, omdat het een functie is die geen resultaat geeft. Zulke functies of code veranderen bijvoorbeeld iets, maar hoeven dit niet terug te geven. Dit kan bijvoorbeeld het schrijven naar een database zijn:

    Code:
    func Example(int number)
    {
      _database.Write(number);
    }
    
    In sommige gevallen wil je functies zonder uitvoerwaarde ergens middenin verlaten en de rest van de code niet uitvoeren. Dit kan ook met een return midden in de code. Het volgende voorbeeld doet dit bijvoorbeeld na een het optreden van een fout. Het laat een popup zien en vervolgens returned de code:

    Code:
    func Example(int number)
    {
      var result = TryToDoSomethingWithNumber(number);
      if (!result.Success)
      {
         ShowPopUp(result.Error);
         return;
      }
    
      DoMoreStuffWithTheNumber(number);
      ....
    }
    
    Bovenstaande code is niet geschreven in een specifieke taal, ik heb het even als voorbeeld verzonnen. Als er dus geen succcesvol resultaat uit de aanroep van TryToDoSomethingWithNumber komt, dan gaan we de popup tonen. Vervolgens wordt return gebruikt. Dit betekent dat we de functie verlaten en de rest van de regels code niet uitvoeren. In dit geval wordt DoMoreStuffWithTheNumber niets uitgevoerd.

    Dit laatste kun je uiteraard ook met if en else doen. Heb je echter meer van dit soort checks binnen die if's en else's, dan wordt het vaak wat onoverzichtelijk:

    Code:
    func Example(int number)
    {
      var result = TryToDoSomethingWithNumber(number);
      if (!result.Success)
      {
         ShowPopUp(result.Error);
      }
      else
      {
         result = DoMoreStuffWithTheNumber(number);
         if (!result.Success)
         {
            ShowPopUp(result.Error);
         }
         else
         {
            result = DoMoreStuffWithTheNumber(number);
            if (!result.Success)
            {
                ShowPopUp(result.Error);
            }
            else
            {
                ...
            }
         }
      }
    }
    
    Met returns is dit als volgt te schrijven:
    Code:
    func Example(int number)
    {
      var result = TryToDoSomethingWithNumber(number);
      if (!result.Success)
      {
         ShowPopUp(result.Error);
         return;
      }
    
      result = DoMoreStuffWithTheNumber(number);
      if (!result.Success)
      {
         ShowPopUp(result.Error);
         return;
      }
    
      result = DoMoreStuffWithTheNumber(number);
      if (!result.Success)
      {
         ShowPopUp(result.Error);
         return;
      }
    
      ...
    }
    
    Zoals je ziet zijn dit twee verschillende manieren om hetzelfde te bereiken. De een maakt gebruik van de voor jou bekende goede oude if's en else's. De ander combineert if's met returns om dit te doen. Er is hier geen kwestie van goed en fout. In de ene situatie is de een misschien mooier dan de ander en alsnog is het een kwestie van smaak (en bijvoorbeeld afspraken binnen een bedrijf). De versie met de returns heeft als voordeel dat het makkelijker te lezen is wanneer er veel if's en else's cascaded (binnen elkaar, waardoor de code steeds meer naar rechts verschuift en het geheel moeilijker wordt om te lezen) worden gebruikt.
     
    Laatst bewerkt: 27 jun 2019
    Cyndris en Martijnn vinden dit leuk.
  13. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    @Modder-Eter Bedankt voor je moeite die je steekt in de heldere uitleg!

    Dit maakt het allemaal stukken duidelijker.
     
  14. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    @Modder-Eter Gaat ie weer, maar dit een korte hoor:

    Code:
    list = [3,25,-2]
    print(list[list[-1]])

    Uitkomst is 25, ik begrijp het enigszins, maar ik weet niet goed hoe ik hem nou eigenlijk moet lezen waardoor deze uitkomst eruit komt. Als ik goed begrijp hoe ik zo'n situatie als deze moet "lezen" dan heb ik er in het vervolg waarschijnlijk geen moeite meer mee.

    Vraag 2:

    Hoezo print deze snippet 2 hashtags? Range 1 betekend dus ook range 1, waarmee er wordt begonnen met 0, waar het ook gelijk stopt. Er wordt nu 1 hashtag geprint, nu begrijp ik niet goed waarom deze for loop de else ook nog eens even meepakt terwijl print al voldaan is?

    Code:
    for i in range (1):
        print("#")
    else:
        print("#")
     
    Laatst bewerkt: 2 jul 2019
  15. Modder-Eter

    Modder-Eter XBW.nl VIP XBW.nl VIP

    Berichten:
    21.603
    Leuk Bevonden:
    8.717
    Dit is niet echt iets waar ik bekend mee ben. Is behoorlijk Python specifiek en zelfs dan is het niet iets wat ik echt zou gebruiken. Echter gaat list[-1] blijkbaar de lijst van de rechterkant benaderen. Dus deze pakt het item op de laatste positie. Dit is het getal -2. Ook deze wordt weer als index voor de lijst gebruikt. Dus nu pakken we het tweede element van de recherkant. Aangezien we er 3 hebben is dit de middelste, 25.

    Ook vraag 2 omvat een specifiek iets dat mij ook niet bekend was. Dit is ook iets dat je niet echt zou gebruiken in de praktijk.

    Dus als een for loop op een normale manier eindigt, zonder tussendoor door de programmeur gestopt te zijn via een break, dan wordt de else ook uitgevoerd. Je moet het dus als een totaal ander ding zien als de else van if-else. Ik snap ook niet waarom je dit soort zaken krijgt, want dit is voor een beginner totaal verwarrend en heeft enorm weinig tot geen toegevoegde waarde.
     
    Martijnn vindt dit leuk.
  16. Martijnn

    Martijnn Disco disco, good good!

    Berichten:
    3.409
    Leuk Bevonden:
    764
    Dit was onderdeel van een soort toets, vooral van die instinkers zijn het. Ik had 15 van de 20 goed, maar ik wil hoe dan ook 20 / 20 scoren, anders heb ik het idee dat ik het nog niet goed genoeg snap.
     
  17. Sliv

    Sliv The One and Only

    Berichten:
    1.327
    Leuk Bevonden:
    230
    Zojuist te horen gekregen dat ik vanaf september als Rijkstrainee aan de slag kan bij het Ministerie van EZK. Dat wordt dus een hele papierwinkel invullen en eind augustus weer terugverhuizen naar Nederland. Maar ik heb wel zin om te beginnen met werken.
     
    Reckuuza, Daz, Kimi NL en 4 anderen vinden dit leuk.
  18. Daz

    Daz

    Berichten:
    16.101
    Leuk Bevonden:
    2.258
    Grats! Waar zit je nu dan?
     
  19. Tyrant

    Tyrant Well-Known Member

    Berichten:
    12.053
    Leuk Bevonden:
    9.611
    Sjina toch
     
  20. Dyonko

    Dyonko Duke

    Berichten:
    4.251
    Leuk Bevonden:
    6.168
    Shizzle
     

Deel Deze Pagina