problem beim code zu aufsummieren

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.
BlackJack

Jain. Das geht, man hat zwei Namen eingespart aber dafür jetzt `index`. Also letztendlich nur einen Namen eingespart.
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

aha, so sieht man die leute aus seinem kurs wieder :P
erstma @BlackJack glaub ich wars: ich hab heut meine Lösung von dec2bin (du erinnerst dich) vorgestellt.
Bemängelt wurde vom Lehrer verwendung von:

-list()
-.append
-.join
-reversed

schlusskommentar vom Lehrer "ab sofort dürft ihr keine Sachen mehr benutzen die wir im Unterricht noch nicht hatten" (wir sind ja im selben Kurs)

kurz gesagt is es so wie du auf seite 1 geschrieben hast: uns wird das denken verboten

zum thema (hauptsächlich @ squaller):
ich hab das ganze so gelöst:

Code: Alles auswählen

def bindestrichentfernung(isbn):
    isbn_neu = ''
    for i in str(isbn):
        if(i != '-'):
            isbn_neu = isbn_neu + i
    return int(isbn_neu)

def pruefziffer(isbn):
    isbn = bindestrichentfernung(isbn)
    faktor = 1
    ergebnis = 0
    for i in str(isbn):
        ergebnis = ergebnis + faktor*int(i)
        faktor = faktor + 1
    pz = ergebnis % 11
    if (pz == 10):
        pz = 'X'
    return pz
das ganze wäre wie schon erwähnt mit ner Liste weitaus einfacher zu lösen, aber naja hab ich halt maln programm geschrieben ohne zu denken :roll:
BlackJack

Ich nehme mal an, dass die `replace()`-Methode auf Zeichenketten auch tabu ist?

Allerdings dürfte es wohl im Rahmen sein, wenn Du die unnötige Umkodierung von Zeichenkette nach `int` und dann wieder nach Zeichenkette weglässt.

Der Algorithmus scheint auch einen eigenen ISBN-Standard zu erfinden. Im ISBN-10 Algorithmus sind die Multiplikationsfaktoren absteigend 10 bis 2.

Edit: Die beiden Algorithmen in Haskell:

Code: Alles auswählen

import Char

cleanISBN = map digitToInt . filter isDigit

checksum10 digits = if checksum == 10 then 'X' else intToDigit checksum
    where checksum = 11 - (sum $ zipWith (*) [10,9..] digits) `mod` 11

checksum13 digits = intToDigit $ (10 - sum' `mod` 10) `mod` 10
    where sum' = sum $ zipWith (*) (cycle [1,3]) digits

checksum isbn = let digits = cleanISBN isbn in
    case length digits of
        9  -> checksum10 digits
        12 -> checksum13 digits
        _  -> error "not an ISBN-10 or ISBN-13 without check digit"

testData = ["0-306-40615-", "978-0-306-40615-"]

main = putStrLn $ unlines [x ++ [checksum x] | x <- testData]
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

off topic (hoffe ihr vergebt mir)
RauberRacing hat geschrieben:Bemängelt wurde vom Lehrer verwendung von:

-list()
-.append
-.join
-reversed

schlusskommentar vom Lehrer "ab sofort dürft ihr keine Sachen mehr benutzen die wir im Unterricht noch nicht hatten" (wir sind ja im selben Kurs)

kurz gesagt is es so wie du auf seite 1 geschrieben hast: uns wird das denken verboten
Oh je. Davon hört man ja schon beim bloßen Lesen des Tutorials.
Natürlich kann ich verstehen, daß Lehrer alle Leute in einer Klasse mitnehmen wollen, also auch diejenigen ohne besonderes Interesse. Aber diese Einschränkungen gehen schon ein bißchen weit (werde jetzt nicht großartig argumentieren). Vielleicht könnt ihr mit ihm reden. Das ist schwierig, schließlich soll so etwas ja bei keiner Seite ein ungutes Gefühl hinterlassen. Ich wünsche jedenfalls viel Glück beim Kurs!

@BlackVivi: Abgesehen von BJs Kommentar. Rekursion? Mal schauen, wann wir von dem Kurs Fragen zum dem Thema sehen ;-) .

