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
Info-hausi
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
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
Und so würde man es dann wirklich in Python schreiben.
Oder man benutzt gleich die geschlossene Formel:
Code: Alles auswählen
In [62]: sum(xrange(1, 51))
Out[62]: 1275
Code: Alles auswählen
In [65]: 50 * 51 // 2
Out[65]: 1275
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hallo Erbseneintopf, willkommen im Forum,
d) Löse das Problem auf funktionale Weise.
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?
c) Löse das Problem auf eine sinnvolle Weise.Erbseneintopf hat geschrieben:a) Löse das Problem mit einer Bedingungsschleife.
b) B) Löse das Problem mit einer Zählschleife.
Code: Alles auswählen
In [1]: sum(xrange(51))
Out[1]: 1275
Code: Alles auswählen
In [6]: import operator
In [7]: reduce(operator.add, xrange(51))
Out[7]: 1275
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Diese ist aber für negative Zahlen broken *nitpick* Ansonsten qualifiziert sie sich, weil sie über der vier-Zeilen Hürde istEyDu hat geschrieben:Da habt ihr doch die rekursive Lösung vergessen!
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 (former) Modvoice
Für Fortgeschrittene: Caching-Backend auf SQLite zur Performance-Steigerung bei wiederholter Berechnung der gleichen ZahlY0Gi hat geschrieben:Mit temporären Objektnamen ("Variablen" *hust*) kriegt man die anderen Lösungen auch auf vier und mehr Zeilen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich vermute mal, dass bei kleinen Zahlen der Performancegewinn eher negativ ist Für Enterprise-Additions-Cluster sicher dennoch eine tolle Sache.lunar hat geschrieben:Caching-Backend auf SQLite zur Performance-Steigerung bei wiederholter Berechnung der gleichen Zahl
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.Tayce hat geschrieben:ich als anfänger würd das ja so machen
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Da du die von range erzeugte Liste nicht benötigst, wäre xrange besser für den Speicher Ansonsten hat Leonidas natürlich recht...
joa, hab den code gelöscht..
Jabber: tayce@jaim.at
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Und um 1 zu eddieren ist ``+= 1`` wohl besser. Gut, das sind jetzt Feinheiten.lunar hat geschrieben:Da du die von range erzeugte Liste nicht benötigst, wäre xrange besser für den Speicher
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erbseneintopf hat geschrieben: Erarbeiten Sie eine Funktion, welche die Zahlen 1 bis 50 addiert.
a) Löse das Problem mit einer Bedingungsschleife.
Code: Alles auswählen
result = 1275
n = 0
while n != result:
n += 1
print n
b) B) Löse das Problem mit einer Zählschleife.
Code: Alles auswählen
result = 1275
n = 0
for i in xrange(result):
n += 1
print n
War da eigentlich schon ein (wieder entfernter) Hinweis auf den kleinen Euler? Man sollte als Lehrer eigentlich schon verlangen nach
e) ein Algorithmus in O(1)
Edit: Hinweis kam von BlackJack, hatte ich überlesen. Wenn ich der Lehrer wäre, würde ich die verschiedenen Varianten auf Laufzeitunterschiede untersuchen lassen. Was lernt man denn sonst dabei?
e) ein Algorithmus in O(1)
Edit: Hinweis kam von BlackJack, hatte ich überlesen. Wenn ich der Lehrer wäre, würde ich die verschiedenen Varianten auf Laufzeitunterschiede untersuchen lassen. Was lernt man denn sonst dabei?
Vielleicht lernen sie gerade erst die Sprache und das Laufzeitverhalten wird dann erst in der Stunde besprochen. So war es zumindest bei mir früher im Informatikunterricht.
Die Lösung in O(1) hat BlackJack doch im Prinzip schon genannt. Zumindest, wenn man so gütig ist und davon ausgeht, dass man zwei Zahlen in O(1) multiplizieren und dividieren kann...
Die Lösung in O(1) hat BlackJack doch im Prinzip schon genannt. Zumindest, wenn man so gütig ist und davon ausgeht, dass man zwei Zahlen in O(1) multiplizieren und dividieren kann...
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
O(1) bedeutet nicht wie lange etwas geht, sondern nur dass etwas bei wachsendem N die berechnung Konstant bleibt. Also egal ob 50 oder 1000000 gewählt wird, es bleibt gleich.EyDu hat geschrieben:Die Lösung in O(1) hat BlackJack doch im Prinzip schon genannt. Zumindest, wenn man so gütig ist und davon ausgeht, dass man zwei Zahlen in O(1) multiplizieren und dividieren kann...
Da muss man nicht gütig sein
Gruss
Mir ist vollkommen klar, was O(1) bedeutet! Da Python jedoch beliebig lange Integer zulässt, kommt es sehr wohl auf den Wert der zu multiplizierenden Zahlen n und m an, da deren Darstellungslängen in O(log n), bzw. in O(log m) liegen.