Seite 1 von 1
Elemente nach Zahlen filtern und ausgeben
Verfasst: Dienstag 23. Februar 2021, 21:21
von qhost
Hallo, ich bin hier noch sehr neu, also bitte ich um Verzeihung, falls hier etwas falsch ist
Ich habe folgendes Problem:
Bei einer Aufgabe von der Schule, soll ich die Elemente eines eingegeben Satzes darauf untersuchen, ob es sich dabei um eine Zahl handelt. Die Zahlen dieses Satzes sollen dann ausgegeben werden.
Ich habe auch schon einen Ansatz. Nur weiß ich nicht, wie ich das Elemente auf jede Zahl überprüfen kann, denn ich denke es gibt einen leichteren Weg, als alle Zahlen in die Liste einzutragen.
Code: Alles auswählen
Satz = input("Geben Sie einen Satz ein: ")
Element = Satz.split()
Ausgabe = []
Zahlen = ["0", "1"]
for i in Element:
if i in Zahlen:
Ausgabe.append(i)
if len(Ausgabe) == 0:
print("Der Satz enthält keine Zahlen")
else:
print(Ausgabe)
Bei dem Code ist es Vorgabe, mit der Split Funktion und einer for Schleife zu arbeiten.
mfg
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Dienstag 23. Februar 2021, 22:23
von Dennis89
Hallo,
schau dir mal im folgenden Link 'isnumeric' an:
https://docs.python.org/3/library/stdtypes.html
Grüße
Dennis
Edit1:Sorry ich war zu schnell, das gibt nur True oder False zurück
Edit2: Das ist kein Problem mit True und False, versuch es mal. Wenn nur die Zahlen die irgendwo in einem Satz vorkommen ausgegeben werden sollen, auch wenn sie sich in Wörter befinden, musst du dir nochmals Gedanken über deine 'split'-Methode machen.
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Dienstag 23. Februar 2021, 23:26
von __blackjack__
Was ist denn hier die Definition von ”Zahl”? "Dieser Satz enthält inklusive 42, 2,3 und IV, vier Zahlen.” enthält ja die Zahlen
42 und
2,3 und
IV und
vier. Die sollen alle erkannt werden?

Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Dienstag 23. Februar 2021, 23:56
von LeSchakal
__blackjack__ hat geschrieben: Dienstag 23. Februar 2021, 23:26
Was ist denn hier die Definition von ”Zahl”? "Dieser Satz enthält inklusive 42, 2,3 und IV, vier Zahlen.” enthält ja die Zahlen
42 und
2,3 und
IV und
vier. Die sollen alle erkannt werden?
Du hast das
D vergessen und
IV kann man ja auch noch aufteilen.
Ich liebe diese 9live Spielchen.
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 01:59
von __blackjack__
@LeSchakal: Na dann kann man aber auch noch 24 und 2,3 aufteilen.
Code: Alles auswählen
#!/usr/bin/env python3
def main():
numbers = [
text
for text in input("Geben Sie einen Satz ein: ").split()
if text.isnumeric()
]
print(numbers if numbers else "Der Satz enthält keine Zahlen.")
if __name__ == "__main__":
main()
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 07:21
von Dennis89
Hallo,
@__blackjack__ wenn der Text so aussieht 'Hallo Nummer5 es ist 7 Uhr', dann wird bei dir nur die 7 ausgegeben? Habe erst wieder heute Abend wieder einen PC mit Python, sonst hätte ich es natürlich einfach durchlaufen lassen.
Da wäre es auch interessant wie die Zahlen vorkommen. Ob man die 'for'-Schleife über jedes Zeichen im Satz laufen lassen muss.
Grüße
Dennis
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 08:36
von Sirius3
@qhost: Variablenamen schreibt man nach Konvention komplett klein. Wenn man einen Satz in seine Teile splittet, dann erhält man nicht ein Element, sondern viele Elemente. Wenn man dann eine for-Schleife über diese Elemente hat, dann ist eines davon nicht i sondern ein Element. Variablennamen sollten nämlich aussagekräftig sein.
Und um zu prüfen, ob ein String nur aus Ziffern besteht, gibt es, wie schon erwähnt isnumeric.
Der Code sieht wäre also
Code: Alles auswählen
satz = input("Geben Sie einen Satz ein: ")
elemente = satz.split()
zahlen = []
for element in elemente:
if element.isnumeric():
zahlen.append(element)
if len(zahlen) == 0:
print("Der Satz enthält keine Zahlen.")
else:
print(f"Die Zahlen im Satz sind: {', '.join(zahlen)}")
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 09:06
von qhost
Hallo,
@Sirius3
Wie gesagt, ich bin noch sehr neu, aber bin immer offen für Tipps.
Sowas habe ich gesucht!
Allen hier vielen Dank für die Hilfe
qhost
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 09:55
von tonikae
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 14:42
von __blackjack__
@Dennis89 & @tonikae: Das ist eine Schulaufgabe bei der ``for`` und `split()` als Vorgaben bestehen. Sehr wahrscheinlich reicht also `isnumeric()` aus.
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Mittwoch 24. Februar 2021, 16:10
von Dennis89
Oh, 'split' als Vorgabe habe ich überlesen
Sorry und Grüße
Dennis
Re: Elemente nach Zahlen filtern und ausgeben
Verfasst: Freitag 26. Februar 2021, 13:27
von DeaD_EyE
Code: Alles auswählen
def has_number(text):
for word in text.split():
if word.isnumeric():
return True
return False
has_number("Ich brauche jetzt x Bier")
Erklärung: text.split() liefert eine Liste mit strings zurück. Leerzeichen zwischen den Wörtern werden entfernt. Dann wird jedes Wort überprüft, ob es eine Ganzzahl ist. Der string "5a" wäre z.B. keine Ganzzahl. Die Schleife läuft entweder komplett durch und liefert ein False zurück, wenn keine Ganzzahl gefunden worden ist. Sollte eine Ganzzahl vorkommen, wird die Funktion vorzeitig verlassen und liefert ein True zurück.
Der Idealfall wäre eine Ganzzahl im ersten "Wort". Der schlechteste Fall ist, wenn er die Schleife bis zum Ende durchlaufen muss, weil keine Ganzzhal vorkommt.
Das kann man noch etwas kompakter schreiben:
Code: Alles auswählen
def has_number_any(text):
return any(word.isnumeric() for word in text.split())