Python :: Aufgabe #337
3 Lösungen

Unikat- Liste aus zwei Zeichenketten/Sätzen
Anfänger - Python
von JKooP
- 02.04.2021 um 18:13 Uhr
Gegeben sind zwei Zeichenketten (a, b) bestehend aus Kleinbuchstaben und Leerzeichen.
Es sollen die Wörter in ein neues String- Array überführt werden,
die genau einmal in beiden Zeichenketten vorkommen (Unikate).
Beispiel 1:
a = „der pfannkuchen schmeckt süß“
b = „der pfannkuchen schmeckt salzig“
Lösung: { „süß“, „salzig“ }
Beispiel 2:
a = „apfel apfel“
b = „banane“
Lösung: { „banane“ }
Beispiel 3:
a = „der pfannkuchen schmeckt“
b = „der pfannkuchen schmeckt“
Lösung: { }
Erstelle eine Methode/Funktion, die solch ein String- Array zurückgibt.
Viel Spaß
Es sollen die Wörter in ein neues String- Array überführt werden,
die genau einmal in beiden Zeichenketten vorkommen (Unikate).
Beispiel 1:
a = „der pfannkuchen schmeckt süß“
b = „der pfannkuchen schmeckt salzig“
Lösung: { „süß“, „salzig“ }
Beispiel 2:
a = „apfel apfel“
b = „banane“
Lösung: { „banane“ }
Beispiel 3:
a = „der pfannkuchen schmeckt“
b = „der pfannkuchen schmeckt“
Lösung: { }
Erstelle eine Methode/Funktion, die solch ein String- Array zurückgibt.
Viel Spaß
Lösungen:

""" #337: Unikat- Liste aus zwei Zeichenketten/Sätzen Gegeben sind zwei Zeichenketten (a, b) bestehend aus Kleinbuchstaben und Leerzeichen. Es sollen die Wörter in ein neues String- Array überführt werden, die genau einmal in beiden Zeichenketten vorkommen (Unikate). """ def prf_unikat(a, b): c = a + " " + b + " " wort = "" aus = [] print("\n", c) print("Folgende Worte kommen nur einmal vor:") ind = -1 erg = [] for i in range(0, len(c)): if c[i] != " ": wort += c[i] else: ind += 1 aus.append(wort) wort = "" for anz in set(aus): if aus.count(anz) == 1: erg.append(anz) print(erg) def main(): prf_unikat("der pfannkuchen schmeckt süß", "der pfannkuchen schmeckt salzig") prf_unikat("apfel apfel", "banane") prf_unikat("der pfannkuchen schmeckt", "der pfannkuchen schmeckt") if __name__ == '__main__': main()

def in_liste_umwandeln(a): c = ''; d = [] for i in a: if i != ' ': c += i else: d.append(c) c='' d.append(c) return d def unikat(a,b): a = in_liste_umwandeln(a); b = in_liste_umwandeln(b) if len(a) > 1 and len(b) > 1: a = set(a); b = set(b) return a.symmetric_difference(b) else: if len(a) < len(b): return set(a) else: return set(b) a = 'der pfannkuchen schmeckt süß' b = 'der pfannkuchen schmeckt salzig' print('a =', a, '\nb =', b, '\nLösung:', unikat(a,b), '\n') a = 'apfel apfel' b = 'banane' print('a =', a, '\nb =', b, '\nLösung:', unikat(a,b), '\n') a = 'der pfannkuchen schmeckt' b = 'der pfannkuchen schmeckt' print('a =', a, '\nb =', b, '\nLösung:', unikat(a,b), '\n')

from collections import Counter def find_unique_words(a: str, b: str) -> list: counter = Counter(a.split() + b.split()) return [key for key, val in counter.items() if val == 1] if __name__ == "__main__": # Beispiel 1: val_a = "der pfannkuchen schmeckt süß" val_b = "der pfannkuchen schmeckt salzig" result = find_unique_words(val_a, val_b) assert sorted(result) == sorted(["süß", "salzig"]) # Beispiel 2: val_a = "apfel apfel" val_b = "banane" result = find_unique_words(val_a, val_b) assert ["banane", ] == result # Beispiel 3: val_a = "der pfannkuchen schmeckt" val_b = "der pfannkuchen schmeckt" result = find_unique_words(val_a, val_b) assert [] == result print("All tests passed.")