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

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: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

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

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

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: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

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

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: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

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

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: 592
Registriert: Mittwoch 26. September 2018, 14:06

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: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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: 592
Registriert: Mittwoch 26. September 2018, 14:06

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: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

'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

@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: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Ich habe dir schon einen Vorschlag gemacht wie mit deinem Codegewusel weiter arbeiten kannst. Das ganze ist eine kleine Schleife. Wenn du das nicht hinbekommst dann tut es mir Leid und die Note für den Informatikunerricht ist dann wohl berechtigt.
Was bringt es dir wenn du eine 1 auf dem Zeugnis hast, der spätere Arbeitgeber dich dann einstellt weil er denkt du kannst was im Bereich Informatik und dann hast du doch keine Ahnung? (Ist nur ein gut gemeinter Rat)
Es gab auch einige Fächer wo ich eine Niete war, aber dann ist das halt so, man kann nicht überall gut sein.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@phythonkid: wenn Dein Wissenstand eben eine nicht ganz so gute Note bedeutet, dann kannst Du entweder mit dem Ergebnis leben, oder Dich wirklich hinsetzen und etwas lernen.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Ist das denn so schlimm wenn ich schlecht im programmieren bin??!
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Da ist ja nichts schlechtes dran, wenn du aber vorgibst Programmieren zu können, aber kannst es nicht finde ich das nicht ok.

Nochmal etwas deutlicher:

Code: Alles auswählen

Für jedes Zeichen in deinem String:
    wandle Zeichen in Integer um und addiere ihn auf eine Variable
und printe am ende die Variable 
Zuletzt geändert von Jankie am Freitag 3. April 2020, 12:57, insgesamt 3-mal geändert.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Noe. Das ist ueberhaupt nicht schlimm. Bescheissen ist schlimm. Wenn du nicht gut in was bist, lern es halt. Oder finde dich damit ab, dass du es nicht kannst, und steck maue Note weg.
Antworten