@Squaller: Schon mal nicht schlecht.
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

rekursion machen wir so nebenbei
also alles halt fürn nächsten tag rekursiv schreiben usw.
wir sind halt was den stand des gesamtkurses angeht noch ganz am anfang -.- leider
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

RauberRacing hat geschrieben:rekursion machen wir so nebenbei
also alles halt fürn nächsten tag rekursiv schreiben usw.
wir sind halt was den stand des gesamtkurses angeht noch ganz am anfang -.- leider
Die Worte "Am Anfang" und "Rekursion" in einem Absatz find' ich schon merkwürdig. Und Rekursion so "nebenbei" machen oO? Die sind der größte Bestandteil der funktionalen Programmierung. Für das bloße Verständnis von Programmen find' ich es scho wichtig.
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

Am Anfang heißt halt dass der code der im kurs vorherrscht verdammt primitiv gehalten wird :(
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

RauberRacing hat geschrieben:Am Anfang heißt halt dass der code der im kurs vorherrscht verdammt primitiv gehalten wird :(
Programmieren hat eigentlich relativ wenig mit Coden zu tun, zumindest find' ich das. Bevor wir uns damals überhaupt an den Computer gesetzt haben, haben wir 2 Wochen lang nur darüber geredet oO!

(2 Wochen heißt in diesem Fall 8 Schulstunden, hauptsächlich halt mit den Paradigmen der Programmierung beschäftigt, ein wenig Geschichte, was ist ein Compiler, was ist dies und das,... Haben ein paar Schreibtischtests gemacht und erst dann konnte man sich an das Coden trauen. VB und sowas kann vllt mit dransitzen und zusammenklicken gelöst werden...)
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

ja das is schon klar
wir sind ja jetzt ca. 3 1/2 monate dran
die ersten wochen haben wir auch nur da gesessen und struktogramme, flußdiagramme etc pp :roll: gemacht.... das war halt verdammt ätzend
aber was ich damit sagen wollt is halt dass wir für die zeit seit der wir jetzt in python schreiben halt total primitiv sind... und bischen eigeninitiative sollt man doch in nem LK voraussetzen können
Squaller
User
Beiträge: 12
Registriert: Mittwoch 21. November 2007, 18:34
Kontaktdaten:

genau meine meinung...
vor allem bei der bewertung ist das gemein...
naja, ich will den lehrer jetzt nicht schlecht machen,
aber wie er den untericht gestaltet und wie er die noten gibt ist schon nicht so toll...
mit rekursion haben viele in unserm kurs probleme, jedoch wird es als hausaufgabe aufgegeben und am nächsten tag in einer hü abgefragt...
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Programmieren in der Schule ist sowieso(aus meiner Sicht) unnütz. Warum?

Man kann den Kurs grob in 3 Gruppen einteilen:

1. Die, die sich schon gut auskenn, für die wird es langweilig
2. Die, die keine Interesse haben
3. Die, die es einfach nicht "gebacken" bekommen.

Durch diese Individualität der Gruppen und der Anzahl der Schüler ist es sehr schwer umsetzbar den Schülern ordentlich Programmieren beizubringen. Manchmal liegt es auch an der eigenen Unwissenheit des Lehrers.

Nehmen wir als Beispiel mich. :lol:

Wir hatten ca. 10 Stunden HTML--->Ich schätze ich habe das gleiche Wissen, wie wenn ich ein 50 seitiges Tutorial gelesen hätte.

Wir haben seit ca. 20 Stunden Oberon Pow(Die Sprache hat eine hässliche, umständliche Syntax)--->Was kann ich?Werte einlesen, Texte, Variablenwerte auf Bildschirm ausgeben, simple arithmetische Berechnungen, IF, ELSEIF, ELSE. Das wars.
mfg

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackVivi hat geschrieben:Die Worte "Am Anfang" und "Rekursion" in einem Absatz find' ich schon merkwürdig.
In "The Little Schemer" einem Buch das wie ein Kinderbuch ausschaut ist es in Kapitel 2. Eigentlich lehrt das Buch nur Rekursion.

Bezüglich Python 47s Kommentar zur Sinnhaftigkeit des Programmierens in der Schule: sehe ich nicht ganz so. Denn: in anderen Kursen sieht das doch auch so aus. Nehmen wir Englisch. Nehmen wir Mathe. Keiner würde sagen, dass man die Fächer loswerden kann. In der Praxis ist es schon wahr dass es recht sinnlos ist - vielleicht sollte man wirklich mehr Zeit auf die Konzepte und weniger auf die Implementierung verwenden. Denn die Konzepte sind größtenteils Sprach- und Zeitunabhängig und helfen einem zum Verständnis von Computern, die Implementierung von Programmen ist eigentlich nur ein nettes Add-on ;) In em Fall erwarte ich aber, dass die Theorie anständig gelehrt wird, aber ich will mir gar nicht erst den Lehrplan ansehen um nicht enttäuscht zu werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Struktogramme, Flussdiagramme und Oberon klingt danach als wenn der Lehrer irgendwo vor 10 bis 20 Jahren stehen geblieben ist. :-)

