ein Modul bei Python erstellen ?

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.
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

Hallo,
ich bin neu hier im Forum
wie kann ich ein Modul erstellen um das Volumen eines körper zu berechnen ? :)
ich warte auf eure Antwort
Vielen Dank im Vorraus
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Hallo,

zuerst müsstest du so vorgehen: Wie wird mathematisch das Volumen eines Körpers berechnet? Das findet man ja z.B. bei Wikipedia.

Wenn du das hast, schreibst du einfach eine Python-Funktion in einem beliebigen Texteditor, z.B. so:

Code: Alles auswählen

def berechne_volumen(....):
    return ....
Die Funktion bekommt dann die Parameter, die es zur Berechnung braucht. Im Funktionsbereich wird das dann berechnet ud anschließend zurückgegeben.

Als Modul benutzt du das dann, indem du einfach die Datei als volumen.py speicherst und sie in einer anderen Quellcode-Datei mit „import volumen“ einbindest. Anschließend kannst du „volumen.berechne_volumen(...)“ aufrufen, und du bekommst das Ergebnis :)
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Einfach. Angenommen, dein Körper ist eine Kugel, dann speichere diesen Code unter dem Namen sphere.py ab:

Code: Alles auswählen

from __future__ import division
import math

def volume(radius):
    return 4 / 3 * math.pi * radius ** 3
Damit hast du ein Modul erstellt. Anschließend kannst du dieses Modul importieren und verwenden:

Code: Alles auswählen

import sphere

if __name__ == '__main__':
    print sphere.volume(7)
Das gibt das Volumen einer Kugel mit dem Radius 7 aus.
In specifications, Murphy's Law supersedes Ohm's.
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

Danke für eure Antowrt
ich hab versucht aber ich bekomme diesen Fehler :
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import sphere
File "C:\Python34\sphere.py", line 2
import math
^
IndentationError: unexpected indent

Ps : wie man das Volumen berechnet das weiss ich doch
ich weiss nicht wie mann das bei Python macht
die frage ist wenn ich Das volumen eines Objekt berechnen will , das aus Kugel & Quader besteht
so hab ich geschrieben
from __future__ import division
import math

def volumekugel(radius):
return 4 / 3 * math.pi * radius ** 3
def volumequader(a,b,c)
return a*b*c
und dann speicherte ich unter dem Namen MeineFormel.py
aber geht nicht
ich brauche eure Hilfe :/
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Im ersten Fall hast Du ein Leerzeichen vor dem "import" stehen. Im zweiten Fall verrätst Du ja nicht, was nicht geht ;-)
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

Danke für deine Antwort Sirius3
im zweiten fall kommt SyntaxError: invalid syntax raus !!
und die Markieren den Name des Modul
also wo ist der fehler ? :)
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

oh ja, da fehlt ein Doppelpunkt bei "volumequader".
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

Dankee für deine Hilfe
Hab ich korrigiert :/ aber das selbe Problem
schau dir diese Fotos
Bild
Bild
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Du benutzt Python 3!
Und nochwas, lies mal ein Tutorial da hast mehr von den Tipps die man dir hier gibt.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

darktrym
welche Version soll ich denn benutzen um das Problem zu lösen ? !
Danke für deine Antwort :)
BlackJack

@Th3shadow: Du kannst entweder die Python-Version wechseln, bei Python 2.x war ``print`` noch eine Anweisung und keine Funktion, oder Du schreibst halt Code der unter Python 3.4 läuft. In der Python-Dokumentation gibt es ein Tutorial. Arbeite das doch mal durch.

Für absolute Anfänger wird auch oft Learn Python The Hard Way empfohlen. Nicht vom Namen abschrecken lassen. ;-)
Th3shadow
User
Beiträge: 9
Registriert: Freitag 4. April 2014, 15:59

BlackJack
Danke für Ihre Antwort
ich hab die Python-Version zu 2.7.6 gewechselt , und endlich hat es geklappt
Danke an alle <3 <3
so macht Python spaß haha
Dankee nochmal :)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Th3shadow hat geschrieben:ich hab die Python-Version zu 2.7.6 gewechselt , und endlich hat es geklappt
Das war dann also die aufwändige Methode. print mit Klammern zu verwenden wäre ja deutlich schneller gegangen.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Th3shadow hat geschrieben: Ps : wie man das Volumen berechnet das weiss ich doch
ich weiss nicht wie mann das bei Python macht
Jo, das war mir schon bewusst :D Die Vorgehensweise ist bei jeder Programmiersprache ja gleich:

1. Du schreibst eine Funktion, die die Parameter, die du zur Berechnung brauchst, entgegennimmt.
2. Du führst die notwendige Berechnung in der Funktion durch.
3. Du gibst den berechneten Wert wieder zurück.

Da du ja nicht genau geschrieben hast, was für einen Körper du berechnen willst, war eine spezielle Antwort halt schwierig. Außerdem hielt ich Hilfe zur Selbsthilfe sinnvoller :D

Für deine Frage ist es sinnvoller, sich ein Programmierbuch zuzulegen. Wenn du dich noch nicht mit Funktionen auskennst, die ja praktisch neben Variablen fast das Fundamentalste jeder Programmiersprache sind, dann hast du mit der Weiterverarbeitung auch ein Problem.
/me hat geschrieben:
Th3shadow hat geschrieben:ich hab die Python-Version zu 2.7.6 gewechselt , und endlich hat es geklappt
Das war dann also die aufwändige Methode. print mit Klammern zu verwenden wäre ja deutlich schneller gegangen.
Wer aber nicht weiß, wie man Funktionen nutzt, weiß auch nicht, dass der einer der Unterschiede von Python2→Python3 in der print-Funktion liegt.

