Input die Anzahl einer Variable mal abfragen -Python?
Moin,
bräuchte Hilfe bei Python, und zwar will ich eine Frage so oft stellen, wie zuvor eine Variable durch einen Input gesetzt wurde, d.h. z.B.:
Also ich frage wie viele Mitglieder kommen und nun will ich, dass -je nach dem was man da eingegeben hat- oft, als Input eine Frage kommt und die auch immer in den Nummern hochgeht.
Also wenn man da jz 3 schreibt soll kommen:
Was weißt du zu der 1. Person?
Was weißt du zu der 2. Person?
Was weißt du zu der 3. Person?
Und wenn man da 10 eingibt halt bis zu 10 hoch.
Wäre für jede Hilfe dankbar :)
2 Antworten
Das geht mit einer for-Schleife, die du entsprechend oft durchläufst. Die Zählvariable kannst du dann auch für die Nummerierung („1. Person“, „2. Person“, ...) verwenden. Die Eingaben, die in den einzelnen Abfragen zu den Personen getätigt werden, würde ich in einer Liste speichern.
Beispielsweise so...
anzahl_mitglieder = int(input("Wie viele Freunde sollen zu dem Treffen kommen?\n"))
wissen_über_person = []
for i in range(1, anzahl_mitglieder + 1):
wissen_über_person.append(input(f"\nWas weißt du zu der {i}. Person?\n"))
Des Weiteren solltest du bedenken, dass die Eingabe, die man mit input(...) erhält vom Datentyp her ein String ist. Willst du die entsprechende Zahl haben, kannst du mit int(...) die Eingabe in eine Ganzzahl umwandeln. [Siehe: Erste Zeile in meinem Beispiel-Code] Man könnte auch noch Eingaben abfangen, die keine ganzen Zahlen sind, wo sonst das Programm mit einem Fehler abbrechen würde. Beispielsweise so...
while True:
try:
anzahl_mitglieder = int(input("Wie viele Freunde sollen zu dem Treffen kommen?\n"))
except ValueError:
print("Fehler: Es wurde keine ganze Zahl eingegeben.\n")
continue
if anzahl_mitglieder < 0:
print("Fehler: Die eingegebene Anzahl war negativ.\n")
else:
break
wissen_über_person = []
for i in range(1, anzahl_mitglieder + 1):
wissen_über_person.append(input(f"\nWas weißt du zu der {i}. Person?\n"))
======Ergänzung======
Mir ist gerade aufgefallen, dass man nicht extra eine for-Schleife braucht, sondern direkt mit einer List Comprehension arbeiten könnte. Siehe: Letzte Zeile im folgenden Beispielcode...
while True:
try:
anzahl_mitglieder = int(input("Wie viele Freunde sollen zu dem Treffen kommen?\n"))
except ValueError:
print("Fehler: Es wurde keine ganze Zahl eingegeben.\n")
continue
if anzahl_mitglieder < 0:
print("Fehler: Die eingegebene Anzahl war negativ.\n")
else:
break
wissen_über_person = [input(f"\nWas weißt du zu der {i}. Person?\n") for i in range(1, anzahl_mitglieder + 1)]
Okay, also klar die sind in der Liste gespeichert, aber alle in einer? das verstehe ich noch nicht ganz
Ah klasse, genauso habe ich mir das vorgestellt... nur wo sind die Werte die ich nun eingebe denn gespeichert bzw. wie kann ich mit diesen dann weiter arbeiten, in diesem Fall jeden Input einzeln addieren?
Die Eingaben, die abgefragt wurden sind dann in der Liste wissen_über_person gespeichert.
Mit wissen_über_person[0] erhältst du den ersten Eintrag, in dem die Eingabe zur Abfrage „Was weißt du zu der 1. Person?“ gespeichert ist. Mit wissen_über_person[1] erhältst du die Eingabe zur 2. Person, mit wissen_über_person[2] erhältst du die Eingabe zur 3. Person, etc.
Was du mit „jeden Input einzeln addieren“ meinst, verstehe ich nicht ganz.
Okay, also klar die sind in der Liste gespeichert, aber alle in einer? das verstehe ich noch nicht ganz
Ja, alle Eingaben zu den einzelnen Personen sind in einer Liste gespeichert, nämlich in der Liste wissen_über_person. (Die vorige Eingabe für die Anzahl ist nicht in der Liste gespeichert, sondern in der Variable anzahl_mitglieder.) Wie im vorigen Kommentar beschrieben kann man mit einer ganzen Zahl i als Index mittels wissen_über_person[i] die Eingabe zur (i + 1)-ten Person erhalten.
Wie möchtest du die denn sonst gespeichert haben? Eine Liste halte ich hier im Moment für das einfachste. Je nachdem, wie du die Daten weiterverarbeiten möchtest und ob/wie viele/welche Daten sonst noch dazu kommen, könnte es unter Umständen aber auch sinnvoll sein, die Daten anders zu speichern.
Ah das war mir nicht klar, vielen Dank!
Was ich meine ist, dass ich nun die Zahlen von wissen_über_person[0] miteinander addieren will und anschließend wissen_über_person[1] usw., dass ich dann anzahl_mitglieder- mal Summen habe.
--> Das geht dachte ich zumindest am besten mit einer Methode, etwa so (das Beispiel klappt nicht):
def termin_addieren(wissen_über_person):
summe = 0
s = wissen_über_person
for c in s:
if c !=" ":
zahl = int(c)
summe += zahl
return(summe)
--------------------------------------------------------
Von diesen Summen soll dann die kleinste ausgegeben werden.
Und ja in Listen zu speichern war mein Ziel, vielen Dank dafür!
Also bei „Was weißt du zu der {i}. Person?“ würde ich nicht erwarten, dass Zahlen eingegeben werden sollen. Deshalb bin ich verwirrt gewesen, was/warum/wie du da addieren möchtest.
Du möchtest also eine gewisse Anzahl an Abfragen machen, bei denen du jeweils eine Zahl erwartest. Diese Zahlen möchtest du dann aufaddieren. Habe ich das richtig verstanden?
(Was soll passieren, wenn keine Zahlen eingegeben werden? Abbruch? Nur die Zahlen addieren und die anderen Eingaben, die keine Zahlen sind, einfach ignorieren?)
Ja achso Sorry, ich bin durcheinander gekommen, an der Stelle ist eigentlich die Frage wie gut der Termin passt und dann steht 0 für gut, 1 für geht so und 2 für schlecht, wenn es also um 6 Personen an 7 Terminen geht, kommt 7 mal wie gut passt der Termin und dann erwarte ich da als Eingabe eben 6 Zahlen, jeweils von den 6 Personen.
Also Beispiel Eingabe eben: 1 0 1 0 2 1
Und dann dachte ich mir, um jetzt zu ermitteln welcher Termin am besten passt addiere ich die immer einfach und das kleinste Ergebnis muss dann ja automatisch am besten passen... Verwirrung gab es nur weil ich diese beiden komponenten verwechselt habe, ich schicke hier runter jetzt einfach mal mein aktuelles Programm, dann ist es nachvollziehbarer.
def termin_addieren(passender_termin_suche):
summe = 0
s = passender_termin_suche
for c in s:
if c !=" ":
zahl = int(c)
summe += zahl
return(summe)
anzahl_mitglieder = 0
#anzahl_termine = 0
#anzahl_termine = input("Wie viele Termine stehen zur Auswahl? ")
while True:
try:
anzahl_mitglieder = int(input("Wie viele Freunde sollen zu dem Treffen kommen?\n"))
except ValueError:
print("Fehler: Es wurde keine ganze Zahl eingegeben.\n")
continue
if anzahl_mitglieder < 0:
print("Fehler: Die eingegebene Anzahl war negativ.\n")
else:
break
passender_termin_suche = []
for i in range(1, anzahl_mitglieder + 1):
passender_termin_suche.append(input(f"\nWie gut passt der {i}. Termin für alle Mitglieder (bitte Zahlen immer mit einem Leerzeichen abtrennen!)?\n"))
summe = 0
summe = termin_addieren(passender_termin_suche)
print(summe)
Du machst eine For Schleife in der du deine Eingabe durchläufst. Und beim Print Befehl gibst du dann „was weißt du über die“+variablenname+„.Person?“ ein
Okay wenn ich jz folgendes schreibe:
i = 0
for i in range(anzahl_mitglieder):
i += 1
print("Wie gut passen die Termine für die", i, "Person? ")
kommt ein Fehler raus hehe
hab überall str(zahl) gemacht wo geht und der kommt immernoch
Also bem Print muss er ein String sein und bei der Schleife ein int
Ah stimmt... ich erinnere mich, gar nicht so schwer haha
Vielen Dank!
Ah klasse, genauso habe ich mir das vorgestellt... nur wo sind die Werte die ich nun eingebe denn gespeichert bzw. wie kann ich mit diesen dann weiter arbeiten, in diesem Fall jeden Input einzeln addieren?