Ich weiss nicht ob es immer noch so ist, aber soweit ich mich erinnern kann ist die Qualität des Informatikunterrichts extrem vom Lehrer abhängig, weil die das oft erst nachträglich als Zusatzqualifikation gelernt haben und wahrscheinlich einige auch mussten ohne es wirklich zu wollen.

An unserer Schule gab's da zwei wie Tag und Nacht. Einer war hauptsächlich Erdkunde- und Geschichtslehrer der in den 80ern aus Interesse mit selbsgebastelten Computern anfing, das alles total spannend fand, immer die neuesten Sachen ausprobiert hat und super Unterricht gemacht hat, und der andere war Mathelehrer, den sie "zwangsweise" zur Uni zur Fortbildung geschickt haben, und der echt grauenhaft war. Hatte keine richtige Lust und ausserhalb des Unterrichtsmaterials was er stur abgearbeitet hat, echt Null Ahnung.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ich haette mit dem Programmieren erst sehr viel spaeter angefangen, wenn es Informatik in der Schule nicht gegeben haette, und ich habe in der Schule auch einiges gelernt.

Klar, Informatik ist eines der Faecher, in dem Schueler mit extrem unterschiedlichem Vorwissen reingehen, und mit klassischem Frontalunterricht ist damit nicht so einfach umzugehen. Gluecklicherweise setzen sich ja so langsam andere Unterrichtsmethoden durch. Wenn man sich ein wenig Muehe gibt, kann man auch die besseren Schueler zwischendurch herausfordern.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Leonidas hat geschrieben:
BlackVivi hat geschrieben:Die Worte "Am Anfang" und "Rekursion" in einem Absatz find' ich schon merkwürdig.
In "The Little Schemer" einem Buch das wie ein Kinderbuch ausschaut ist es in Kapitel 2. Eigentlich lehrt das Buch nur Rekursion.
Ich denke, dass man da ruhig zwischen Prozeduralem und funktionalem Programmieren unterscheiden darf :3

Zum Thema Informatik in'r Schule:
Hab'ne Menge damals gelernt, jedoch habe ich auch ein riesiges Interesse in dieser Materie. Hab damals den Javakurs mit'n anderem Schüler eigentlich alleine gemacht. Wobei man noch dazu sagen muss: Hab damals'ne Privatschule besucht, dort waren einfach die Möglichkeiten viel besser, weniger Schüler, bessere Geräte usw. Mein Informatikunterricht an'r staatlichen Schule war sehr grauenvoll, außer an meiner Grundschule.

