Seite 2 von 3

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 22:17
von Graf2.0
sebastian0202 hat geschrieben:Hallo,
um die vielen Listen zu vermeiden, könntest du dir ja eine Funktion schreiben,
die deine ursprüngliche Variable abc nutzt und, um dein Beispiel zu nutzen, die Buchstaben um 19 Stellen verschiebt.
Die pop() und append() Funktionen von Listen kannst du dafür nutzen und mit der For-Schleife sorgst du auch für 19 Durchgänge.
Am Ende der Funktion gibst du dein neues abc zurück mit dem du dann deinen Text verschlüsseln kannst.
Ich versuche das was sebastian0202 beschrieben hat umzuätzen. Gedacht habe ich mir wenn sagen wir die Variable x eine Position von sagen wir "h" (7) gespeichert hat das von einer schon vorher gefertigte liste (abc) alle Buchstaben von a-h gelöscht werden und eben diese gelöschten Buchstaben hinten ran gedockt werden. Ich möchte das aus
abc = a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
abc = h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g
entsteht.

Damit hätte ich mir die Tabelle bzw. Zeile von anfangs selbst generiert und kann damit arbeiten.

Das hinten randocken klappt aber das löschen von a-h nicht. Ich habe es mit .pop versucht aber der löscht nicht alles von a-h sondern nur jedes zweite. Darum auch dieser alte Beitrag, denn da hat jemand das selbe Problem mit .pop aber da wir es nicht gelöst sondern nur eine alternative vorgeschlagen.
Ich hoffe du hast mit mir ein wenig Nachsicht :oops:

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 22:55
von kbr
Hier eine kleine Hilfestellung (Python 3):

Code: Alles auswählen

import string
abc = string.ascii_lowercase
print(abc)
x = 7
print(abc[x:], abc[:x], sep='')

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 23:08
von Graf2.0
wow danke wie genial einfach!! Manchmal sieht man denn Wald vor lauter Bäumen nicht :lol:

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 23:13
von Graf2.0
nur habe ich Python2 und das sep='' will nicht. gibt es das in 2 nicht?

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 23:19
von Sirius3
@Graf2.0: kbr zeigt Dir auch keine fertige Lösung, weil wir hier keine Hausaufgaben für andere machen. Das Portieren auf Dein Problem bleibt Deine Aufgabe; Du willst ja eine neue Liste, und keine Ausgabe.

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 23:31
von Graf2.0
ja ich habs gerade bemerkt und ausprobiert so weit war ich schon das von kbr ist schöner geschrieben. Natürlich weiß ich das und verlange das auch nicht nur eine Lösung für mein .pop() Problem würde mich einen riesen Schritt näher ans Ziel bringen. Und außerdem würde ich euch dann auch nicht mehr nerven :lol: Naja für mich ist es schon spät ich geh schlafen. Mal schauen was ich morgen alles schaffe.

Re: Variable etwas anders ausgeben

Verfasst: Dienstag 16. Januar 2018, 23:40
von kbr
@Graf2.0: Du nervst nicht – wenn Du nervst, wird Dir einfach keiner mehr antworten. Aber gib Dir Mühe und versuche die Hilfestellung auf Dein Problem anzuwenden. Und dann noch: die deutsche Sprache kennt Interpunktion. Nutze diese.

Re: Variable etwas anders ausgeben

Verfasst: Mittwoch 17. Januar 2018, 14:36
von Graf2.0
Graf2.0 hat geschrieben:
sebastian0202 hat geschrieben:Hallo,
um die vielen Listen zu vermeiden, könntest du dir ja eine Funktion schreiben,
die deine ursprüngliche Variable abc nutzt und, um dein Beispiel zu nutzen, die Buchstaben um 19 Stellen verschiebt.
Die pop() und append() Funktionen von Listen kannst du dafür nutzen und mit der For-Schleife sorgst du auch für 19 Durchgänge.
Am Ende der Funktion gibst du dein neues abc zurück mit dem du dann deinen Text verschlüsseln kannst.
Ich versuche das was sebastian0202 beschrieben hat umzuätzen. Gedacht habe ich mir wenn sagen wir die Variable x eine Position von sagen wir "h" (7) gespeichert hat das von einer schon vorher gefertigte liste (abc) alle Buchstaben von a-h gelöscht werden und eben diese gelöschten Buchstaben hinten ran gedockt werden. Ich möchte das aus
abc = a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
abc = h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g
entsteht.

Damit hätte ich mir die Tabelle bzw. Zeile von anfangs selbst generiert und kann damit arbeiten.

Das hinten randocken klappt aber das löschen von a-h nicht. Ich habe es mit .pop versucht aber der löscht nicht alles von a-h sondern nur jedes zweite. Darum auch dieser alte Beitrag, denn da hat jemand das selbe Problem mit .pop aber da wir es nicht gelöst sondern nur eine alternative vorgeschlagen.
Ich hoffe du hast mit mir ein wenig Nachsicht :oops:
Könnte jemand mir wenigstens das mit der .pop() funktion erklaren, also warum die nicht funktioniert...

