zufall!

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
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Hi hab als Hausaufgabe folgende aufgabe:

2) Verschlüsselung:
Schreibe eine Funktion „Verstecke“ mit 2 Argumenten „s“ und „n“, die einen Klartext auf folgende Weise unleserlich macht:
a) Die Zeichenkette wird in Großbuchstaben umgewandelt.
b) Hinter diese Zeichen werden n zufällige Großbuchstaben eingefügt.
c) Das Argument ist optional. Defaultwert: n=1
Eine Entschlüsselung soll auch enthalten sein!

nun hab ich ein problem bei der b) nämlich bei dem Wörtchen "zufällig"
hab schon ein paar wörter wie "random" ausprobiert aber niochts hat funktioniert. hat jemand ne idee wie man das in Python "dem Zufall überlässt". Ich dneke mal ich muss ne Liste mit allen Buchstaben machn und dann iwie zufällig auf diese zugreifen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Schau dir mal die Module random und string an.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

wo sol ich mir die anschauen gibts da beschreibungen :oops:
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Basti91 hat geschrieben:wo sol ich mir die anschauen gibts da beschreibungen :oops:
ja gibt es:

einfach suchen
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

hab jetzt ein bisschen rumexprimentiert aber iwie will das nicht funzen weil er mir immer ausgibt das es den befel "random()" nicht gibt.


Code: Alles auswählen

>>> Alphabeth= ["A","B","C","D","E","F","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
>>> random(Alphabeth)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    random(Alphabeth)
NameError: name 'random' is not defined
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

Du hast ihn wohl nicht importiert?!

Probiers mal so und lies noch ein bisschen Tutorial nebenher.

Code: Alles auswählen

import random

random.choice(Alphabeth)
BlackJack

Ich konnte nicht widerstehen. :-)

Code: Alles auswählen

from itertools import islice
from random import choice
from string import ascii_uppercase


def iter_random_uppercase():
    while True:
        yield choice(ascii_uppercase)


def encode(text, n=1):
    random_uppercase = iter_random_uppercase()
    for character in (c.upper() for c in text):
        yield character
        for character in islice(random_uppercase, n):
            yield character


def decode(text, n=1):
    return islice(text, None, None, n + 1)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Da wird der Lehrer bestimmt ganz aus dem Häuschen sein ... :lol:
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

was bewirkt denn das yield und das islice ...sry aber hab ich noch nie gesehen
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wirf doch einen Blick in die Dokumentation. Dann sparst du auch gleich das Raten von irgendwelchen Befehlen. Den Vorschlag von BlackJack solltest du nicht allzu ernst nehmen ;-) . Mit den Dir bekannten Mitteln bekommst du es sicher auch hin.

Edit: Typo-Tag :lol:! War ja echt grausam :roll:
Zuletzt geändert von EyDu am Montag 15. September 2008, 21:01, insgesamt 2-mal geändert.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Basti91 hat geschrieben:was bewirkt denn das yield und das islice ...sry aber hab ich noch nie gesehen
Wenn yield aufgerufen wird, wird der Wert "return"ed und die funktion(generator) angehalten. Man kann den nächsten Wert dann mit .next() bekommen.

islice liefert ein slice Object über das man iterieren kann. Du kennst vielleicht ["foo", "bar"][0:2] um bestimmte Elemente aus Sequenzen zu bekommen, im Prinzip ist dass das gleiche.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

danke für die infos
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ist denn heute Typo-Tag? Erst les ich Schwirigkeiten bei Python und dann kommen hier "Befhele". Heute haben es wohl einige erst genommen, noch mehr Tippfehler zu machen als ich normalerweise 8)

Letzten Endes kann man natürlich auch BlackJacks Lösung nehmen, sofern man weiß wie sie geht und dem Lehrer auf Anfrage auch erklären und modifizieren kann (falls er glaubt dass man die Erklärung auswendig kann). Allerdings ist es wohl einfacher, das Problem selbst zu lösen, dann gibt es auch keine Verdachtsmomente.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten