Info-hausi

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.
Erbseneintopf
User
Beiträge: 1
Registriert: Freitag 11. April 2008, 14:23

Freitag 11. April 2008, 20:15

Hallo Anwesende ;)

Ich habe eine Hausaufgabe in Info aufbekommen und habe keine Ahnung wie ich an die Materie rangehen soll.


Erarbeiten Sie eine Funktion, welche die Zahlen 1 bis 50 addiert.

a) Löse das Problem mit einer Bedingungsschleife.
b) B) Löse das Problem mit einer Zählschleife.

Wer echt nett, wenn ihr mir ein paar Tipps geben könntet.
Danke
Liebe Grüße
Jule :roll:
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Freitag 11. April 2008, 20:22

Hallo und willkommen im Forum!

Vielleicht solltst du dir erst einmal dies hier durchlesen. Für dich wird sicherlich niemand die Hausaufgaben programmieren. Zeig doch mal, was du bereits an Code zur Lösung deines Problems geschrieben hast. Dann kannst du immer noch konkrete Fragen stellen.

Dann kann ich dir natürlich noch das offizielle Python-Tutorial empfehlen. Nach den ersten Abschnitten solltest du dein Problem eigentlich selbst lösen können.

Vielleicht noch kurz zu den Begriffe:
Bedingungsschleife -> while
Zählschleife -> for

Sebastian
BlackJack

Freitag 11. April 2008, 20:47

Und so würde man es dann wirklich in Python schreiben. :-)

Code: Alles auswählen

In [62]: sum(xrange(1, 51))
Out[62]: 1275
Oder man benutzt gleich die geschlossene Formel:

Code: Alles auswählen

In [65]: 50 * 51 // 2
Out[65]: 1275
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 11. April 2008, 20:49

Hallo Erbseneintopf, willkommen im Forum,
Erbseneintopf hat geschrieben:a) Löse das Problem mit einer Bedingungsschleife.
b) B) Löse das Problem mit einer Zählschleife.
c) Löse das Problem auf eine sinnvolle Weise.

Code: Alles auswählen

In [1]: sum(xrange(51))
Out[1]: 1275
d) Löse das Problem auf funktionale Weise.

Code: Alles auswählen

In [6]: import operator
In [7]: reduce(operator.add, xrange(51))
Out[7]: 1275
Hilft dir jetzt nicht direkt, aber ich fand es lustig, da sinnvolle Aufgaben zu stellen. Wir helfen dir auch gerne, aber andererseits verlangen wir auch etwas Eigenbeteiligung deinerseits. Wie sieht denn dein Quelltext für a) und b) aus?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Freitag 11. April 2008, 20:56

Da habt ihr doch die rekursive Lösung vergessen!

Code: Alles auswählen

def mysum(x):
    if x<1:
        return 0
    elif x==1:
        return 1
    else:
        return x + mysum(x-1)
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Freitag 11. April 2008, 21:11

Auf eure Antworten wird es nur keine gute Note geben, man man nicht genau erklären kann warum man nur eine Zeile geschrieben hat ;-)

Gewünscht ist hier sicher ein 4 Zeilen Programm.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 11. April 2008, 22:08

EyDu hat geschrieben:Da habt ihr doch die rekursive Lösung vergessen!
Diese ist aber für negative Zahlen broken *nitpick* ;) Ansonsten qualifiziert sie sich, weil sie über der vier-Zeilen Hürde ist :D
Zuletzt geändert von Leonidas am Samstag 12. April 2008, 11:08, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Samstag 12. April 2008, 11:03

Mit temporären Objektnamen ("Variablen" *hust*) kriegt man die anderen Lösungen auch auf vier und mehr Zeilen ;)
lunar

Samstag 12. April 2008, 11:27

Y0Gi hat geschrieben:Mit temporären Objektnamen ("Variablen" *hust*) kriegt man die anderen Lösungen auch auf vier und mehr Zeilen ;)
Für Fortgeschrittene: Caching-Backend auf SQLite zur Performance-Steigerung bei wiederholter Berechnung der gleichen Zahl ;)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 12. April 2008, 11:32

lunar hat geschrieben:Caching-Backend auf SQLite zur Performance-Steigerung bei wiederholter Berechnung der gleichen Zahl ;)
Ich vermute mal, dass bei kleinen Zahlen der Performancegewinn eher negativ ist :D Für Enterprise-Additions-Cluster sicher dennoch eine tolle Sache.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Samstag 12. April 2008, 11:48

ich als anfänger würd das ja so machen

Code: Alles auswählen

dann eben nich
Zuletzt geändert von Tayce am Samstag 12. April 2008, 12:12, insgesamt 1-mal geändert.
Jabber: tayce@jaim.at
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 12. April 2008, 11:54

Tayce hat geschrieben:ich als anfänger würd das ja so machen
Naja, damit hast du jemandes Hausaufgabe gelöst und zu keinerlei Lerneffekt geführt. Es hatte schon einen Grund, warum niemand bisher eine Lösung gepostet hat, die man hätte übernehmen können.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Samstag 12. April 2008, 11:58

Da du die von range erzeugte Liste nicht benötigst, wäre xrange besser für den Speicher ;) Ansonsten hat Leonidas natürlich recht...
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Samstag 12. April 2008, 12:12

joa, hab den code gelöscht..
Jabber: tayce@jaim.at
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 12. April 2008, 12:18

lunar hat geschrieben:Da du die von range erzeugte Liste nicht benötigst, wäre xrange besser für den Speicher ;)
Und um 1 zu eddieren ist ``+= 1`` wohl besser. Gut, das sind jetzt Feinheiten.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten