Seite 1 von 1

Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 14:27
von Luap12
Hi!

Ich möchte unter Python 2.6 einen Zufallsgenerator machen und diesen in ein Programm einbauen. Unter 3.0 funzt der folgende Code einwandfrei, aber was ist bitte zu 2.6 der Unterschied (bin eig 3.0 Programmieren)!?

Code: Alles auswählen

import random  #Habe auch schon from random import random versucht

random.seed()
a = random.randint(0.0,1.0)
b = random.randint(0.0,1.0)
c = random.randint(0.0,1.0)


Die Variablen werden nicht andersweitig genuzt.

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 14:40
von Xynon1
Hast du doch, nur "randint" liefert halt nur integer, also entweder 0 oder 1 in deinem Fall.
Zudem ist "seed" Blödsinn, genauso wie das du bei "randint" floats übergibst.

Edit: Wenn ich einfach mal raten soll nehme ich an du suchst "random.random()" - dies würde dir eine float Zahl zwischen 0.0 und 1.0 geben

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 14:47
von Luap12
ok, danke, aber warum ist denn seed() sinnfrei?? man muss doch den Zufallsgenerator initialisieren, sonst kann es passieren das er immer diesselbe Zahl liefert!? (Brauche ihn mehrmals im prog)

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 14:51
von Xynon1
Ich glaube davon kann BlackJack mittlerweile ein Lied singen, sie mal in der Forensuche unter random.seed() nach :mrgreen:

Die Erklärung ist eigentlich schlicht, weil du als default-Parameter dort immer None übergibst und damit den Generator immer wieder mit dem selben Wert initialisiert.
Die Initialisierung erfolgt schon beim import.

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 15:15
von Luap12

Code: Alles auswählen

a = random.random()
Trptzdem erscheint diese Fehlermeldung:
AttributeError: 'builtin_function_or_method' object has no attribute 'random'

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 15:17
von Xynon1
Dann hast du nicht "import random", sondern "from random import random" gemacht.
Zumindest ist random, bei dir kein Modul sondern eine Funktion

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 15:29
von Luap12
doch, ich habe import random gemacht. habe jetzt aber auch einen anderen weg gufunden:

Code: Alles auswählen

set_color(random(),random(),random())
statt wie ich es wollte:

Code: Alles auswählen


a = random.random()
...


set_color(a,b,c)

Aber trotzdem danke für die Hinweise!

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 15:34
von Xynon1
Ich wiederhole mich nochmal random ist bei dir kein Modul, aber ich wüsste nicht warum nur bei dir "import random" eine Funktion liefern sollte.

Du hast die Funktion "random()" aus dem Modul "random" importiert, das geht aber auch.

Edit: Eventuell importierst du beides zB

Code: Alles auswählen

import random
from random import *
Oder so was in der Art, dann würde "random" also Modul überschrieben werden.

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 18:02
von Luap12
Da du in Python 2.6 bzw. in Python allgemein gut zu sein scheinst, wie kann man man 2 bzw. mehere Zeichenketten verküpfen??

Ich dachte da an folgendes, kenne es so aus Python 3^^:

Code: Alles auswählen


...

label1 = MTLabel(label=gesamtausgabe, pos=(200, 200), autosize=True, padding=10)

masseinheit = "Zentimeter"
a = 5

gesamtausgabe = a + " " + masseinheit


self.label1.label = str(gesamtausgabe)

...

habe es auch schon versucht die beiden Strings mit and zuverknüpfen, funzt auch net^^

Re: Zufallsgenerator mit Python 2.6

Verfasst: Mittwoch 22. Dezember 2010, 18:21
von cofi

Code: Alles auswählen

%> python2.6
Python 2.6.6 (r266:84292, Dec 12 2010, 15:15:09) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 5 + " meter"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> 
%> python3  
Python 3.1.3 (r313:86834, Nov 28 2010, 10:01:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 5 + " meter"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Da musst du aber ein besonders Python3 kennen.
Das Zauberwort heisst Stringformatierung.

P.S. Fehlermeldung sind hilfreich.
Und da das die Grundlagen sind wäre es ratsam, wenn du das Tutorial durcharbeiten würdest.

Re: Zufallsgenerator mit Python 2.6

Verfasst: Donnerstag 23. Dezember 2010, 12:01
von Xynon1
cofi hat geschrieben:Da musst du aber ein besonders Python3 kennen.
Das glaube ich langsam auch, bisher habe ich nicht einen Fehler auf Grund eines Versions unterschied gesehen.

Und wie cofi bereits im geposteten Traceback stehen hat, kommt der Fehler nur daher, das du eine Integer-Variable mit einem String addieren willst.
Du müsstest die Integer-Variable vorher in einen String umwandeln, es ist aber bei weitem besser die von cofi vorgeschlagene Stringformation zu nutzen.