ein paar Anfängerfragen zu Python

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.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Code: Alles auswählen

from operator import mul
from functools import partial
double = partial(mul,2)
map(double, (1,2,3))
suchst du sowas wie break oder raise?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
BlackJack

@Hero2: Ein Beispiel für `map()` findest Du in den Folien zur ersten Vorlesung auf Seite 42. :-)

Neben ``break`` und ``raise`` kann ``return`` auch manchmal nützlich sein um Schleifen zu verlassen.
lunar

@Goswin: Bei lokalen Anwendungen ist das keine Sicherheitslücke. Trotzdem würde ich einen eigenen Parser speziell für arithmetische Ausdrücke implementieren. Python parst mehr als arithmetische Ausdrücke, was für Benutzer verwirrend sein kann, und Python erzeugt nicht immer Fehlermeldungen, die für einen Endbenutzer, der nicht Programmierer ist, akzeptabel sind.
Hero2
User
Beiträge: 19
Registriert: Freitag 16. April 2010, 20:13

Danke nochmal für die schnellen anweisungen .... hab sowas wie break gesucht ...
Geht nun ;)
Danke, wenn ich nochmal fragen habe poste ich immer gerne hier ;) Echt tolles und schnelles Forum.
Hero2
User
Beiträge: 19
Registriert: Freitag 16. April 2010, 20:13

Hallo

ich bins's mal wieder und hab mal wieder ne neue frage :

Ich kann nun ganz gut in phyton programieren, dass was ich aber irgendwie noch gar nicht verstehe ist die Return funktion.

was ist mein Problem : Ich schreib meine Programme immer total verschachtelt. Lösung : Hoffentlich durch euch besseres verständnis der Return funktion.

Unten also mein beispielcode ist nun mal ganz Simpel

Es wird zwar schau aufgerufen, schau wirft mir aber nicht n zurück, obwohl n sogar global ist. Was mache ich falsch ?
Wenn ihr ein besseres, kürzeres beispiel habt für die return funktion, so könnt ihr auch diese nehmen.

MFG

[quote]

Code: Alles auswählen

from random import randrange

def Schau(a,n):   # Bekommt ein Zähler und eine Liste
    x = randrange(10)  # Erzeugt aus 10 zahlen 1 zufällige
    if (x in a):               
        return (n)            # gibt den Zähler zurück
    else:
        a.append(x)        # zähler wird erhöt, x wird an die liste gepackt 
        n = n + 1            # und rekusiv neu aufgerufen
        Schau(a,n)

def start():
    global n
    n = 0
    Schau([],n)
    print (n)

start ()
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Wenn du wirklich gut programmieren könntest, wüsstest du, dass ``return`` keine Funktion ist. :twisted:
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

schau dir map PEP-8 an

Warum machst du eigentlich kein neuen Thread auf?

Code: Alles auswählen

def is_negative(n):
    return n < 0

Achja, global funktioniert anders.
Zuletzt geändert von jbs am Montag 3. Mai 2010, 17:16, insgesamt 1-mal geändert.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Hero2
User
Beiträge: 19
Registriert: Freitag 16. April 2010, 20:13

........."""danke""" für die hilfreiche antwort ....... ne im ernst ... gut ist relativ !

ps.: Hatte keine lust deswegen nen neuen aufzumachen ...

@ jbs ich weiß zwar nicht, was der unterschied ist .... ich raff es einfach nicht ... warum da die return anweisung geht und bei mir nicht ...
BlackJack

@Hero2: ``return`` "wirft" nichts. Das ist eher der Sprachgebrauch bei Ausnahmen.

Du gibst zwar etwas zurück, aber Du machst damit nichts. Die Namen in einer Funktion sind lokal zu der Funktion. Das `n` in `Schau()` hat nichts mit dem `n` in `start()` zu tun und ``global`` solltest Du ganz schnell vergessen. Das Namen in verschiedenen Funktionen nichts miteinander zu tun haben, sollte doch von Haskell im letzten Semester bekannt sein!? Das ist bei Python's Funktionen auch so. Du musst den Rückgabewert schon an der Stelle wo Du die Funktion aufrufst auch irgendwie verwenden. Zum Beispiel direkt ausgeben oder an einen Namen binden.

Du verwendest in dem Quelltext doch auch andere Funktionen aus der Standardbibliothek die einen Wert zurückgeben, mit dem Du dann etwas machst. Das funktioniert mit selbstgeschriebenen Funktionen genau so.

Falls das mit der Geburtstags-Aufgabe zu tun hat: Das solltest Du weder rekursiv, noch mit anhängen und testen auf "enthaltensein" in einer Liste lösen. Das dauert auch wenn man es effizienter löst schon lange genug -- so *deutlich* länger. Python ist eine imperative Sprache und in ALP2 geht's ja auch jetzt am Anfang um prozedurale, imperative Programmierung.
Hero2
User
Beiträge: 19
Registriert: Freitag 16. April 2010, 20:13

geht nur indirekt um das geburtstagsteil ..... das hab ich schon auf nen anderen weg (nicht rekusiv gelöst). Ich hab aber hier einfach das Problem mit dem Verständnis, wie ich einen errechneten wert zurückgebe, der sozusagen in einer funktion berechnet wird und dann in einer anderen weitergegeben wird. Das ist sozusagen mehr allgemein zu verstehen. Deswegen hab ich auch nur 1-10 und co. gewählt. Ich sehe irgendwie noch nicht, wie die return arbeitet und solange muss ich leider immer alles über Global machen.

MFG

Hero2
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Vielleicht hilft das:

Code: Alles auswählen

In [2]: from random import random

In [3]: def test():
   ...:     number = random()
   ...:     print 'The number is %.2f.' % number
   ...:     return number
   ...: 

In [6]: result = test()
The number is 0.02.

In [7]: print result
0.024380243472
Antworten