Python – Das erste Skript

22. April 2015 § Ein Kommentar

Ich stand vor der Aufgabe eine konstruierte Sprache mit richtigem Inhalt zu füllen. Also nicht bloss ein paar „Blabla“-Wörte, sondern richtige Vokabeln, Grammatik etc. Vielleicht sogar irgendwann noch eine Schrift.
Um nun jederzeit auf Knopfdruck sämtliche möglichen und erlaubten Silben griffbereit zu haben wollte ich ein kleines Programm schreiben, das mir diese Aufgabe abnahm. Ein guter Wiedereinstieg in die Programmierung. Vor über 20 Jahren eine damals angeblich schon tote Sprache gelernt hat es mich nun wieder gepackt. Diesmal allerdings sollte es eine sein, die aktiv weiterentwickelt wird und für die es eine grosse Community gibt: Python.

Ohne grosse Umschweife hier mal das erste Skript in der derzeitigen (22.04.2015) Version:

# -*- coding: utf-8 -*-

vocals1 = ["a", "e", "i", "o", "u", "ü", "y"]
vocals2 = ["ai", "ao", "au", "ei"]
consonants1 = ["b", "d", "f", "g", "l", "m", "n", "w"]
consonants2 = ["s", "sch", "z", "tsch", "x", "ch"]
endings = ["n", "ng", "k", "t"]

# Vokal / Endung
# V1-E
for everyV in vocals1:
    for everyE in endings:
        if everyE == "k" and everyV in ('y', 'ü'):
            break
        else:
            print '%s%s' % (everyV, everyE)

#Konsonant / Vokal
# C1-V1
for everyC in consonants1:
    for everyV in vocals1:
        print '%s%s' % (everyC, everyV)

# C1-V2
for everyC in consonants1:
    for everyV in vocals2:
        print '%s%s' % (everyC, everyV)

# C2-V1
for everyC in consonants2:
    for everyV in vocals1:
        print '%s%s' % (everyC, everyV)

# C2-V2
for everyC in consonants2:
    for everyV in vocals2:
        print '%s%s' % (everyC, everyV)

#Konsonant / Vokal / Endung
# C1-V1-E
for everyC in consonants1:
    for everyV in vocals1:
        for everyE in endings:
            if everyE == "k" and everyV in ('y', 'ü'):
                break
            else:
                print '%s%s%s' % (everyC, everyV, everyE)

# C2-V1-E
for everyC in consonants2:
    for everyV in vocals1:
        for everyE in endings:
            if everyE == "k" and everyV in ('y', 'ü'):
                break
            else:
                print '%s%s%s' % (everyC, everyV, everyE)

Das gleiche Script, diesmal aber mit Funktionen die die gleichen Codeabschnitte zusammenfassen.

# -*- coding: utf-8 -*-

def create_syllables():
	""" create_syllables does exactly that, it creates syllables.
		Upcoming versions should be able to import rules for creating from a
		ini File """

		
	""" begin of function definition """
	def consvocs(c, v):
		""" consvocs creates syllables containing consonant / vocal """
		b = ""
		for everyC in c:
			for everyV in v:
				b += '%s%s\n' % (everyC, everyV)
		return b
	
	def consvocsend(c, v, e):
		""" consvocsend creates syllables containing consonant / vocal / end """
		b = ""
		for everyC in c:
			for everyV in v:
				for everyE in e:
					if (everyE == "k" and everyV == "y") or \
					   (everyE == "k" and everyV == "ü"):
						break
					else:
						b += '%s%s%s\n' % (everyC, everyV, everyE)
		return b
	""" end of function definition """

	
	""" set of vars - start """	
	vocals1 = ["a", "e", "i", "o", "u", "ü", "y"]
	vocals2 = ["ai", "ao", "au", "ei"]
	consonants1 = ["b", "d", "f", "g", "l", "m", "n", "w"]
	consonants2 = ["s", "sch", "z", "tsch", "x", "ch"]
	endings = ["n", "ng", "k", "t"]

	buffer = ""
	""" set of vars - end """

	
	# Vokal / Endung
		""" Since for vocal / ending only one possible combination exists, no
			function is needed """
	for everyV in vocals1:
		  for everyE in endings:
		      if (everyE == "k" and everyV == "y") or \
		         (everyE == "k" and everyV == "ü"):
		          break
		      else:
		          buffer += '%s%s\n' % (everyV, everyE)


	#Konsonant / Vokal
	
	buffer += consvocs(consonants1, vocals1)
	buffer += consvocs(consonants1, vocals2)
	buffer += consvocs(consonants2, vocals1)
	buffer += consvocs(consonants2, vocals2)

	
	#Konsonant / Vokal / Endung
	
	buffer += consvocsend(consonants1, vocals1, endings)
	buffer += consvocsend(consonants2, vocals1, endings)
	
	return buffer

