Python :: Aufgabe #23

5 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - Python von Dome - 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.

Konsolenausgabe:

Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu

Lösungen:

vote_ok
von Freki (850 Punkte) - 13.10.2014 um 12:20 Uhr
Quellcode ausblenden Python-Code
#Verschiebung um x Stellen
print
x = int(input('Um wieviele Stellen soll das Alphabet verschoben werden? '))


t = input('Einen Text zum Verschluesseln/Entschluesseln eingeben: ')

#Umwandlung in eine Liste
l = list(t)

#Umwandlungvorschrift der eingegeben Buchstaben (mithilfe eines Dictionaries)
d = {   "a":0 , "b":1 , "c":2 , "d":3 , "e":4 ,
        "f":5 , "g":6 , "h":7 , "i":8 , "j":9 ,
        "k":10, "l":11, "m":12, "n":13, "o":14,
        "p":15, "q":16, "r":17, "s":18, "t":19,
        "u":20, "v":21, "w":22, "x":23, "y":24, "z":25   }

#Umwandlungsvorschrift der Zahlen in Buchstaben
e = {  0 :"a", 1 :"b", 2 :"c", 3 :"d", 4 :"e",
       5 :"f", 6 :"g", 7 :"h", 8 :"i", 9 :"j",
       10:"k", 11:"l", 12:"m", 13:"n", 14:"o",
       15:"p", 16:"q", 17:"r", 18:"s", 19:"t",
       20:"u", 21:"v", 22:"w", 23:"x", 24:"y", 25:"z"   }

#Verschluesselung
#Leere Hilfsliste definieren
m = []

#Verschluesselung der einzelnen Buchstaben mit 'while'-Schleife
i = 0
while i < len(l):
    m.append(e[(d[l[i]] + x)%26])
    i = i + 1

#Hilfsstring definieren
s = ""

#Ausgabe als Textblock
j=0
while j < len(m):
    s = s + m[j]
    j = j + 1

#Die entgültige Ausgabe
print
print ("Dies ist der Geheimtext: " +s)
vote_ok
von jigga (4260 Punkte) - 10.06.2015 um 15:31 Uhr
Quellcode ausblenden Python-Code
import string

liste = []
klein = string.ascii_lowercase
gross = string.ascii_uppercase

wort = input("Text: ")
verschiebung = int(input("Verschiebung: "))

for i in range(len(wort)):
	if wort[i] in klein:
		index = klein.find(wort[i])
		umwandlung = klein[(index + verschiebung)%26]
		liste.append(umwandlung)

	elif wort[i] in gross:
		index = gross.find(wort[i])
		umwandlung = gross[(index + verschiebung)%26]
		liste.append(umwandlung)
		
	else:
		liste.append(wort[i])

chiffre = ''.join(liste[i] for i in range(len(liste)))

print("Ergebnis:", chiffre)
vote_ok
von Nachbar (2820 Punkte) - 20.08.2016 um 21:30 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-

b = ["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"]

print "Verschlüsseln: v"
print "Entschlüsseln: e"

x = 0
while x < 1:
    auswahl = raw_input("\nAuswahl: ")
    if auswahl != "v" and auswahl != 'e':
        print "\nBitte entweder 'v' oder 'e' eingeben!"
    else:
        x = 1
# Verschlüsselung       
if auswahl == "v":
    eingabe = raw_input("\nBitte das zu verschlüsselnde Wort eingeben: ").lower()    
    rot = input("Stellenanzahl für Verschiebung: ")    
    chiffre = ""
    x = 0
    while x < len(eingabe):
        # Position des Buchstaben ermitteln        
        indexBuchstabe = b.index(eingabe[x])
        # Position nach Verschiebung ermitteln        
        if indexBuchstabe + rot > 25:
            indexBuchstabe_ab_anfang = (indexBuchstabe + rot) % 26
            chiffre = chiffre + b[indexBuchstabe_ab_anfang]
        else:
            chiffre = chiffre + b[indexBuchstabe + rot]
        x = x + 1
    print "\nVerschiebung um " + str(rot) + " Stellen ergibt den \
Begriff: " + chiffre
# Entschlüsselung
else:
    eingabe = raw_input("\nBitte das zu entschlüsselnde Wort eingeben: ").lower()    
    rot = input("Stellenanzahl für Verschiebung: ")    
    dechiffre = ""
    x = 0
    while x < len(eingabe):
        indexBuchstabe = b.index(eingabe[x])
        if indexBuchstabe + rot > 25:
            indexBuchstabe_ab_anfang = (indexBuchstabe - rot) % 26
            dechiffre = dechiffre + b[indexBuchstabe_ab_anfang]
        else:
            dechiffre = dechiffre + b[indexBuchstabe - rot]
        x = x + 1
    print "\nVerschiebung um " + str(rot) + " Stellen ergibt den \
Begriff: " + dechiffre
vote_ok
von hak (980 Punkte) - 11.09.2016 um 11:56 Uhr
Quellcode ausblenden Python-Code
def make_chiffre(rot):
    chiffre = {}
    for i in range (ord('a'), ord('z')) :
        chiffre[chr(i)] = chr( (i + rot - ord('a')) % 26 + ord('a'))
    for i in range (ord('A'), ord('Z')) :
        chiffre[chr(i)] = chr( (i + rot - ord('A')) % 26 + ord('A'))
    return chiffre;

def encrypt(txt, rot) :
    chiffre = make_chiffre(rot)
    return ''.join([chiffre[i] if i in chiffre else i for i in txt ] )

txt = input('\nPlease enter text to encrypt\n')
rot = int(input('\nPlease enter rotation (int), negative value means decrypt \n'))
encrypt(txt, rot)
vote_ok
von tebarius (470 Punkte) - 31.08.2018 um 14:32 Uhr
Quellcode ausblenden Python-Code
abcgross="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
abcklein="abcdefghijklmnopqrstuvwxyz"
txt=input("Bitte zu kodierenden Text eingeben:")
r=0
while r>26 or r<1:
    r=int(input("Um wieviele Stellen soll verschoben werden?(1-26) "))
atxt=""
warn=0
warntxt=""
for i in txt:
    if i==" ": 
        atxt=atxt+" "
        continue
    if i.upper() not in abcgross:
       atxt=atxt+i #nicht codierbare Zeichen direkt zur Ausgabe bitte! 
       warn=warn+1
       warntxt=warntxt+i+","
       continue
    if i == i.upper():
       abc=abcgross
    if i == i.lower():
        abc=abcklein
    abcl=len(abc)
    for j in range(abcl):
        if i==abc[j]:
            if j+r>=abcl:
                atxt=atxt+abc[j+r-abcl]
            else:
                atxt=atxt+abc[j+r]
print("Codierter Text:",atxt)
if warn > 0:
    print("Achtung! folgende im Text enthaltenen Zeichen wurden nicht kodiert:",warntxt[:-1])
1801137

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.