Quersumme eines Namen ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Freitag 3. April 2020, 10:59

Hallo zusammen,
ich bin mal wieder da mit einem Problem!
Ich habe angefangen ein program zu programmieren, dass sozusagen die Quersumme eines Namen ermittelt..
Also die Buchstaben werden in Zahlen umgewandelt und dann wird die Quersumme dieser berechnet! Hier ist was ich bisher haben:

Code: Alles auswählen

Name = "Phythonkid"
l = map(str,(map(ord, Name)))
n = ""
for x in l: n+=x 


print n
Ich würde mich freuen wenn mir jemand dabei helfen könnte! :D
Sirius3
User
Beiträge: 12008
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 3. April 2020, 11:16

Python2 ist veraltet, steige auf Python3 um. Variablennamen sollten aussagekräftig sein. `l` ist ein besonders schlechter Name, weil er leicht mit 1 verwechselt werden kann.
Wo hast Du ein Problem? Was ist das Ergebnis und wie weicht es von dem ab, was Du erwartest? Gibt es eine Fehlermeldung? Wenn ja, welche?
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Freitag 3. April 2020, 11:20

Das Ergebnis ist hier :80104121116104111110107105100. Dies sind jedoch alles einzelne Zahlen und ich möchte sie zusammenrechnen!
Benutzeravatar
noisefloor
User
Beiträge: 2899
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Freitag 3. April 2020, 11:22

Hallo,

was funktioniert denn nicht, wie du es erwartest? Kommt eine Fehlermeldung? Explodiert dein Rechner?

Wie ist Quersumme definiert? Wie in der Mathermatik üblich? Dann fehlt die Quersummenbildung bei dir. Der Code versucht ja nur, die Summe der Buchstabenwerte zu bilden.
Ist A=1, B=2, ... a=1, b=2? Wenn ja musst du bei `ord` den offset berücksichtigen, weil `ord('A`) ja nicht gleich 1 ist.
Und wenn du eine Quersumme berechnen willst wäre es gut, die Integerwerte nicht vor dem Rechnen in Strings zu wandeln.

Gruß, noisefloor
Sirius3
User
Beiträge: 12008
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 3. April 2020, 11:47

Das ist das, was Du programmiert hast. Du addierst hier ja keine Zahlen, sondern Strings.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Freitag 3. April 2020, 12:05

Wie die Zahlen bestimmt werden zu den Buchstaben weiß ich auch noch nicht jedoch habe ich herausgefunden, dass "A" die Zahl 65 ist und dann geht das so weiter "B" ist 66 usw...Die Quersumme ist genauso definiert wie in der mathematik. Wie ist es also möglich die Zahlen zusammenzurechnen und die Quersumme zu ermitteln? Oder habe ich da einen ganz falschen ansatz?
Benutzeravatar
kbr
User
Beiträge: 1145
Registriert: Mittwoch 15. Oktober 2008, 09:27

Freitag 3. April 2020, 12:09

Wenn Du noch nicht weißt, wie die zu den Buchstaben gehörigen Zahlenwerte bestimmt werden können, dann frage ich mich, wo Du den von Dir geposteten Code her hast.
Zuletzt geändert von kbr am Freitag 3. April 2020, 12:09, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 12008
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 3. April 2020, 12:09

Hast Du verstanden, was Du da geschrieben, bzw. kopiert hast? Dann beantworten sich Deine Fragen von alleine. Andernfalls nimm mal das Programm Stück für Stück auseinander und schau Dir an, was jeder einzelne Schritt tut.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Freitag 3. April 2020, 12:13

Könnte mir jemand vielleicht die Zeile erklären:

Code: Alles auswählen

l = map(str,(map(ord, Name)))
und diese:

Code: Alles auswählen

for x in l: n+=x 
Jankie
User
Beiträge: 340
Registriert: Mittwoch 26. September 2018, 14:06

Freitag 3. April 2020, 12:21

Wenn du alle Zahlen in einem String hast dann musst du mit einer Schleife über die Chars des Strings iterieren und die in einen Int umwandeln und dann einfach nur aufaddieren.
Benutzeravatar
noisefloor
User
Beiträge: 2899
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Freitag 3. April 2020, 12:23

Hallo,

`map` wendet eine Funktion (das 1. Argument) auf eine "Iterable" (2. Argument). Das ist aber auch in der Doku von Python erklärt...
Das 2. ist halt eine for-Schleife, wo über l iteriert wird und in der Schleife n = n + x gerechnet wird. Schreibt man eigentlich zwecks Lesbarkeit in 2 Zeilen.

Gruß, noisefloor
Jankie
User
Beiträge: 340
Registriert: Mittwoch 26. September 2018, 14:06

Freitag 3. April 2020, 12:24

Ergänzend zu noisefloor:

Die Funktion ord() gibt eine ganze Zahl zurück, die das Unicode-Zeichen darstellt.

Die Funktion str() gibt die String-Version des angegebenen Objekts zurück.
Benutzeravatar
kbr
User
Beiträge: 1145
Registriert: Mittwoch 15. Oktober 2008, 09:27

Freitag 3. April 2020, 12:32

'ord' ist eine Funktion, die Du nachschlagen kannst, und das zweite mit 'for' ist eine Schleife. Die Lösungen der anderen Aufgabe mit der alternieren Groß- und Kleinschreibung, wirst Du, trotz anderslautender Aussage, auch nicht verstanden haben. Das ist keine Schande, denn die Lösungen waren nicht gerade für Anfänger. Anfänger sein ist auch keine Schande, denn jeder fängt mal an. Aber ich habe den Eindruck, dass Du hier unverstandene Codefragmente einwirfst und hoffst, dass andere die Dinge ans Laufen bringen, so dass Du Lösungen hast, die Du abgeben kannst.

Das Problem dabei ist, falls Du damit durchkommst, Du irgendwann mit Aufgaben konfrontierst wirst, die Du wirklich alleine lösen musst - und dann wirst Du scheitern. Beim Programmieren gibt es einfach kein Durchgewurschtel.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Freitag 3. April 2020, 12:40

@kbr du hast recht ja, jedoch habe ich nur noch dieses Schuljahr Informatik und insgesamt, nach den Osterferien, auch nur noch drei Stunden..Ich möchte da einfach mit einer guten Note rauskommen und es wäre toll wenn mir dabei jemand helfen könnte...ich habe schon so oft versucht das alles zu verstehen, jedoch habe ich es bis heuet nicht geschafft und ich möchte hier auch niemanden irgendwie "ausnutzen" ich benötige lediglich ein wenig Hilfe bei dieser Aufgabe!
Benutzeravatar
__blackjack__
User
Beiträge: 6046
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Freitag 3. April 2020, 12:41

Interessant ist was pythonkid schon alles programmiert und verstanden hat, und dann mit der Frage kommt ob jemand mal ``for x in l: n+=x`` erklären könnte. Ich weiss nicht ob das jetzt zum lachen oder zum weinen ist. Wahrscheinlich etwas von beidem.
long long ago; /* in a galaxy far far away */
Antworten