Seite 1 von 1

mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 20:36
von StefanLawl
Hey, ich hab ne peinliche Frage, bin aber neu mit Python, falls es das entschuldigt. :oops:

Ich konnte über Google einfach nicht herausfinden, wie man mehrere Variablen gleichzeitig einen Wert zuweist, z.B. sollen 'a', 'b' und 'c' den Wert '7' haben.

Bisher weiß ich nur, dass es so ginge:

Code: Alles auswählen

a, b, c = 7, 7, 7
Geht das nicht einfacher? :K

Stefan :mrgreen:

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 20:46
von darktrym
a = b = c = 7

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 20:49
von StefanLawl
darktrym hat geschrieben:a = b = c = 7
Danke! Aber mit random.randint() funktioniert das leider nicht mehr, wenn jeder Wert einen anderen haben soll. Gibt da eine andere Möglichkeit? :)

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:33
von anogayales
So vielleicht?

Code: Alles auswählen

a, b, c = random.randint(1,10) , random.randint(1,10) , random.randint(1,10) 
:P

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:35
von darktrym
Dann brauchst vielleicht eine andere Datenstruktur, bspw. Liste oder Dictionary.

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:36
von StefanLawl
anogayales hat geschrieben:So vielleicht?

Code: Alles auswählen

a, b, c = random.randint() , random.randint() , random.randint() 
:P
Genau das wollte ich ja verhindern, dass man random.randint() mehrmals schreiben muss :/ Kann man randint mit einem array verbinden? Das würde auch genügen :)

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:38
von anogayales
Wenn dir das zu viel ist, kannst du dir auch einen random generator schreiben.

Code: Alles auswählen

def random_generator(number):
    return (random.randint(1,10) for _ in xrange(number))

a,b,c = random_generator(3)
Im Generellen schreit das aber förmlich nach einer eigenen Datenstruktur!

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:42
von StefanLawl
Wow danke :)
anogayales hat geschrieben:Im Generellen schreit das aber förmlich nach einer eigenen Datenstruktur!
Wie meinen? :D

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:48
von anogayales
Anstatt jedem zufälligem Wert ein Variablennamen zuzuweisen, packt man einfach alle in eine Liste.

Sowas zum Beispiel:

Code: Alles auswählen

random_numbers = [random.randint(1,10) for _ in xrange(200)]
So kriegst du eine Liste mit 200 zufälligen Werten. Den Zugriff regelt man dann eben mit random_numbers[0], usw. So muss du dir keine gedanken über Variablennamen machen. Und random_numbers[2] sagt mir jetzt spontan mehr als zum Beispiel c.

Wie immer kommt es natürlich drauf an welches konkretes Problem du lösen willst.

Grüße,
anogayales

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 21:59
von StefanLawl
Danke für die Erklärung :D

Ich hatte aus Langeweile vor, ein Turbo-Pascal Programm aus der Schule (Informatik Unterricht -> Turbo Pascal als Programmiersprache) in Python zu schreiben.

Edit: Ich erhalte übrigens einen komischen Fehler.

Code: Alles auswählen

import random

num = [random.randint(1,10) for _ in xrange(200)]

print num[0]
Ausgabe:

Code: Alles auswählen

7
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Benutze Spyder und Python 2.7

Edit 2: Habe etwas mit den Zahlen in der Zeile

Code: Alles auswählen

num = [random.randint(1,10) for _ in xrange(200)]
rumgespielt, und bemerkt, dass nicht xrange(200) die Höhe der Zahl bestimmt, sondern wie gewohnt randint(1, 10). Jetzt bleibt die Frage für mich, wofür xrange ist?

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 22:15
von /me
StefanLawl hat geschrieben:Jetzt bleibt die Frage für mich, wofür xrange ist?
Oh, du hast die Dokumentation von Python noch nicht gefunden? Schau hier: xrange.

Du kannst natürlich auch einfach direkt die Hilfe verwenden:

Code: Alles auswählen

>>> help(xrange)
Help on class xrange in module __builtin__:

class xrange(object)
 |  xrange([start,] stop[, step]) -> xrange object
 |  
 |  Like range(), but instead of returning a list, returns an object that
 |  generates the numbers in the range on demand.  For looping, this is 
 |  slightly faster than range() and more memory efficient.
 [...]

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Freitag 15. Juni 2012, 22:27
von StefanLawl
Ah, die Anzahl also, danke :D

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Samstag 16. Juni 2012, 04:41
von Leonidas
StefanLawl hat geschrieben:Edit: Ich erhalte übrigens einen komischen Fehler.

Code: Alles auswählen

import random

num = [random.randint(1,10) for _ in xrange(200)]

print num[0]
Ausgabe:

Code: Alles auswählen

7
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Benutze Spyder und Python 2.7
Dann lass Spyder weg. Das ist kein Problem mit dem Programm sondern deiner Software.

Re: mehrere Variablen in einer Zeile? :embarrased:

Verfasst: Samstag 16. Juni 2012, 16:03
von StefanLawl
Okay danke :)