Seite 1 von 1

Quersumme ausrechnen

Verfasst: Freitag 2. Oktober 2020, 20:04
von MaximalMax
Das ist keine Hausaufgabe oder so, sondern einfach nur eine Übung die ich mir selbst gestellt habe aber nicht geschafft habe.

Guten Tag,

Kann mir Jemand bitte einen Code schreiben, wie ich die Quersumme in Python berechne. Ich möchte dies mittels einer Funktion machen und die Zahl, von der die Quersumme ausgerechnet wird als Parameter übergeben.

Es scheitert eigentlich nur daran, dass wenn ich zum beispiel 18 habe die so zu trennen, dass ich dann die 1 + 8 rechnen kann.

Ich freue mich auf Antworten/Lösungen :D

Re: Quersumme ausrechnen

Verfasst: Freitag 2. Oktober 2020, 20:09
von sparrow
Wenn du dir schon selbst eine solche Aufgabe stellst, dann solltest du sie auch selbst lösen.
Wie würdest du denn im realen Leben vorgehen? Und was könntest du tun um das zu erreichen?

Re: Quersumme ausrechnen

Verfasst: Freitag 2. Oktober 2020, 21:13
von snafu
Ich traue dem Braten zwar nicht so recht, dass es angeblich keine Hausaufgabe ist, aber hier trotzdem eine Art, die Aufgabe zu lösen:

Code: Alles auswählen

def get_digit_sum(number):
    result = 0
    while number > 0:
        result += number % 10
        number //= 10
    return result
Oder rekursiv:

Code: Alles auswählen

def get_digit_sum(number, result=0):
    return (get_digit_sum(number // 10, result + number % 10)
            if number else result)

Re: Quersumme ausrechnen

Verfasst: Freitag 2. Oktober 2020, 21:16
von /me
Auch wenn da vielleicht etwas Zeit fressende Typkonvertierungen enthalten sind mag ich ja diese Lösung;:

Code: Alles auswählen

def get_sum_of_digits(number):
    return sum(map(int, str(number)))

Re: Quersumme ausrechnen

Verfasst: Samstag 3. Oktober 2020, 09:42
von Sirius3
@MaximalMax: so was hast du jetzt gewonnen, das dir jemand die Lösung gesungen hat. Hätte man durch googeln auch leicht finden können.

Re: Quersumme ausrechnen

Verfasst: Samstag 3. Oktober 2020, 10:53
von __blackjack__
Man müsste noch nicht einmal eine Suchmaschine bemühen. Suchen nach „Quersumme“ alleine hier im Forum liefert 100+ Treffer.

Re: Quersumme ausrechnen

Verfasst: Montag 5. Oktober 2020, 09:29
von DeaD_EyE
Wenn wir schon bei Quersummen sind, könnte man ja gleich mit Numerologie weiter machen.

Was ist die Quersumme von CORONA, wenn A == 1, B == 2, usw..
Im Internet gibt es Wörterbücher zum Download. Das Mapping musst du dir nicht selbst erstellen, da hilft das Modul string.
Viel Spaß.

Re: Quersumme ausrechnen

Verfasst: Montag 5. Oktober 2020, 10:57
von snafu
DeaD_EyE hat geschrieben: Montag 5. Oktober 2020, 09:29 Was ist die Quersumme von CORONA, wenn A == 1, B == 2, usw..
Ich möchte lösen:

Code: Alles auswählen

sum(ord(char) & 0x1f for char in "CORONA")

Re: Quersumme ausrechnen

Verfasst: Dienstag 6. Oktober 2020, 06:49
von Jankie
Ich möchte auch lösen:

Code: Alles auswählen

import string

CHAR_TO_NUMBER = dict(enumerate(string.ascii_uppercase))
WORD = "CORONA"

print(" ".join([str(key + 1) for char in WORD for key, value in CHAR_TO_NUMBER.items() if char == value]))

Re: Quersumme ausrechnen

Verfasst: Dienstag 6. Oktober 2020, 07:41
von Sirius3
@Jankie: Wörterbücher sind dazu da, effektiv über die Schlüssel zuzugreifen. Der Name des Wörterbuchs CHAR_TO_NUMBER ist so auch falsch, weil es ein NUMBER_TO_CHAR-Wörterbuch ist.
enumerate kennt auch einen Parameter, mit dem man den Startwert angeben kann, so dass das key + 1 unnötig wird.

Code: Alles auswählen

import string
CHAR_TO_NUMBER = {char: str(num) for num, char in enumerate(string.ascii_uppercase, 1)}

word = "CORONA"
print(" ".join(map(CHAR_TO_NUMBER.get, word)))

Re: Quersumme ausrechnen

Verfasst: Dienstag 6. Oktober 2020, 08:29
von Jankie
Vielen Dank für die Hinweise @Sirius3.

Habe noch eine andere Methode die ähnlich der von @snafu ist.

Code: Alles auswählen

WORD = "CORONA"

print(" ".join([str(ord(char) - 96) for char in WORD.lower()]))

Re: Quersumme ausrechnen

Verfasst: Dienstag 6. Oktober 2020, 09:12
von __blackjack__
Die eckigen Klammern kann man sich sparen, dann spart Python sich eine extra Liste anzulegen. 🙂

Re: Quersumme ausrechnen

Verfasst: Dienstag 6. Oktober 2020, 12:37
von DeaD_EyE
Ich habs immer so gemacht:

Code: Alles auswählen

import string
sum(string.ascii_uppercase.index(c) + 1 for c in "CORONA")
@snafu, wie bist du auf 0x1f gekommen?

Code: Alles auswählen

sum(ord(char) & 0x1f for char in "CORONA")
Hint: Wie viele Buchstaben hat Corona?