(Unglaublich, aber wahr, 1995 hatte meine Grundschule schon einen Informatiker und Informatikuntterricht, wir hatten damals sogar den Umgang mit Dos gelernt. Wohl auch einer der Gründe, warum ich jetzt so interessiert darin bin)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

<ot>
Ich möchte einmal über euer Lehrer-Lästern lästern: Rahmen zu setzen, in denen einen Lösung gefunden werden soll, ist etwas, das euch immer wieder unterkommen wird. Für gleiche Startvoraussetzungen zu sorgen, ist etwas, das man Fairness gerade gegenüber denen nennen kann, die ansonsten in die Kategorie "kriegen es nicht gebacken" fallen würden. Könnt ihr euch nicht vorstellen, dass es für jemanden, der sich das nicht alles bereits angeeignet hat, genauso frustrierend ist, wenn da jemand bereits alles weiß und "unverständliche" Lösungen vorstellt, wie es für euch ist, wenn ihr auf ein Subset der Sprache reduziert und gefühlt um eure Ausdrucksstärke beraubt werdet? Seht es als Herausforderung und zickt nicht herum ;)

Die Wahl von Oberon (gerade mal ein Jahr älter als Python und der Nachfolget von Modula und Pascal, der Lehr(er)sprache schlechthin) könnte dadurch motiviert sein, dass das wohl eine Sprache ist, wo die Vorkenntnisse von allen gleich (eben nicht existent) sind. Ich fände das unter diesem Gesichtspunkt verständlich, würde allerdings persönlich etwas wählen, was funktionale Programmierung besser unterstützt, vielleicht Scheme, vielleicht ML.

Struktogramme und Flußdiagramme sollte man zwar mal gesehen haben, aber eigentlich stammen die aus einer Zeit, wo interaktive Systeme noch unerschwinglich teuer waren. Das klingt wirklich wie ein Flashback in die 80er...

Mein Anspruch (ohne jetzt viel von Pädagogik und Lehrplänen zu verstehen) wäre, dass Schüler ein Grundverständnis dafür entwickeln, wie so ein Computer funktioniert. Turing und von Neumann sind Namen, die ich wichtiger fände zu kennen, als wie man HTML "programmiert" oder welchen Funktionsumfang die Standardbibliothek von Python hat. Programmiersprachen sind (weitestgehend) austauschbar.

Übrigens, wenn der Lehrer den Aufruf von enumerate() nicht billigt, dann schreibt doch die Funktion einfach selbst. Darum geht es doch, zu verstehen, wie es funktioniert, nicht einfach nur wissen, was es alles gibt.

PS: Bis auf "Ziehe 1 von Variable x ab" und "springe, wenn Variable x nicht 0 ist" sind alle anderen Grundoperationen entbehrlich und lassen sich auf diese beiden reduzieren. Euer Lehrer könnte also verlangen, dass ihr damit auskommen sollt - und wenn er gut ist - auch erklären, warum das reicht ;)
</ot>
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

Das hat er so indirekt mal gesagt, dass wir halt mit nem gesetzten Rahmen auskommen sollen.
Zu Rekursion: Das ganze werden wir im 2. Teil des Kurses stärker durchholen, da er vorhat ne Sprache ohne Schleifen zu machen. Vermutlich Oberon =/ aber naja dann sind wir nur noch die hälfte im Kurs ^^ Vllt. gehts dann mal schneller voran
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Na, wenn dir langweilig ist, dann löse die Aufsummier-Aufgabe in Python ohne for, while, yield oder list comprehensions zu benutzen und natürlich ohne irgendwelche Bibliotheksfunktionen und - Bonusaufgabe - indem du einer Variablen maximal einmal etwas zuweist. Betrachte das als Aufnahmeritual in den cult of lambda ;)
Antworten