Ehrlich gesagt finde ich es hier unvorteilhaft, wenn jemand fertige Codeschnipsel ausgibt, die dann aber auf Python 2 enthalten. Das kann doch nur verwirren. Ich schildere mal den Gedankengang eines Anfängers (Natürlich unter Windows, denn die wenigsten Leute benutzen Linux):

„Hm, ich möchte mir Python installieren! Google: Python eintippen, ah ich komme auf python.org. Download anklicken, hm, dort gibt es Python 3.4.0 und Python 2.7.6. Was soll ich denn da jetzt nehmen? Natürlich nehme ich die aktuelle Version, wieso auch nicht?“ Und dann führt er hier einen Code aus und es läuft nicht.

So läuft es ab und nicht anders. Wie man hier im Forum sieht, hat doch praktisch jeder, der Windows nutzt, Python 3. Und wieso auch nicht, das ist ja die aktuelle Version. Dann wird ihm hier im Forum (was wirklich sehr freundlich ist!) mit Codeschnipseln geholfen, die allerdings dann wie selbstverständlich auf Python 2 basieren, ohne ein Wort der Anmerkung. Das ist meiner Meinung nach einfach etwas realitätsfremd. Die Realität ist, dass Anfänger unter Windows Python 3 benutzen und nicht 2.

Lösungen meiner Meinung nach, die die erfahrenen Nutzer hier befolgen könnten:

- Python 3 benutzen: Das benutzen Anfänger heutzutage, ob man damit einverstanden ist oder nicht. Jedes aktuelle Buch zu Python basiert auf Python 3.
- Bei jedem Codebeispiel davorschreiben, ob der Code Python 2 oder Python 3 nutzt. Bei Linux ist ja leider das Problem, dass „python“ auf Python 2 zeigt, was dann insbesondere bei Raspberry-Pi-Nutzern dazu führt, dass sie doch noch Python 2 nutzen.

Ich finde es ja gut, wenn hier Anfängern geholfen wird (ich bin ja selber auch noch einer), aber meiner Meinung nach würden die obigen beiden Tipps sehr helfen, Verwirrung zu beseitigen.
BlackJack

@Hellstorm: Das würde letztendlich dazu führen das ich keinen Anfängern mehr helfen würde. (Es gibt sicher Leute die das für einen Pluspunkt halten. ;-))

Ich schreibe halt Python 2.7 weil ich das auf jedem Rechner zuhause und in der Firma installiert habe und meine ganze „Entwicklungsumgebung” darauf eingestellt ist. Python 3 ist nicht auf jedem Rechner und eine 3.4 ist bis jetzt auf keinem.

Vielleicht sollte ich das in meine Signatur schreiben…
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

BlackJack hat geschrieben:Vielleicht sollte ich das in meine Signatur schreiben…
Wobei ich Deinen momentanen Hinweis auf die CoffeeScript Doku solipsism = true if mind? and not world? echt Klasse finde... :mrgreen:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

BlackJack hat geschrieben:@Hellstorm: Das würde letztendlich dazu führen das ich keinen Anfängern mehr helfen würde. (Es gibt sicher Leute die das für einen Pluspunkt halten. ;-))

Ich schreibe halt Python 2.7 weil ich das auf jedem Rechner zuhause und in der Firma installiert habe und meine ganze „Entwicklungsumgebung” darauf eingestellt ist. Python 3 ist nicht auf jedem Rechner und eine 3.4 ist bis jetzt auf keinem.

Vielleicht sollte ich das in meine Signatur schreiben…
Naja, gut, aber ich finde eine kleine Anmerkung à la „Den Code musst du mit Python 2 ausführen“ (direkt vor/nach dem Code) ist doch noch möglich ;)

Nur eine Anmerkung von mir, hier gibt es doch oft Leute, die da verunsichert sind.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Hellstorm hat geschrieben:Ehrlich gesagt finde ich es hier unvorteilhaft, wenn jemand fertige Codeschnipsel ausgibt, die dann aber auf Python 2 enthalten. Das kann doch nur verwirren.
Und woher soll der geneigte „nicht-Anfänger“ wie valides Python3 aussieht? Das Problem ist bei mir zumindest, dass ich schlicht und ergreifend ständig vergesse dass Python 3 existiert. Python 3 vs. Python 2 ist wie D vs C++. Ein bisschen besser aber nicht genug dass man wechselt…
So läuft es ab und nicht anders. Wie man hier im Forum sieht, hat doch praktisch jeder, der Windows nutzt, Python 3.
Sämtliche Python-Distributionen für Windows (z.B. canopy, pythonxy) benutzen 2.7.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich poste einfach Code, der unter beiden Versionen lauffähig ist. Insbesondere ist im Falle von Bildschirmausgaben ein ``from __future__ import print_function`` recht nützlich, um einer der häufigsten Problemquellen aus dem Weg zu gehen... :)
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Mein Problem ist, dass ich dann denke es handle sich um eine Version die dann auf beiden läuft.
Leider gibts da noch andere Details die man gern übersieht.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten