Ich bin ein Anfänger bei der Programmierung und ich versuche herauszufinden, wie List-Methoden arbeiten. Ich habe einen kleinen String Scrambler und Decoder für Übungszwecke geschrieben.Verwenden von .insert auf leere Listen
import random
sliced = []
keyholder = []
scrambled = []
decoded = []
def string_slicer(string):
i = 0
while i < len(string):
sliced.append(string[i])
i += 1
def string_scrambler(string):
string = string_slicer(string)
a = 0
while len(scrambled) != len(sliced):
value = len(sliced) - 1
key = random.randint(0,value)
if key in keyholder:
continue
else:
scrambled.append(sliced[key])
keyholder.append(key)
continue
def string_decoder():
x = 0
for item in keyholder:
decoded.insert(keyholder[x], scrambled[x])
x += 1
string_scrambler('merhaba')
string_decoder()
print sliced
print keyholder
print scrambled
print decoded
Wenn ich den string_scrambler() bin Tests funktioniert gut, aber die string_decoder() gibt zufällige Ergebnisse. Hier sind einige Beispiele:
C:\Python27\Exercises>python scrambler.py
['m', 'e', 'r', 'h', 'a', 'b', 'a']
[2, 6, 0, 1, 3, 5, 4]
['r', 'a', 'm', 'e', 'h', 'b', 'a']
['m', 'e', 'r', 'h', 'a', 'a', 'b']
C:\Python27\Exercises>python scrambler.py
['m', 'e', 'r', 'h', 'a', 'b', 'a']
[4, 5, 1, 0, 3, 2, 6]
['a', 'b', 'e', 'm', 'h', 'r', 'a']
['m', 'a', 'r', 'e', 'h', 'b', 'a']
C:\Python27\Exercises>python scrambler.py
['m', 'e', 'r', 'h', 'a', 'b', 'a']
[1, 4, 5, 2, 3, 0, 6]
['e', 'a', 'b', 'r', 'h', 'm', 'a']
['m', 'e', 'a', 'r', 'h', 'b', 'a']
Ich denke, versuchen einige Elemente in eine leere Liste mit .Insert Methode hinzufügen kann dieses Problem verursachen. Aber ich kann nicht genau herausfinden warum.
warum? Ich meine, da der Schlüssel immer eine Zahl sein wird, die einem Index entspricht, sehe ich keinen Grund, Indizes nicht einfach zu verwenden. –
@AdamSmith Ich habe gerade meine Antwort mit dem Codebeispiel bearbeitet. –
Huh? Dies hat meinen Kommentar nicht angesprochen –