mehrere Variablen in einer Zeile? :embarrased:

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.
Antworten
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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:
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

a = b = c = 7
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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? :)
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

So vielleicht?

Code: Alles auswählen

a, b, c = random.randint(1,10) , random.randint(1,10) , random.randint(1,10) 
:P
Zuletzt geändert von anogayales am Freitag 15. Juni 2012, 21:38, insgesamt 3-mal geändert.
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Dann brauchst vielleicht eine andere Datenstruktur, bspw. Liste oder Dictionary.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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 :)
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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!
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Wow danke :)
anogayales hat geschrieben:Im Generellen schreit das aber förmlich nach einer eigenen Datenstruktur!
Wie meinen? :D
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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?
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
 [...]
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Ah, die Anzahl also, danke :D
Zuletzt geändert von StefanLawl am Mittwoch 3. Juli 2013, 16:40, insgesamt 1-mal geändert.
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

Okay danke :)
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Antworten