Hallo,
in meiner letzten Programmiersprache konnte ich folgendes:
for i = 1 to 5
a=str(i)
b%a = i
next
Erzeugte die Variablen b1,b2,b3 usw.
Geht das in Python?
Danke
Hallo,
in meiner letzten Programmiersprache konnte ich folgendes:
for i = 1 to 5
a=str(i)
b%a = i
next
Erzeugte die Variablen b1,b2,b3 usw.
Geht das in Python?
Danke
Variablen erzeugen? Schau mal ob du hier fündig wirst!
Ja.
Bitte das nächste Mal in Codetags posten.
Ja.Bitte das nächste Mal in Codetags posten.
si tacuisses, philosophus mansisses
si tacuisses, philosophus mansisses
hamyam ist vielleicht Mathematiker, seine Antwort war richtig aber unbrauchbar
ich weiss von Python leider nichts.
Beschreib' mal genau, was du machen willst. Das ergibt so wenig Sinn und ist nicht wirklich pythonic. Gehen tut's, ja.
jar: _leider_ muss nicht sein und lässt sich ändern
Edit: dass ich nicht auch als Mathematiker abgestempelt werde (aber schön ist das wie gesagt nicht! Es gibt bestimmt einen viel sinnvolleren Weg!):
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> globals()['a'] = 1
>>> a
1
>>>
LG
für so was will man eh eine Liste oder ein Woerterbuch. Garantiert nicht nummerierte Pseudovariablen.
Gesendet von meinem SM-G850F mit Tapatalk
for i = 1 to 5
a=str(i)
b%a = i
nextErzeugte die Variablen b1,b2,b3 usw.
Blöde Frage: Wieso sollte man sowas wollen?
Mir ist keine Programmiersprache bekannt wo man solche Variablen haben wollen würde... Nicht nur das sowas "automatisiert" erzeugen zu lassen ein ziemlich dirty Vorgehen wäre, sondern auch für spätere Nutzung eher umständlich... "b1=1", "b2=2", "b3=3" usw erzeugen lassen ist doch Schwachsinn :s
Wenn, dann nutzt mag sog. Arrays. Oder man benennt seine Variablen vernünftig ihrem Sinn und Zweck entsprechend - wenn man weiß dass man 5 Variablen benötigt, dann definiert man die eben selbst.
Was willst Du machen?
Wieso wollt Ihr mir vorschreiben was ich brauche?
Ihr solltet mal lieber überlegen wo der Trick liegt!
Der Trick ist a%b
gleich a1
Diese Variablen Zuweisung!
Nun habe ich z. B. in einem Programm, warum auch immer, 892 Variablen mit den Namen a1 bis a892.
Die möchte / muss ich nun bearbeiten, z. B. jeder Variablen einen Wert aus einem File zuweisen.
Kann man manuell machen, a1 = gestern ( Zeile 1 aus File ), a2 = morgen ( Zeile 2 aus File )
Dann ginge aber:
for i = 1 to 892
b=str(i)
a%b = zeile i
next
Da wollte ich hin.
Das Wort Excel lass ich mal weg.
Und wenn das wie behauptet in Python geht, warum zeigt es mir keiner?
Wenn es doch so EINFACH ist!
Ich hab es schon gezeigt, packs halt in ne Schleife. Du wurdest gewarnt.
LG
Und wenn das wie behauptet in Python geht, warum zeigt es mir keiner?
Wenn es doch so EINFACH ist!
Es geht nicht darum ob und wie es in Python geht (geht so, wie du es forderst, nicht), sondern dass das ganz schlechter Stil ist:
Wie meigrafd schon schrieb, benutzt man dafür Arrays oder auch Dictionaries.
Dieses "implizite" Erzeugen von Variablen verschlechtern die Programmübersicht erheblich, vom Debuggen/Fehlersuche mal ganz zu schweigen.
Nicht alles, was bestimmte Sprachen an Features anbieten und als "super-duper" anpreisen ist geeignet, für ernsthafte Zwecke nutzbar zu sein.
Du kannst natürlich machen (programmieren) was du willst...
Ich habe mehrmals gesagt, dass das völliger Blödsinn ist, aber gehen tut es. Man kann das globals dictionary bearbeiten, oder einem anderen Objekt ein neues Attribut zuweisen. Siehe #5 und das in eine Schleife und string formatting packen. Nichtsdestotrotz gibt es Listen und dicts für sowas, aber es geht. Das möchte ich hier festhalten.
LG
Ist Dir der Begriff 'array' denn vertraut? Und falls ja, gibt es einen bestimmten Grund, warum Du keinen verwenden möchtest? Python kennt nativ keinen Variablentyp 'array', wohl aber die 'list', die dem schon recht nahe kommt. Damit könnte man Deinen Code so umsetzen:
a = [] # erzeugt eine leere Liste
for i in range(892): # zählt i von 0 bis 891 durch
a.append(str(i+1)) # hängt str(i+1) an die Liste an
Auf die einzelnen Elemente könntest Du dann als 'a[0]' bis 'a[891]' zugreifen.
Darum geht es doch garnicht.
Es geht darum VARIABLEN indirekt über einen Zähler anzusprechen, ähnlich wie ein array.
Die sind einfach da, warum auch immer, soll es ja geben!
Wie bearbeitest Du denn die variablen von a1 bis a829?
Ihr solltet mal lieber überlegen wo der Trick liegt!Der Trick ist a%b
gleich a1
Diese Variablen Zuweisung!Nun habe ich z. B. in einem Programm, warum auch immer, 892 Variablen mit den Namen a1 bis a892.
Sorry aber das ist definitiv kein Trick.
Und wenn das wie behauptet in Python geht, warum zeigt es mir keiner?
Wenn es doch so EINFACH ist!
Um dich vor schlimmen Fehlern zu bewahren? Vermutlich weißt du es blos nicht besser aber meinst nun das solch ein Vorgehen nötig wäre...
In jeder anderen Programmiersprache erzeugt man ein oder mehrere Array's.
In PHP könnte sowas zum Beispiel wie folgt aussehen - da finde ich das am einfachsten zu verstehen:
[code=php]
$settings = array();
$settings["email"] = "bla@blub.com";
$settings["server"] = "gmail.com";
[/php]
Das heißt man hat sozusagen nur eine Variable über die man aber verschiedene Elemente/Schlüssel abrufen kann.
Für Python gibt es sowas natürlich auch. Nennt sich dort dann nur Dictionary:
[code=php]
settings = dict()
settings["email"] = "bla@blub.com"
settings["server"] = "gmail.com"
[/php]..natürlich gibt es wie auch in php mehrere Möglichkeiten/Wege sowas zu erzeugen oder zu befüllen, muss man IMHO hier jetzt aber nicht alle erwähnen, kannste auch nach googlen.
Nicht zu verwechseln mit list() oder tuple() die man auch nutzen könnte.
Um das noch mal aufzugreifen:
Nun habe ich z. B. in einem Programm, warum auch immer, 892 Variablen mit den Namen a1 bis a892.
Mit einem Array / Dictionary hättest du dann halt a[1] bis a[892]
Aber weißt du was das beste daran ist? Du kannst später wieder automatisiert da drüber latschen, sprich mit einer Schleife. Mit deinem dirty Vorgehen ginge das nur extrem umständlich oder Hardcoded und letzteres wäre wiederum Schwachsinn wieso das dann zuvor "automatisiert" erzeugt wurde... Also entweder man erleichtert sich das Leben und automatisiert sowas, oder man lässt es lieber gleich bleiben
[code=php]
for key in settings:
print "{}: {}" . format(key, settings[key])
[/php]
Allerdings hört sich "a1 bis a892" irgendwie nach Zeilen-Nummern einer Datei an....
Wenn dem so ist wäre es sinnvoller sowas zu machen:
[code=php]
lines = open(filename).read().splitlines()
[/php]
Und dann kannst du später wieder "automatisiert" über die Zeilen wandern oder dir gezielt die Zeilennummer raus holen: lines[0] für die erste Zeile.
Übrigens ergibt sich daraus dann erst der "Trick" wenn man von unterschiedlichen Arrays gleiche Schlüssel verwenden kann.
[code=php]
$DATEIEN["config.php"] = "/var/www/html/include/config.php";
$DATEIEN["syslog"] = "/var/logs/syslog";
#spaeter
$ZUGRIFF["config.php"] = True;
$ZUGRIFF["syslog"] = False;
#spaeter
foreach ($DATEIEN AS $DATEI => $PFAD) {
if ($ZUGRIFF[$DATEI]) { echo "jo"; }
}
[/php]
Oder mit Multidimensionalen Arrays kann man richtig zaubern:
[code=php]
$lang['de']['loadfile'] = 'Datei laden:';
$lang['en']['loadfile'] = 'Load file:';
# und kann dann ganz einfach die Sprache seiner Webseite switchen:
$USE_lang = "de";
echo $lang[$USE_lang]['loadfile'];
[/php](...is natürlich php...)
PS: Wir wollen dir nichts vorschreiben sondern helfen. Gute Hilfe sieht für gewöhnlich so aus dass auf mögliche Fehler hingewiesen wird.
a1 = 'heute'
a2 = 'morgen'
a3 = 'safdsadf'
for i in range(3):
print(locals()['a{}'.format(i + 1)]) # nicht globals() oder vars()
So etwas benutzt niemand. Auch wenn du es nicht einsehen möchtest.
Ein Array ist in Python schlicht weg eine Liste und kein Wörterbuch etc. (Manul hat das oben schon erwähnt)
Darum geht es doch garnicht.
Es geht darum VARIABLEN indirekt über einen Zähler anzusprechen, ähnlich wie ein array.
Die sind einfach da, warum auch immer, soll es ja geben!
Falls sich das auf mich bezieht: Die Ähnlichkeit zum Array habe ich verstanden - den Unterschied noch nicht. Wo kommen die Variablen denn her? Erzeugst Du die nicht selbst? Ich denke, wenn Du genauer beschreiben würdest, was eigentlich Dein Anwendungsfall ist, könnte man Dir auch besser helfen. Ich zumindest würde auch gerne verstehen, welche Problemstellung dahintersteckt. Also: Warum ist ein Array/eine Liste keine Lösung für Dich?
Darum geht es doch garnicht.
Es geht darum VARIABLEN indirekt über einen Zähler anzusprechen, ähnlich wie ein array.
Die sind einfach da, warum auch immer, soll es ja geben!Wie bearbeitest Du denn die variablen von a1 bis a829?
Aber genau deshalb wär es doch besser die Daten in eine Liste zu speichern
#Umständliche methode
zeile1 = "Ich bin Zeile 1"
zeile2 = "Ich bin Zeile 2"
zeile3 = "Ich bin Zeile 3"
zeile4 = "Ich bin Zeile 4"
zeile5 = "Ich bin Zeile 5"
print(zeile1)
print(zeile2)
print(zeile3)
print(zeile4)
print(zeile5)
#vorteil einer Liste
zeilenliste = [zeile1, zeile2, zeile3, zeile4]
#auch möglich zum hinzüfügen
zeilenliste.append(zeile5)
#Komplette Liste ausgeben
for zeile in zeilenliste:
print(zeile)
#Ausgabe über Zählerstand
for i in range(0, len(zeilenliste)):
print(zeilenliste[i])
#nur ungerade Zeilen ausgeben
counter = 0
while counter <= len(zeilenliste)+1:
print(zeilenliste[counter])
counter += 2
Alles anzeigen
Huch, wie unsympathisch.
Weiteres Stichwort: Macros.
Aber ebenso schlechter Stil und schlechter Stil erzeugt meist Fehler. Also Finger weg.
*seufz*
Da es ihm um Python geht bringt ihm ICON, oder irgendeiner anderen Programmiersprache, sehr wenig bis gar nichts.
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!