Liest string nicht richtig aus!?

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
Sans
User
Beiträge: 19
Registriert: Dienstag 28. September 2010, 16:31

Hi,
bin grad dabei eine Caesar Verschlüsselung zu basteln. Ich versuche,d as über das System der Ordnungszahlen zu machen.
Nun tritt bei meinem bisherigen Code aber ein Problem auf.

Code: Alles auswählen

# Ceasar Verschlüsselung

def wandeln(b, f):
   '''
   oz ist die Zahl ihm ordnungssystem
   noz ist die neue Zahl im Ordnungssystems des Verschlüsselten Buchstabens
   verschlb ist der verschlüsselte Buchstabe
   '''
   oz = int(ord(str(b)))
   noz = oz + int(f)
   verschlb = chr(noz)

#abfrage
eingabe=input("Bitte Text eingeben. Keine Umlaute!")

'''
faktor der verschlüsselung wird abgefragt
y ist die Korrektheit der eingabe
'''

y=0
faktor=input("Bitte Verschlüsselungsfaktor angeben. (Zahl zwischen 1 und 25)")

while y==0:
   try:
      int(faktor)
      y=1
   except:
      faktor=input("Falsche Eingabe. Bitte Verschlüsselungsfaktor angeben. (Zahl zwischen 1 und 25)")
else:
   int(faktor)
                          

#verschlüsselung

'''
die eingabe wird in einzelne Zeichen getrennt und das alphabet in Buchstaben zur Liste zusammengefasst.
'''

code=list(eingabe)
print(code)


verschluesselung = ''

for i in range(len(eingabe)):
   buchstabe=code[i]
   print(buchstabe)
   verschluesselung = verschluesselung + str(wandeln(buchstabe, faktor))

#Hauptprogramm
print(verschluesselung)
Als ausgabe der Verschlüsselung kommt NoneNoneNoneNone..., das heißt das Programm erkennt den Buchstaben den die Funktion "wandeln" fabrizieren sollte, nicht als solchen an. ICh finde den Grund aber nicht.

Danke
Sans
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sans hat geschrieben:Als ausgabe der Verschlüsselung kommt NoneNoneNoneNone..., das heißt das Programm erkennt den Buchstaben den die Funktion "wandeln" fabrizieren sollte, nicht als solchen an. ICh finde den Grund aber nicht.
An welcher Stelle in der Funktion hast du denn festgelegt, welcher Wert zurückgeliefert werden soll?
Sans
User
Beiträge: 19
Registriert: Dienstag 28. September 2010, 16:31

Code: Alles auswählen

verschluesselung = ''

for i in range(len(eingabe)):
   buchstabe=code[i]
   print(buchstabe)
   verschluesselung = verschluesselung + str(wandeln(buchstabe, faktor))
Hier sollte eigentlich für jede Stelle im COde der buchstabe ausgelesen, in den neuen konvertiert werden und an "verschluesselung" angehängt.

Umgewandelt wird hiermit:

Code: Alles auswählen

def wandeln(b, f):
   '''
   oz ist die Zahl ihm ordnungssystem
   noz ist die neue Zahl im Ordnungssystems des Verschlüsselten Buchstabens
   verschlb ist der verschlüsselte Buchstabe
   '''
   oz = int(ord(str(b)))
   noz = oz + int(f)
   verschlb = chr(noz)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Da kann ich nur die gleiche Frage noch einmal stellen:
An welcher Stelle in der Funktion hast du denn festgelegt, welcher Wert zurückgeliefert werden soll?
Sans
User
Beiträge: 19
Registriert: Dienstag 28. September 2010, 16:31

ich fürchte dann versteh ich wohl nicht ganz was du meinst
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sans hat geschrieben:ich fürchte dann versteh ich wohl nicht ganz was du meinst
Du erwartest von deiner Funktion wandeln(), das sie einen verschlüsselten Buchstaben zurückliefert.
Das musst du in der Funktion festlegen:

Code: Alles auswählen

return wert
Tust du das nicht, liefert die Funktion "None" zurück.
Sans
User
Beiträge: 19
Registriert: Dienstag 28. September 2010, 16:31

-.- Danke. Nun funktionierts
Antworten