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.
name = input("Bitte Namen eingeben: ")
if(id(name) == "139849572197968"):
print("GENAU")
else:
print("NO")
Und zwar wollte ich das man beim input seinen Namen eingibt und dieser, dann (falls er Bob wäre) in diesen Zahlencode umgewandelt wird so das, dann das Wort GENAU erscheint. Nur wenn ich dies mache kommt immer NO raus. Wie gesagt ich bin neu und würde undeutlichkeiten ggfls. Korriegieren oder beantworten.
Danke im voraus.
Hallo Sparrow512,
mir ist eigentlich nicht klar, was Du machen willst. Aber was es auch ist, die Funktion id ist sicher nicht dafür geeignet.
Der Aufruf help(id) liefert:
[codebox=text file=Unbenannt.txt]
Help on built-in function id in module builtins:
id(...)
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
[/code]
d.h. id(name) hat nichts zu tun mit dem Wert von name. Drucke doch id(name) mal aus.
Eckhard
Ergänzend zu dem, was eckhart meinte:
Ich vermute mal '139849572197968' ist das Ergebnis, das du erhalten hast, als du id('Bob') eingegeben hast, oder?
Allerdings handelt es sich dabei um keine ID, die zuzusagen fest zu dieser Zeichenfolge gehört, sondern um eine interne Objekt ID, die Python vergibt und die bei jedem Interpreteraufruf anders ist. Wenn du Buchstaben in einen gleichbleibenden Zahlencode umwandeln möchtest, kannst du dazu beispielsweise 'ord' verwenden; mit Verschlüsselung o.Ä. hat das aber natürlich nichts zu tun.
Dav1d hat geschrieben:Suchst du `hash(name)`? Selbst wenn `id` immer den selben Wert zurückgeben werde, verlgeichst du immernoch eine Zahl mit einem String.
Leider nicht ich wollte etwas wie eine "geheime Zahlenreihe".
eckhard hat geschrieben:Hallo Sparrow512,
mir ist eigentlich nicht klar, was Du machen willst. Aber was es auch ist, die Funktion id ist sicher nicht dafür geeignet.
Der Aufruf help(id) liefert:
[codebox=text file=Unbenannt.txt]
Help on built-in function id in module builtins:
id(...)
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
[/code]
d.h. id(name) hat nichts zu tun mit dem Wert von name. Drucke doch id(name) mal aus.
Eckhard
Danke dafür.
Ich wollte etwas wie einen Code den man nicht so leicht bemerkt welcher Name dahinter steckt.
Dav1d hat geschrieben:Suchst du `hash(name)`? Selbst wenn `id` immer den selben Wert zurückgeben werde, verlgeichst du immernoch eine Zahl mit einem String.
Leider nicht ich wollte etwas wie eine "geheime Zahlenreihe".
Genauer und einfacher kommst du nicht an eine 'geheime' Zahlenreihe, hash ist nicht umkehrbar (so wie jeder andere anständige Hash).
@Dav1d: die `hash`-Funktion ist genauso ungegeeignet wie `id`, da sich der Hash bei jedem Programmaufruf ändert. Außerdem haben die Zahlen wenig mit ›geheim‹ zu tun.
Sirius3 hat geschrieben:@Dav1d: die `hash`-Funktion ist genauso ungegeeignet wie `id`, da sich der Hash bei jedem Programmaufruf ändert.
Nein.
-R : use a pseudo-random salt to make hash() values of various types be
unpredictable between separate invocations of the interpreter, as
a defense against denial-of-service attacks
PYTHONHASHSEED: if this variable is set to 'random', the effect is the same
as specifying the -R option: a random value is used to seed the hashes of
str, bytes and datetime objects. It can also be set to an integer
in the range [0,4294967295] to get hash values with a predictable seed.
Gibt da auch 1-2 Diskussionen auf dem Bugtracker und der Mailinglist dazu. Natürlich ist das keine Lösung die man irgendwo in einem produktionsfertigen Code verwenden sollte, aber es geht hier eindeutig um ein Anfängerprogramm das dazu benutzt wird die Sprache zu lernen und nicht gleich mit Security, Hashes und asymmetrischen Verschlüsselungen erschlagen zu werden.
@Dav1d: Doch!!1!elf! Das was Du da zitierst sind letztendlich Implementierungsdetails und es gibt Implementierungen bei denen das per Voreinstellung eingeschaltet ist. Gerade bei eindeutigen Anfängerprogrammen sollte man deutlich machen das Kryptokram nichts für Anfängerprogramme ist. Und es auch nicht dazu wird in dem man irgendwelche ”ein bisschen geheim”-Pseudosicherheit bastelt. Denn genau das führt zu dem üblichen, „hey aber das funktioniert doch!“ von Leuten die's nicht verstanden haben und landet am Ende doch immer wieder in Produktionscode, weil man das ja mal so gelernt hat. Bei solchen unsinnigen Versuchen sollte gleich der passende Einspruch kommen. Sicherheit macht man entweder richtig, oder man lässt es bleiben. Falsche Sicherheit schadet mehr als gar keine.