Re: Variable etwas anders ausgeben

Verfasst: Mittwoch 17. Januar 2018, 14:56
von Sirius3
@Graf2.0: Du benutzt pop falsch und hängst das falsche hinten an. Lies Dir die Dokumentation dazu mal durch.

Re: Variable etwas anders ausgeben

Verfasst: Mittwoch 17. Januar 2018, 15:18
von Graf2.0
Ich habe mich mit dictionary auseinandergesetzt und frage mich man eine variable in Anführungszeichen setzten kann aber so das der Wert auf der Variable nicht verloren geht.

Re: Variable etwas anders ausgeben

Verfasst: Mittwoch 17. Januar 2018, 15:31
von narpfel
@Graf2.0: Da `dict`s keine Reihenfolge haben, kann man keinen sinnvollen Index zu einem Wert definieren. Außerdem: Was sollte deiner Meinung nach dabei rauskommen:

Code: Alles auswählen

d = {"foo": "bar", "baz": "bar"}
print(d.index("bar"))
Als Lektüre würde ich noch das Tutorial empfehlen. Da sind die Grunddatentypen alle beschrieben.

Re: Variable etwas anders ausgeben

Verfasst: Donnerstag 18. Januar 2018, 10:12
von Graf2.0
Stimmt, hast recht. So würde das keinen Sinn machen, allerdings sollte der index von einem Schlüssel doch möglich sein. Bezogen auf dein Beispiel müsste print(d.index("baz")) doch Funktionieren und mir 2 liefern, denn ein Schlüssel darf doch nicht doppelt vorkommen, außer man möchte den Wert überschreiben.

Re: Variable etwas anders ausgeben

Verfasst: Donnerstag 18. Januar 2018, 13:31
von sebastian0202
Probiere es doch mal aus und schaue was passiert:

Code: Alles auswählen


>>> d = {"t" : "a", "b" : "a", "t" : "c"}
>>> d.index("t")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'index'
>>> print d["t"]
c

Re: Variable etwas anders ausgeben

Verfasst: Donnerstag 18. Januar 2018, 14:55
von narpfel
@Graf2.0: `dict`s haben aber keine Ordnung. In anderen Worten:

Code: Alles auswählen

print({"foo": "bar", "baz": "bar"} == {"baz": "bar", "foo": "bar"})
wird `True` ausgeben, weil die Reihenfolge der Schlüssel-Wert-Paare im `dict` keine Bedeutung hat. Man kann also nicht sagen, dass `"baz"` später im `dict` vorkommt als `"foo"` und deswegen einen höheren Index haben muss.

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 10:57
von Graf2.0
Ok vielen dank nochmal das ihr mir helft da wäre nämlich noch was, und zwar frage ich mich wie ich dem Skript sagen kann das in einer for-schleife gerade das letzte Element ausgewählt wurde. Ein Beispiel:

a = [1, 2, 3, 4]
b = [3, 4, 5, 6, 7, 8, 9]

for x, y in zip(a,b):
print x # b ist länger als a daher möchte das a so oft wiederholt wird wie b inhalt hat sprich das len(a)=len(b) ist
print y

Mein erster Gedanke war es x zu sagen das x gerade das letzte Element von a bekommen hat und es wieder von vorn beginnen zu lassen. Da der inhalt der Listen a und b sich ständig ändert kann ich mich auch nicht darauf verlassen.
Natürlich bin ich auch für andere Vorschläge offen.
Ich möchte Grunde dass a so aussieht:

a = [1, 2, 3, 4, 1, 2, 3]
b = [3, 4, 5, 6, 7, 8, 9]

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 11:18
von pillmuncher
@Graf2.0: Sowas geht mit zip() und itertools.cycle().

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 11:44
von Graf2.0
Danke für die schnelle Antwort. Ich habe Python 2.7 und der erkennt weder itertools.cycle() noch cycle. Muss ich dafür etwas importieren oder woran liegt das?

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 11:45
von __deets__
Ja. Und das kann man schneller ausprobieren oder googeln , als hier ein Posting erstellen :roll:

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 11:54
von Graf2.0
Natürlich habe ich das gemacht und from itertools import * gefunden. Nur funktioniert das nicht und nahm an das es was anderes sein muss also was liegt näher als denjenigen zu fragen der mir dies empfiehlt.

Re: Variable etwas anders ausgeben

Verfasst: Freitag 19. Januar 2018, 12:12
von Graf2.0
Ok ist schon gut hab herausgefunden das cycle( ) für python 3 gedacht ist. Gibt es denn eine Funktion für python 2 die das selbe macht wie cycle()? Und ja das habe ich auch schon gegoogelt, aber nichts brauchbares gefunden.