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

@Jankie ich brauche die gute Note, da ich meinen 1,0 durchschnitt halten muss um ein Stipendium zu bekommen wo ich viel für gearbeitet habe und ich habe auch nicht vor in meinem späteren Beruf etwas mit Informatik zu machen..
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Und außerdem ist es ja nicht euer Problem wenn ich dumm werde und das irgendwann rauskommt.(nicht böse gemeint) Für euch ist das ein Arbeit von höchstens 5 minuten und mir würdet ihr sehr helfen!!!
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Na dann bist Du ja hoffentlich motiviert genug, soviel Programmieren zu lernen, dass Du Deinen Schnitt halten kannst.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

ich habe ja nur noch drei Schulstunden Informatik also ja..
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@phythonkid: Auch Stipendien sollte man nicht fürs bescheissen bekommen. Das ist unfair den Leuten gegenüber die ihren 1,0er Durchschnitt ohne schummeln selbst erarbeitet haben.

Und mal ernsthaft, man kann keinen 1,0er Durchschnitt haben und einfachste Programmiergrundlagen nicht verstehen. Das Du fragst was ``for x in l: n+=x`` bedeutet, heisst nicht das Du es nicht kannst, sondern das Du es gar nicht versucht hast. Das ist Faulheit. Auch nicht schlimm, aber dann kann man halt keinen 1,0er Durchschnitt erwarten.

Vergiss den Beruf, denk erst mal ans Studium: Es dürfte zunehmend schwerer werden eines zu finden in dem man nicht irgendwann auch mit Programmieren konfrontiert wird. Das kommt oft in Form von statistischen Auswertungen und Visualisierungen. Und da dann auch gerne mal in Python, weil dessen Popularität für solche Aufgaben am steigen ist. Um einen Rechner kommt man schon gar nicht herum, und da kann es auch ganz allgemein von Vorteil sein eine Programmiersprache zu beherrschen um Aufgaben automatisieren zu können.

Aber auch auch im Beruf basteln sich viele Leute die eigentlich nie dachten sie würden mal was mit programmieren zu tun haben, ”Dinge” aus Exceltabellen und VBA. Und auch das wird in Zukunft eher zu als abnehmen.

Zu meiner Schulzeit hätte das Programm wahrscheinlich so ausgesehen (Borland Pascal):

Code: Alles auswählen

program QSumme;

var Name: String;

function Quersumme(var s: String) : Word;
var
  i: Byte;
  result: Word;
begin
  result := 0;
  for i := 1 to Length(s) do Inc(result, Ord(s[i]));
  Quersumme := result;
end;

begin
  Name := 'Pythonkid';
  WriteLn('Die Quersumme von "', Name, '" ist ', Quersumme(Name), '.');
end.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Also wer 1,0 als Notenschnitt hat, sollte die entsprechende Intelligenz besitzen, so ein Programm zu schreiben. Andernfalls ist die Aussage unglaubwürdig für mich. Und nein, ich helfe auch nicht per PN.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
phythonkid hat geschrieben: Freitag 3. April 2020, 12:57 @Jankie ich brauche die gute Note, da ich meinen 1,0 durchschnitt halten muss um ein Stipendium zu bekommen wo ich viel für gearbeitet habe ...
Wenn's denn wirklich so ist willst du als bescheißen, weil du die Kohle (für das Stipendium) von jemand anders so bekommen willst. Das macht es nicht besser...

Der eigentlich Punkt steht ja schon weiter oben: du zeigst 0,0 Motivation / Wille, dass du irgendwas in Python verstehst oder auch nur verstehen willst. Du Aufgaben lassen sich alle mit den absoluten Basics (=for-Schleife, if-Bedingung, ein paar Build-in Funktionen) lösen. Dazu sollte jeder in der Lage sein, der das Python Einsteiger-Tutorial durchgearbeitet hat oder ein paar Stunden Python in der Schule hat. Klar, die Lösungen sind dann vielleicht nicht so elegant wie das, was wir programmieren würde, ABER es käme ein (hoffentlich richtiges) Ergebnis dabei raus. Und das zählt ja erst mal bei Einsteigeraufgaben.

Das gute ist ja: demnächst sind Schulferien, da kannst du mal in Ruhe das Tutorial auf docs.python.org durcharbeiten. Damit ist man eigentlich relativ schnell durch. Positiver Seiteneffekt: man lernt noch was in Englisch dabei, weil das Tutorial englisch ist.

Und wenn du dann mit eigenem Code vorbei kommst, den _du_ auch verstehst, dann hilft dir auch sicher wer. Programmieren ist halt nicht stumpfes Copy&Paste.

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

Natürlich ist es nicht unser Problem, aber dein Problem und ich möchte niemandem ein Problem an den Hals hängen.

Das was bei deinem Code noch fehlt sind 2-3 Zeilen Code.

Noch ein letztes mal:

