Beim Eingeben der Funktion sollte beispielsweise die Zahl 702 4904 zurückgeben, da das Quadrat von 7 49 ist, das Quadrat von 0 ist 0 und das Quadrat von 2 ist 4. Wenn die Funktion eine Null empfängt, muss sie 0 zurückgeben.
Die grundlegende Herausforderung dieser Übung besteht darin, eine Ganzzahl Ziffer für Ziffer durchzugehen und ein Ergebnis als eine weitere Ganzzahl zurückzugeben.
Wie alles in der Programmierung ist es möglich, diese Übung auf viele Arten zu lösen. Lassen Sie uns das Problem zunächst mithilfe der Zahlenmanipulationseigenschaften in Python lösen. Anschließend erkläre ich eine weitere, fortgeschrittenere Methode.
def square_digits(num): if num == 0: return 0 result = "" while num > 0: num_sqr = (num % 10) ** 2 num = num // 10 result = str(num_sqr) result return int(result)
In diesem Code bewerten wir zunächst, ob eine 0 empfangen wird, um eine 0 zurückzugeben, wie in der Anweisung angegeben. Dann initialisieren wir die Variable result als leeren String und erstellen eine While-Schleife mit der Bedingung num > 0. Wir definieren die Variable num_sqr, die das Quadrat jeder empfangenen Ziffer ist. Mit num % 10 erhalten wir die letzte Ziffer der empfangenen Zahl und quadrieren diese dann mit **2.
Die Verwendung von num % 10 ist eine gängige Methode zum Extrahieren der letzten Ziffer einer Zahl.
Der Ausdruck num = num // 10 entfernt die letzte Ziffer der Zahl und geht vorwärts durch jede Ziffer.
Eine andere Möglichkeit, das Problem zu lösen, besteht darin, die Zahl in eine Zeichenfolge umzuwandeln und diese Zeichenfolge mit einer for-Schleife zu durchlaufen:
def square_digits(num): result = "" for digit in str(num): result = str(int(digit)**2) return int(result)
Dieser Code ist optimaler, er hat weniger Zeilen und die Durchquerung ist sehr gut verstanden, und es ist nicht notwendig auszuwerten, ob er eine 0 erhält. In Python ist es möglich, eine Zeichenfolge Zeichen für Zeichen mit einer for-Schleife zu durchlaufen . Wir verwenden diese Funktionalität, um die empfangene Zahl zu durchlaufen und sie mit str(num) in einen String umzuwandeln. Wir erstellen die Variable result als leere Zeichenfolge, mit der ein Zeichen verkettet wird, das das Ergebnis einer in eine Ganzzahl umgewandelten Ziffer ist und auf 2 erhöht wird, alles in eine Zeichenfolge umgewandelt. Dann geben wir das in eine Ganzzahl konvertierte Ergebnis zurück.
*Eine fortgeschrittenere und „elegantere“ Möglichkeit * ist die Verwendung von Generator Understanding und dem .join motodo. Ich stelle Ihnen zuerst den Code vor und wir werden ihn aufschlüsseln und diese Begriffe erklären.
def square_digits(num): return int(''.join(str(int(digit)**2) for digit in str(num)))
Dieser erste Code ist nicht gut lesbar, wenn Sie die Konzepte nicht kennen
das macht es aus.
Der Ausdruck str(int(digit)**2) für die Ziffer in str(num) ist ein _generator _(Generator-Ausdruck), der jede Ziffer in der Zeichenfolgendarstellung der Zahl num durchläuft.
Jede Ziffer wird in eine Ganzzahl umgewandelt (int(digit)), quadriert (**2) und dann wieder in eine Zeichenfolge umgewandelt (str(...)). Dann nehmen Sie mit ''.join(...) eine Sequenz (in diesem Fall den Generator) und verketten alle Elemente zu einer einzigen Zeichenfolge. Hier werden alle quadratischen Ziffern zu einer einzigen Zeichenfolge ohne Trennzeichen zusammengefasst (da die Zeichenfolge zwischen den einfachen Anführungszeichen leer ist '').
Wie wir sehen, zeigen die unterschiedlichen Lösungswege einer Übung den Kenntnisstand einer Sprache. Alle Lösungen sind korrekt, wenn sie die Tests bestehen, einige sind jedoch effizienter und lesbarer als andere. Die Wahl des Ansatzes hängt vom Kontext und der jeweiligen Priorisierung ab:
Lesbarkeit: Dies ist entscheidend, wenn andere Entwickler Ihren Code lesen und pflegen. Klarer, leicht verständlicher Code verringert das Fehlerrisiko und erleichtert die Wartung. ?
Effizienz: Wichtig bei der Arbeit mit großen Datenmengen oder bei Anwendungen, bei denen die Leistung entscheidend ist. Optimierter Code kann einen großen Unterschied in der Geschwindigkeit und im Ressourcenverbrauch bewirken. ?
Einfachheit: Für Fälle, in denen die schnelle und direkte Lösung des Problems im Vordergrund steht, etwa bei Prototypen oder didaktischen Übungen. Einfachheit erleichtert häufig das Debuggen und Testen von Code. ?
Bei der Entwicklung ist es wichtig, ein Gleichgewicht zwischen diesen Überlegungen zu finden und die Lösung an die spezifischen Anforderungen des Projekts oder der Aufgabe anzupassen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3