Mein Vorschlag ist:
def numbers(count): #Iterator-Funktion die dich nach n Zahlen fragt
index = 0 #Helfer, um zu ermitteln, nach welcher Zahl gefragt wird.
while index < count: #Bricht ab, wenn "count" Zahlen abgefragt wurden
output = input(f"Zahl { index + 1 }:") #Frage nach der Zahl
if int(output) in range(1, 7): #Vorliebe
yield output #Das macht die Funktion zum Iterator
index += 1 #Helfer auf die nächste Zahl setzen
else:
#Fehlerbedingung, Helfer wird nicht hochgesetzt.
#Damit wird die selbe Zahl nochmal abgefragt
print("Die Zahl muss zwischen 1 und 6 liegen!")
#Programmstart
print("Tippe drei Zahlen zwischen 1 und 6")
#Ausgabe der Zahlen - ist natürlich beliebig.
print(list(numbers(3)))
Deine Frage enthält eine Menge kleiner Fehler:
output = print ("Tippe drei Zahlen zwischen 1 und 6")
Das "output = " ist überflüssig
output1 = input ("Zahl 1:")
Das sollte innerhalb der Schleife liegen, damit output1 in jedem Durchgang neu abgefragt wird.
while True:
if (int (output1) <= 6 and int (output1) >= 1):
Völlig in Ordnung
zahl1 = output1
Ist genau genommen überflüssig weil du am Ende eh alles in output1, ..2, ..3 stehen hast.
break;
else:
Völlig in Ordnung
input ("Die Zahl muss zwischen 1 und 6 liegen!")
An dieser Stelle liegt ein Fehler vor. Entweder du sagst "print" und ziehst das "output1 = input(..." in die Schleife oder du lässt das oben vor der Schleife und sagst hier "output1 = input ("Die Zahl muss zwischen 1 und 6 liegen!")"
Denn bei dem zweiten Schleifendurchlauf wird output1 nicht neu gesetzt und verbleibt sonst auf dem falschen Wert und du hast eine endlos-Schleife die immer wieder die letzte Frage stellt.
output2 = input ("Zahl 2:")
while True:
if (int (output2) <= 6 and int (output2) >= 1):
zahl2 = output2
break;
else:
input ("Die Zahl muss zwischen 1 und 6 liegen!")
...
Der Teil ist unschön, da im Prinzip 3x das Gleiche gemacht wird. Du kannst die Funktion in eine naja Funktion packen und dann einfach 3x aufrufen und die Ausgaben mit nem String - Format, oder einer String - concat dynamisch gestalten oder wie in meinem Beispiel die Schleife für die Fehleingaben UND die Iteration benutzen.
Dein Programm "minimal repariert" sieht so aus:
print ("Tippe drei Zahlen zwischen 1 und 6")
output1 = input ("Zahl 1:")
while True:
if (int (output1) <= 6 and int (output1) >= 1):
zahl1 = output1
break;
else:
output1 = input ("Die Zahl muss zwischen 1 und 6 liegen!")
output2 = input ("Zahl 2:")
while True:
if (int (output2) <= 6 and int (output2) >= 1):
zahl2 = output2
break;
else:
output2 = input ("Die Zahl muss zwischen 1 und 6 liegen!")
output3 = input ("Zahl 3:")
while True:
if (int (output3) <= 6 and int (output3) >= 1):
zahl3 = output3
break;
else:
output3 = input ("Die Zahl muss zwischen 1 und 6 liegen!")
Dein Programm minimal schöner und repariert sieht so aus:
print ("Tippe drei Zahlen zwischen 1 und 6")
def get_zahl(which):
output = input (f"Zahl {which}:")
while True:
if (int (output) <= 6 and int (output) >= 1):
return output
else:
output = input ("Die Zahl muss zwischen 1 und 6 liegen!")
output1 = get_zahl("1")
output2 = get_zahl("2")
output3 = get_zahl("3")