Seite 2 von 2

Verfasst: Mittwoch 8. März 2006, 18:46
von modelnine
Genau.

Code: Alles auswählen

from random import *
bedeutet dass Du alle Namen aus dem Namespace random (was ein Modul ist) in den lokalen Namespace importierst, ohne Rücksicht auf Verluste, unter anderem auch den Namen random, der eine Funktion ist. Das bedeutet dass der Name random in Deinem Skript nicht auf ein Modul zeigt, sondern auf eine Funktion gleichen Namens aus dem Modul random, und die Fehlermeldung bedeutet schlicht und ergreifend dass die Methode nun mal kein Attribut mit Namen shuffle hat.

Der Name random.shuffle (Modul random -> Name shuffle) ist danach einfach als shuffle zu erreichen, sprich Du brauchst nicht mehr random.shuffle zu schreiben, sondern schreibst einfach shuffle.

from <blah> import *

ist aus diesen Gründen in den allermeisten Fällen extrem unangebracht, weil die Übersicht flöten geht.

Probier also entweder random.shuffle durch shuffle(<blah>) zu ersetzen, oder mach anstelle von from random import * ein

Code: Alles auswählen

import random
was nur das Modul importiert, und dann kannst Du auch auf die Methode shuffle des Moduls random mittels random.shuffle zugreifen.

Verfasst: Mittwoch 8. März 2006, 18:53
von oscar15
ah, danke!!

aber jetzt kommt direk die Nächste, was auch sonst!!

Wie kann ich, wenn ich eine Liste habe (z.B.

Code: Alles auswählen

Liste["a","b"]
die Funktionen a und b printen??

Code: Alles auswählen

def a()
hallo = 1
ciao = 2

def b()
hallo = 1
ciao = 2

Verfasst: Mittwoch 8. März 2006, 19:06
von modelnine
Ui. Erklär lieber erst mal was Du machen willst, dann kann man Dir eher helfen. Wie's ausschaut willst Du Dinge tun die ganz und gar nicht Pythonisch sind, bzw. kennst einfach die Datentypen die Python zur Verfügung stellt noch nicht ausreichend (nested-lists, etc.)...

Verfasst: Mittwoch 8. März 2006, 19:13
von oscar15
Also.....

Ich will einfach

Code: Alles auswählen

print Liste
machen und dann die in der Liste vorhandenden Glieder

Code: Alles auswählen

Liste[a,b]
geprintet werden, aber halt mit den Funktionen

Code: Alles auswählen

def a():
hi = 1
ciao = 2

def b():
ho = 2
cya = 1
geprintet wird, also: (in etwa so...)

Code: Alles auswählen

hi = 1
ciao = 2
ho = 2
cya = 1

Verfasst: Mittwoch 8. März 2006, 19:18
von modelnine
Wie bereits vorher schon gesagt: Die Variablen die Du in einer Funktion definierst sind außerhalb dieser Funktion nicht sichtbar, und vor allen Dingen sind Funktionsvariablen auch keine Elemente einer Liste...

Du willst wahrscheinlich einen Hash von Hashes:

Code: Alles auswählen

x = {"a":{"hi":1,"ciao":2},"b":{"ho":2,"cya":1}}
print x
print x["a"]
print x["b"]
print x["a"]["hi"]
...
Wenn das Dir nicht hilft, kann ich nur ein gutes Buch zu Python und besonders zu Datentypen empfehlen, weil man sowas nicht über ein Forum vermitteln kann (zumindest aus meiner Sicht)...

Verfasst: Mittwoch 8. März 2006, 19:31
von jens
Da verweise ich gleich mal auf's Wiki: http://wiki.python.de/Tutorial#Tutorial Bitte mal die Seiten unter "Datenverarbeitung" duchschauen!

Verfasst: Mittwoch 8. März 2006, 19:43
von oscar15
hätte da noch nen problem!! (übrigens die seite ist gut, aber ein Mensch ist besser!!)

Code: Alles auswählen

p1 = raw_input("Name bitte: ")
pos = Liste2.index(p1)
Liste.extend(p1) 
del Liste2[pos]
Nur leder wird dann jeder Buchstabe, des Wortes, als eigenes Glied in die Liste eingefügt.

Bsp.: ['W', 'a', 'l', 'd'][/b]

Verfasst: Mittwoch 8. März 2006, 19:55
von modelnine
.append fügt ein Element hinzu, .extend fügt Elemente eines Iterators (ein String ist ein Iterator über seine Buchstaben) einzeln hinzu.

Sprich, Du willst .append, und nicht .extend.

Verfasst: Mittwoch 8. März 2006, 21:01
von Drizzt
*mal dazwischenspring*

Finde es im übrigen lobenswert, wie trotz "Anfängerfragen" geduldig und ohne "dummes" Kommentar geantwortet wird, (bin selbst erst seit heute hier registriert) wie es in vielen anderen foren oftmals zu lesen ist.
Auch wenn heute Python nicht nutzen konnte für meine Zwecke ;-)

Gruß
Alex

Verfasst: Mittwoch 8. März 2006, 23:49
von Kompottkin
Finde es im übrigen lobenswert, wie trotz "Anfängerfragen" geduldig und ohne "dummes" Kommentar geantwortet wird, (bin selbst erst seit heute hier registriert) wie es in vielen anderen foren oftmals zu lesen ist.
Ich vermute, daß das daher rührt, daß dieses Forum verglichen mit gewissen anderen eher spärlich besucht ist. Gäbe es mehr interessante Fragen, hätten die Mitglieder hier vermutlich weniger Zeit für lanweilige.

Viele Foren sind eben überlaufen. Wenn die Mitglieder dieser sich um eher langweilige Fragen, die jeder eigentlich auch durch ein wenig Eigenleistung selbst beantworten könnte, nicht kümmern, sondern sie im Gegenteil als lästig betrachten, ist das meines Erachtens nur allzu verständlich.