Python :: Aufgabe #199 :: Lösung #2
5 Lösungen
#199
Teufelskreis einer selbstbezüglichen Aussage
Anfänger - Python
von hollst
- 17.12.2018 um 18:46 Uhr
Die folgende Aussage sei gegeben als String:
"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.
Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,
denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?
Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.
Viel Spaß!
"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.
Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,
denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?
Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.
Viel Spaß!
#2
von scar77 (210 Punkte)
- 30.12.2018 um 15:17 Uhr
satz = "Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
satz_liste = satz.split()
# Zahlwort löschen
del satz_liste[3]
zahlwoerter = {1:"ein", 2:"zwei", 3:"drei", 4:"vier", 5:"fünf", 6:"sechs", 7:"sieben", 8:"acht", 9:"neun",\
20:"zwanzig", 30:"dreißig", 40:"vierzig", 50:"fünfzig", 60:"sechzig", 70:"siebzig", 80:"achtzig", 90:"neunzig"}
# Funktion zur Ermittlung der Zahlwörter
def zahl_wort(i):
if i % 10 == 0:
zahlwort = zahlwoerter[i]
return zahlwort
else:
zehner = i - (i % 10)
zehner_wort = zahlwoerter[zehner]
einer = i - zehner
einer_wort = zahlwoerter[einer]
zahlwort = einer_wort + "und" + zehner_wort
return zahlwort
# Vergleich Satzlänge mit Zahl
for i in range(38, 99):
sum = 0
satz_liste.insert(3, zahl_wort(i))
for word in satz_liste:
for letter in word:
if letter.isalpha():
sum += 1
if sum == i:
print(" ".join(satz_liste))
print("\nAnzahl der Buchstaben: {}\n".format(sum))
else:
pass
del satz_liste[3]
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
