Hi Ihr,
Ich habe erst kürzlich mit dem Prgrammieren angfangen und habe ein Programm geschrieben das mehr macht als es sollte.
Die Aufgabe ist ein Programm zu schreiben das alle Zahlen zwischen 1 und 1000 ausgibt deren Quadrate Palindrome sind.
Also wie "Otto" von vorne nach hinten gleich sind.
11 wäre so ein Beispiel, da 11 quadriert 121 ist und somit von vorne nach hinten gleich ist.
Mein Programm gibt mir alle Zahlen aus die ich brauche, aber zusätlich kommt nach der 3 noch 2,3,3.
ich habe keine Ahnung warum.
Die Zahlenfolge ist 1,2,3,2,3,3,11,22,26,101,111,121,202,212,264,307,836.
der Code den ich in Python 3.7 geschrieben habe lautet:
for a in range(1, 1001):
while str(a ** 2) == str(a ** 2)[::-1]:
print(a)
a = a + 1
also warum sind da die zusätzlichen 2,3,3 und wie bekommt man die raus?
vielen Dank,
M.
Palindrom Programm
Bitte in Zukunft Code-Tags zur Auszeichnung deines Codes verwenden. Sonst gehen die in Python relevanten Einrueckungen verloren.
Zum Code: warum eine while-Schleife in einer for-Schleife? Letztere reicht, und die Bedingung der while-Schleife sollte in einem if ausgewertet werden, und dann eben a ausgegeben werden.
Zum Code: warum eine while-Schleife in einer for-Schleife? Letztere reicht, und die Bedingung der while-Schleife sollte in einem if ausgewertet werden, und dann eben a ausgegeben werden.
Weshalb wird 'a' denn inkrementiert? Das hat nur einen temporären Effekt, da der Name beim nächsten Durchlauf der For-Schleife wieder an den Wert gebunden wird, der an der Reihe wäre. Daher erhälst du die seltsame Zahlenfolge, die du gezeigt hast. Wie __deets__ schon schrieb, reicht hier ein einfaches If-Konstrukt. (Unabhängig davon könnte man diese Zeile übrigens als 'i += 1' schreiben.)
Aufgrund der inneren while Schleife bekommst Du die zusätzliche Ausgaben dann, wenn die Bedingung des Quadrat-Palindroms sowohl für a, als auch für a+1 erfüllt ist. Bei einstelligen Zahlen kommt das vor. Tipp: eine einfache for Schleife ohne irgendwelche inneren Inkrementierungen führt geradewegs zum Ziel.
-
- User
- Beiträge: 9
- Registriert: Donnerstag 3. Oktober 2019, 12:34
Vielen Dank!
Ich habe nicht daran gedacht statt der While Schleife einfach ein if zu verwenden.
Jetzt klappt es.
viele Grüße,
M.
Ich habe nicht daran gedacht statt der While Schleife einfach ein if zu verwenden.
Jetzt klappt es.
viele Grüße,
M.