Du hast ja schon die Zahl 80104121116104111110107105100 in Form eines Strings. Über Strings kann man iterieren. Du musst also über deinen String iterieren (mit einer for Schleife) (Wenn du nicht weiß wie das geht: Google: "python string iterate"). Damit kommst du quasi an jede Zahl einzeln ran. Dann brauchst du eine Variable "Quersumme" die dann am Ende ausgegeben wird und auf die du jede Zahl draufaddierst, also Quersumme = Quersumme + Zahl. Die Zahl ist aber noch ein String und muss zu einem Integer konvertiert werden. (Wenn du nicht weißt wie das geht Google: "python string to int"). Dann musst du am Ende nur noch Quersumme ausgeben lassen.

#edit:

Mein Vorschlag: Du zeigst mir ein funktionieren Codeschnipsel und ich zeig dir meinen Codeschnipsel. (Hört sich seltsam an lol)
Zuletzt geändert von Jankie am Freitag 3. April 2020, 13:34, insgesamt 2-mal geändert.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

noisefloor hat geschrieben: Freitag 3. April 2020, 13:29 Programmieren ist halt nicht stumpfes Copy&Paste.
Wobei dir da einige "Web-Designer" wohl was anderes erzählen würden, wenn sie ehrlich sind... ;)
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

@Jankie danke das du es mir erklären willst!! Ich weiß das wirklich zu schätzen.. ich habe jetzt meinen String iteriert:

Code: Alles auswählen

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

string_to_iterate = n
for char_index in range(len(string_to_iterate)):
   print(string_to_iterate[char_index])

Quersumme = (Quersumme + string_to_iterate)
jedoch habe ich das mit der variable quersumme noch nicht verstanden und so wie ich es gemacht habe kommt immer eine Fehlermeldung, dass "Quersumme "nicht definiert ist.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

So wie du über den String iterierst ist es ein Anti-Pattern, ein einfaches:

Code: Alles auswählen

for char in text:
    print(char)


macht das Gleiche.

Quersumme muss vorher erst definiert werden, sonst kommt es zu einen NameError, also musst du VOR der Schleife die Variable Quersumme definieren, also Quersumme = 0

Jetzt kommst du ja an jedes Zeichen ran, dann musst du einfach nur noch jedes Zeichen in einen Integer umwandeln mit int() und diese konvertierte Zahl dann auf Quersumme draufrechnen.

Die Zeile

Code: Alles auswählen

Quersumme = (Quersumme + string_to_iterate)
ist auch Falsch. Du möchtest ja auf die Quersumme jeden char addieren, nicht den gesamten String. Das muss auch in den Schleifenkörper. Am Ende musst du alles natürlich noch mit print() ausgeben.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich frage mich gerade, ob die Aufgabenstellung wirklich so gemeint ist, wie Jankie das beschreibt.

@phythonkid: wenn Du Dir die erste Seite der Grundlagen von Python angeschaut hast, dann sollte klar sein, warum Quersumme nicht definiert ist.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

@Jankie ich glaube ich habe gerade echt blödsin gemacht aber ich habe es versucht..

Code: Alles auswählen

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

for char in Name:
    print(char)
Quersumme = Quersumme + int(x)

print Quersumme   
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

das obere int(x) kann weg, Die Zeile Quersumme = Quersumme + int(x) ist nicht richtig eingerückt, es muss im Schleifenkörper sein. Du Iterierst auch über den falschen String(du musst über den iterieren der die vorher erzeugete lange Zahl enthält) und wandelst das falsche Zeichen in einen Integer um.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

über welchen string muss ich denn itereieren und welches zeichen muss in den interger? muss "n" in den interger
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

Das Ergebnis was hier rauskommt ist auch sehr komisch:
P
y
s
o
n
k
i
d
1000
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

@Jankie und wenn ich oben beim Namen jetzt was anderes eingeben zum Beispiel Max dann kommt:
M
a
x
360
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ergänzend:

Code: Alles auswählen

for x in l: n+=x 
    Quersumme = 0
    int(x)
Bei _jedem_ Schleifendurchlauf wird `Quersumme` neu mit 0 definiert -> willst du nicht, ist auch überflüssig. Außerdem wird im gezeigten Code `Quersumme` in der Schleife nicht benutzt, also brauchst du es auch in der Schleife nicht definieren.

`int(x)` wandelt zwar x in einen Integer-Wert, aber der ist direkt wieder weg, weil das Ergebnis des Funktionsaufrufs an nichts gebunden wird.

Tipp: Programmieren != Raten

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

n ist doch dein String "80104121116104111110107105100" da musst du drüber iterieren, um an jedes Zeichen zu kommen. Und jedes Zeichen von diesem String muss in ein int konvertiert werden und auf die Quersumme aufaddiert werden.
phythonkid
User
Beiträge: 31
Registriert: Donnerstag 2. April 2020, 11:08

??? ich verzweifel gerade ???

Code: Alles auswählen

Name = "Max"
l = map(str,(map(ord, Name)))
n = ""
for x in l: n += x 
Quersumme = 0
int(n)

for char in Name:
    Quersumme = Quersumme + int(x)

print (Quersumme + int(n))
Antworten