Python :: Aufgabe #337

3 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 05.04.2021 um 19:38 Uhr
Quellcode ausblenden Python-Code

"""
#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()


vote_ok
von AlexGroeg (2010 Punkte) - 06.04.2021 um 15:49 Uhr
Quellcode ausblenden Python-Code

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')

vote_ok
von felixTheC (1200 Punkte) - 14.04.2021 um 06:41 Uhr
Quellcode ausblenden Python-Code
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.")