I have a simple Python function where I'm swapping values in a string. I'm doing this by generating a pseudorandom integer, then swapping it with the next index or previous index to avoid out of bounds exceptions.
However, I am getting TypeError: string indices must be integers. When I add a print statement to check the type of the index that is generated by the secrets.randbelow() function, it returns class 'int', whereas I would expect type 'int'. Is this what's causing the error?
Function
import secrets as random
def shuffle_sequence(sequence):
sequence_len = int(len(sequence))
for x in range(0, sequence_len):
swap_index = random.randbelow(sequence_len)
next_index = 0
if swap_index != sequence_len:
next_index = swap_index + 1
else:
next_index = swap_index - 1
sequence[swap_index, next_index] = sequence[next_index, swap_index]
x += 1
return sequence
I even adding an int conversion to the first line of the function hoping that would help, but it's returning the same class of int, which is expected.
To clarify, sequence is a string of letters, numbers, and symbols.
Aucun commentaire:
Enregistrer un commentaire