Spaß beim #PerlLernen – Der nächste, der #3sechzig schreibt, fliegt

Am 20.01. twitterte eine Freundin eine Mitteilung, die ich gut zum Anlass nehmen kann, wieder etwas Perl anzufassen.

XBOX 360 Controller Cupcake
Flickr: XBOX 360 Controller Cupcake
von Clever Cupcakes (CC-BY)

Und zwar geht es darum:

Naja, also lass ich den Computer eben 100x eine Zeichenkette ausgeben. Anschließend baue ich es aus, um mehr Spaß reinzubringen 🙂
Für mich ist es eine Variante des Spiels „Die böse Sieben“ …

Fangen wir also mit dem Standard-Prozedere an:

use 5.010;
use strict;
use warnings;

my $good="3sechzich";

print "$good\n";

Abspeichern und mit Perl aufrufen. Tut.

Nächster Schritt: for-Schleife. Beziehungsweise eine foreach-Schleife, weil die mehr Perl-mäßig ist.

use 5.010;
use strict;
use warnings;

my $good="3sechzich";

for my $i (0..10) {
  print "$good\n";
}

Okay, jetzt haben wir den Text zehn Mal dort stehen. Aber wir wollen ja ein mehr oder weniger zufälliges Wort haben. Also nehmen wir einen Zufallsgenerator!

use 5.010;
use strict;
use warnings;

my $good="3sechzich";
my $guess=0;
for my $i (0..10) {
  $guess = int(rand(100));
  print "$guess - $good\n";
}

Zufall ist nicht genug, jetzt kommt es drauf an, welche Schreibvariante wir ausgewählt haben. Um es einfach zu halten, nehme ich nur eine if-Bedingung. Hier gibt es Raum für mehr Kreativität 😉

use 5.010;
use strict;
use warnings;

my $good="3sechzich";
my $bad="3sechzig";
my $ugly="RAUS!!!";

my $guess=0;
my $say="";
for my $i (0..10) {
  $guess = int(rand(100));
  if ($guess < 95) {
    $say="3sechzich";
  } else {
    $say="3sechzig";
  }
  if ($say eq $bad) {
    print "$bad\n";
    print "$ugly\n";
  } else {
    print "$good\n";
  }
}

Fast fertig! Es fehlt nur noch eine Möglichkeit, aus der Schleife auszubrechen. Normalerweise heißt der Befehl „break„, bei Perl ist es „last„. Daneben sollten wir jetzt noch die Schleifendurchgänge erhöhen …

use 5.010;
use strict;
use warnings;

my $good="3sechzich";
my $bad="3sechzig";
my $ugly="RAUS!!!";

my $guess=0;
my $say="";
for my $i (0..100) {
  $guess = int(rand(100));
  if ($guess < 95) {
    $say="3sechzich";
  } else {
    $say="3sechzig";
  }
  if ($say eq $bad) {
    print "$bad\n";
    print "$ugly\n";
    last;
  } else {
    print "$good\n";
  }
}

War doch gar nicht ‚mal so viel Aufwand. Bei Fragen möchte ich dich erst bitten, dir einmal die Links anzuschauen. Sind sogar auf deutsch! 😉

Advertisements

2 Gedanken zu “Spaß beim #PerlLernen – Der nächste, der #3sechzig schreibt, fliegt

  1. Du zeigst mir ein paar wichtige Befehle. Heißt das Befehle? Die muss ich mir jetzt gut einprägen.
    Das Programm auszuführen ist sehr erstaunlich: es gibt immer wieder eine andere Anzahl an richtigen Wörtern bis das falsche kommt und man rausfliegt.
    Die einzelnen Schritte muss ich mir genau angucken und ein bisschen damit herumspielen, um sie richtig verstehen zu können.
    Bis hierhin erst mal : vielen Dank.

    • Du bekommst unterschiedlich lange Ausgaben, weil du ja jedes Mal per Zufall (!) einen String erzeugst.

      Befehl trifft es nicht ganz. Zumindest nicht bei foreach und if. Das sind Kontroll-Strukturen.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s