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.")
