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

2108720

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.