Forum / Grundlagen des Programmierens / Hausübung 2

thomas +3
Abgabe 2 in Programmieren

Meine Grundlagen des Programmieren Aufgabe 6 - 16. Bei Fragen darf man sich gerne bei mir melden. Programmiert in Python 2.7.6 in Anaconda Spyder 1.9.1. die allerliebsten Grüße

Thomas ±0

Hallo,

ich verstehe bei Bsp 12 die for-Schleife nicht wirklich ... ruft sich die Funktion selbst auf oder wie ist das zu verstehen? und was bewirkt "zeichen[:i] + zeichen[i+1:], perm + zeichen[i]" genau ? P.S.---> einmal ist der Doppelpunkt vor dem i, bei i+1 danach, und beim zweiten Parameter fehlt er überhaupt :-/ ?!

for i in range(len(zeichen)): str(FindePermutationRekursion(zeichen[:i] + zeichen[i+1:], perm + zeichen[i]))

Bitte um Hilfe, programmieren ist alles andere als meine Stärke ^^

thomas ±0
aufgabe 12

Ich hab eine Rekursion programmiert. Die Funktion ruft sich tatsächlich selber auf. Ich stelle heute noch eine leichtere Version online. Aber zur Erklärung was es mit den Doppelpunkten auf sich hat: zeichenkette = "abcdef" neueKette = zeichenkette[:2] print neueKette #es wird folgendes am bildschirm sichtbar: "ab" #[:2] hat jedes zeichen genommen von 0 bis zum 2ten element. neueKette = zeichenkette[2:4] print neueKette #es wird folgendes am bildschirm sichtbar: "cd" #[2:4] hat die zeichen an der stelle 2 und 3 genommen. #[:] nimmt alle zeichen vom 0ten bis zum letzten

man kann, aber muss nicht vor und nach dem punkt eine zahl hinschreiben. wenn keine zahl dort steht, dann nimmt er links davon das erste und rechts davon das letzte element.

die permutation geht leichter mit itertools. ich werde das heute noch hier posten

thomas ±0

Das Bsp. 12 nur leichter programmiert. lg Michael

Ralph ±0

Ich hab noch ein Problem bei 14) mit den Anagrammen, und zwar hab ich mir das so ähnlich gedacht wie es in den Notebooks steht, allerdings komme ich damit nicht ganz klar: Ich will jedes Wort aus der Liste mit Permutationen (zB listeAllerPermutationen) nehmen und mit denen aus der Datei vergleichen.

Es wird folgender Tipp gegeben: Wenn A und B Anagramme sind, stimmt set(A) == set(B). Aber hier verliert man Zeichnen die mehrmals auftauchen. Für Anagrame eine notwendige aber nicht hinreichende Bedingung. Im Gegensatz dazu stimmt sort(A) = sort(B) immer. Diese Eigenschaft können wir also ausnutzen.

So hätte ich angefangen: for perm in ListeAllerPermutationen: if sort(perm) == sort(?) print perm

Wie vergleiche ich da jetzt mit den Elementen der liste von der ich ausgehe? Funktioniert das evt mit einer List comprehension? Thomas könntest du mir die fünf Zeilen evt schreiben?

thomas ±0

bist du grad auf der uni? ich sitz im computerraum im freihaus.

Ralph ±0

Nein leider nicht...

thomas ±0

der tipp sollte lauten: sorted(A) == sorted(B)

thomas +1

ein vierzeiler: für das woerterbuch habe ich jetzt eine selbstgewählte liste genommen. für das hausübungsbeispiel nimmt man natürlich das textfile.

woerterbuch = ['mama','papa', 'Helm', 'mehl', 'Anna', 'anna', 'BBC', 'bcb']


for i in range(len(woerterbuch)):
    for x in range(i + 1, len(woerterbuch)):
        if sorted(woerterbuch[i].lower()) == sorted(woerterbuch[x].lower()):
            print woerterbuch[i], ", ist ein Anagramm von: ", woerterbuch[x]           


\n~~~
Thomas ±0
Bsp 16

Ich hätte noch eine Frage, was bedeutet in Hue16:

if len(splittedString) > 1: dictionary[splittedString[0]] = splittedString[1].split(',')[0]

ich verstehe leider nach einer halben Stunde noch immer nicht die Syntax dieser zwei Zeilen :-/ bitte um rasche hilfe ... morgen ist ja schon das Kolloquium ...

Sorry, die Kommentarfunktion ist geschlossen.