Hallo!
Ich möchte ein List-Element ausgeben, jedoch "direkt", d.H. die einzelnen Inhalte sollen direkt aneinandergereiht sein. Leider habe ich auch keine Ahnung wie man sowas nennt, weshalb ich euch um hilfe bitte
gruß
list Element ausgeben
Und "join" geht so:
Code: Alles auswählen
>>> print ''.join(['x','y','z'])
xyz
Hallo!
Habe mir dass mal angesehen, funktioniert aber nicht
Muss man vielleicht noch etwas importieren?
Passwort wird so erstellt:
und dann durch passwort.append Aufrufe erweitert
Was mache ich nun jetzt schon wieder falsch?
gruß karsten
Habe mir dass mal angesehen, funktioniert aber nicht
Code: Alles auswählen
File "/home/karsten/Desktop/test.py", line 53, in generate_pw
line = join(passwort)
NameError: global name 'join' is not defined
Passwort wird so erstellt:
Code: Alles auswählen
passwort = [0]
Was mache ich nun jetzt schon wieder falsch?
gruß karsten
Sage nie, was du weisst. Aber wisse stets, was du sagst!
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
join() ist keine Funktion, sondern eine Methode von String-Objekten. Du kannst es nur in Zusammenhang mit einem String anwenden. numerix hat Dir doch ein Beispiel gegeben.
Bei Dir wäre es eben:
Wozu wird das PW eigentlich in einer Liste gespeichert?
Bei Dir wäre es eben:
Code: Alles auswählen
line = "".join(passwort)
1. Du hast join() falsch eingesetzt. Sieh dir nochmal genau mein Beispiel an.
2. Was soll das denn für ein "passwort" sein: [0] ? Eine Liste mit einem Element und das ist 0?
3. Auch wenn du join() richtig verwendet hättest, hätte es nicht funktioniert, weil dein einziges Listenelement vom Typ int ist. Müsste eine Zeichenkette sein. Musst du vorher also noch umwandeln ...
2. Was soll das denn für ein "passwort" sein: [0] ? Eine Liste mit einem Element und das ist 0?
3. Auch wenn du join() richtig verwendet hättest, hätte es nicht funktioniert, weil dein einziges Listenelement vom Typ int ist. Müsste eine Zeichenkette sein. Musst du vorher also noch umwandeln ...
Hallo!
Die beiden Beispiele habe ich mir angesehen, aber es funktioniert auch damit nicht
Dass Passwort wird zufällig generiert, manche Zahlen werden durch Buchstaben ersetzt, deswegen die Liste. Ist schwer zu verstehen, deswegen hier mal der gesamte Code:
//edit:
Die beiden Beispiele habe ich mir angesehen, aber es funktioniert auch damit nicht
Dass Passwort wird zufällig generiert, manche Zahlen werden durch Buchstaben ersetzt, deswegen die Liste. Ist schwer zu verstehen, deswegen hier mal der gesamte Code:
Code: Alles auswählen
import Tkinter as tk
import random as rd
horizontal = "horizontal"
fontvar = "Waree"
passwort = [0]
def generate_pw():
counter = 0
string = ">"
# soll nachher das Passwort generieren
wert = bar.get()
for i in range(wert):
zahl = rd.randrange(9) # Zahl generieren, zufaellig
zufall = rd.randrange(2) #Zufaelige Zahl, fuer Buchstabenersetzung
if zufall == 1:
if zahl == 0:
passwort.append("O")
if zahl == 1:
passwort.append("i")
if zahl == 2:
passwort.append("z")
if zahl == 3:
passwort.append("e")
if zahl == 4:
passwort.append("a")
if zahl == 5:
passwort.append("s")
if zahl == 6:
passwort.append("G")
if zahl == 7:
passwort.append("L")
if zahl == 8:
passwort.append("B")
if zahl == 9:
passwort.append("G")
else:
passwort.append(zahl)
root = tk.Tk()
tk.Label(root, text="Dieses Programm generiert ihnen ein sicheres Passwort.", font=fontvar).pack()
tk.Label(root, text="Bitte geben Sie die Anzahl der zu verwendenen Stellen an!", font=fontvar).pack()
button = tk.Button(text="Generieren", command=generate_pw)
bar = tk.Scale(root, from_=0, to=200, orient=horizontal)
bar.pack()
button.pack()
root.mainloop()
Ja also dass mit der [0] ist um 'passwort' zu erstellen, sonst meckert er bei passwort.append nachher rum. Wusste nicht wie ich es sonst erstellen soll.2. Was soll das denn für ein "passwort" sein: [0] ? Eine Liste mit einem Element und das ist 0?
Wie heisst der Befehl? Kenne von C# nur foobar.ConvertToString, bloß wie er hier heisst weiss ich nichtMusst du vorher also noch umwandeln ...
Sage nie, was du weisst. Aber wisse stets, was du sagst!
karsten k hat geschrieben:Wie heisst der Befehl? Kenne von C# nur foobar.ConvertToString, bloß wie er hier heisst weiss ich nicht
Code: Alles auswählen
>>> str(7)
'7'
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hui ... das sieht alles andere als sauber aus!
Geht sicherlich auch noch anders, aber so ist das besser als zig mal if zu nutzen! (Und das mit der Liste würde ich auch noch mal überdenken - es gibt durchaus Strings für so etwas)
Zum anderen
Geht. Aber Du hast ja auch Integers drin, dann klappt es natürlich nicht. Da wüßte ich auch keine Methode, außer eben eine eigene Funktion zu schreiben.
Code: Alles auswählen
from random import choice
pw = []
chars = "01234abcdefgh"
# die 8 kann man ja auch noch variieren ;-)
for i in xrange(8):
pw.append(choice(chars))
Zum anderen
Code: Alles auswählen
dummy = ["a", "b"]
print "".join(dummy)
Meine dringende Empfehlung: Lies dir das Tutorial durch und fang vorne an: http://docs.python.org/tut/tut.html
Dir fehlen grundlegende Sprachelemente von Python. Ohne deren Aneignung wirst du deutlich weniger Freude am Programmieren mit Python haben.
Nur ein Beispiel aus deinem Code: Die gesamten Zeilen 18-46 kannst du durch diese eine Zeile ersetzen:
Dir fehlen grundlegende Sprachelemente von Python. Ohne deren Aneignung wirst du deutlich weniger Freude am Programmieren mit Python haben.
Nur ein Beispiel aus deinem Code: Die gesamten Zeilen 18-46 kannst du durch diese eine Zeile ersetzen:
Code: Alles auswählen
passwort.append("OizeasGLBG"[zahl])
Damn, da hab ichs mir ja mal wieder (unnötig) viel Arbeit gemacht, aber Python wird mir immer sympatischer
Hab mir gestern noch ein Buch bestellt, zusammen mit dem Tutorial werde ich doch die grundlegenden Sprachelemente besser -kennenlernen
Hab mir gestern noch ein Buch bestellt, zusammen mit dem Tutorial werde ich doch die grundlegenden Sprachelemente besser -kennenlernen
Sage nie, was du weisst. Aber wisse stets, was du sagst!
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Eine elegante Möglichkeit wäre das hier:
Code: Alles auswählen
>>> from string import letters, digits
>>> from random import choice
>>> from itertools import imap, repeat
>>> ''.join(imap(choice, repeat(letters + digits, 10)))
'vkv26kVKOV'
TUFKAB – the user formerly known as blackbird
Geht. Aber Du hast ja auch Integers drin, dann klappt es natürlich nicht. Da wüßte ich auch keine Methode, außer eben eine eigene Funktion zu schreiben.
Code: Alles auswählen
print "".join(map(str, range(20)))
so doof bin ich nun auch wieder nichtaudax hat geschrieben:Nicht das von Galileo, oder? :/
Da hab ich ab und zu in der Online Variante reingesehen, aber nein ich habe mir
http://www.buecher.de/shop/Buecher/Pyth ... h-1-titel/ dass bestellt. Ist gut zum nachschlagen
Danke für eure Beispiele, meine If's waren echt nicht so der bringer
Sage nie, was du weisst. Aber wisse stets, was du sagst!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Vom Kurz & gut habe ich zwei im Regal und schaue da nie rein, weil da nicht mehr steht als auch Online in aktueller und umfassender verfügbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ach ich lese dass z.Z. wenn ich morgens in der Bahn zur Schule sitze oder in ńer Freistunde - dafür haben sich die 10€ schon gelohntLeonidas hat geschrieben:Vom Kurz & gut habe ich zwei im Regal und schaue da nie rein, weil da nicht mehr steht als auch Online in aktueller und umfassender verfügbar.
Sage nie, was du weisst. Aber wisse stets, was du sagst!