print create_syllables()

Grisu und der brennende Floh in meinem Ohr

6. Dezember 2014 § Hinterlasse einen Kommentar

„Ich will Feuerwehrmann werden, ich will Feuerwehrmann werden!“ Jaja, als Kind vielleicht, aber welcher erwachsene, bald schon auf die Mitte der fünften Dekade zugehende, gestandene und leicht bequeme Mann würde sowas von sich behaupten? Genau: Ich. Okay, nicht von Beruf, aber in der Gemeinde bei der „freiwilligen“. Immerhin hat man die Wahl, man zahlt, oder man macht eben mit. Und seien wir mal ehrlich, Das Geld ist nicht der Grund, warum man bei sowas mitmacht. Der Grund für mich war ein ganz anderer: Ich bin kein Jäger.

„Aha, und was soll das jetzt heissen?“

Ganz einfach: Wir sind vor kurzem umgezogen und weil ich als Mann in unserer Familie der Geldbeschaffer bin fällt die Möglichkeit, über die Kinder Kontakt zu anderen Erwachsenen (meist Frauen, sprich: Müttern) im Ort zu bekommen, meiner anderen Hälfte zu.

„Und ich? Was mache ich um mich nicht als „Der Neue“ zu disqualifizieren?“ Eben: Feuerwehrmann werden. Und da nicht jeder bei der Feuerwehr ein Supersportler und schwindelfrei sein muss, finden sie auch für mich Verwendung.

 

Das mit dem Floh ist eine ganz andere Geschichte.

Vor ein paar Wochen kam meine Holde zu mir und meinte, sie wolle gerne Programmieren lernen um den Computer besser verstehen zu lernen. Und damit nun ja niemand auf komische Ideen kommt: Sie ist keinesfalls ein DAU. Sie verfügt über ausreichend Respektlosigkeit der Technik gegenüber um bestens mit Computern klar zu kommen. Mehr als 80 % aller Menschen (die ich kenne) die Berufsmässig mit dem Computer zu tun haben. Die anderen 20 % arbeiten in der IT.

Mein Einstieg ins Berufsleben während der Ausbildung war ja das Programmieren, allerdings in einer angeblich damals schon toten Sprache, dem Latein der Computerbranche: COBOL. Wenn man bedenkt, wieviele Zeilen COBOL Code noch da draussen im Einsatz sind und wie häufig in Anzeigen COBOL-Programmierer gesucht werden ist es erstaunlich, dass unsere Banken und Versicherungen noch funktionieren. Es kann natürlich auch sein, dass die sich ihren Nachwuchs intern nachzüchten. Auf jeden Fall dürfte das eine der sichersten Investitionen sein, wenn man in der IT Fuss fassen will, und bedeutend günstiger als eine Ausbildung zum SAP-Profi.

Aber zurück zum Thema. Ich mache mich also auf die Suche nach einer Sprache, die ich einerseits meiner Frau zumuten kann (Assembler, C, PERL und Java fallen also weg). Naja, Pascal ist zu akademisch, Brainfuck zu esoterisch und … ja, und was? Es muss etwas sein, das praktisch nutzbar, für mich sowohl leicht zu lernen als (hoffentlich) auch leicht zu lehren ist, günstig bis gratis verfügbar und eine gut aufgestellte Community soll auch vorhanden sein. Python. Und so ackere ich mich nun durch ein englisches Lehrbuch, das mich zuerst der Sprache wegen (Englisch) etwas abgeschreckt hat. Aber mittlerweile macht es richtig Spass und erste Ideen für Projekte entstehen auch schon, bzw. erwachen zu neuem Leben.

Es ist beinahe wie damals, als ich aus der Not heraus ein QBasic Programm schrieb, das die Adressen und Telefonnummern meiner Freunde und Bekannten verwaltet und auf Wunsch via Modem die Nummer vom PC aus wählt. Etwa zwei Monate nachdem das Programm fertig war fiel mir dann auf, dass ein Kauf von zwei Knopfzellen für das Telefon das Problem auch gelöst hätte. Aber wo wäre da denn der Spass geblieben. 😉

 

Wo bin ich?

Du durchsuchst momentan die Kategorie Programmieren auf instausendste.