import random
string = "This is a string"
string = list(string)
jumbled = ""
print(string)
for length in range(0, len(string)):
jumbled += string.pop(random.randint(0, len(string) - 1))
print(jumbled)
但是输出是:
3
36
365
3652
36528
36528
36528
36528
36528 7
36528 71
36528 71
36528 71 0
36528 71 0
36528 71 0 4
36528 71 0 49
我希望它是一条规则的线(就像这句话(,而不是这个wierd三角形的形式。
谢谢,Synthx
最简单的修复方法是将print语句移出循环:
import random
string = "This is a string"
string = list(string)
jumbled = ""
print(string)
for length in range(0, len(string)):
jumbled += string.pop(random.randint(0, len(string) - 1))
print(jumbled)
但是对于许多常见的操作,python有更简洁/高效的语法。更好的解决方案可能是:
import random
my_string = "This is a string"
my_str_list = list(my_string)
random.shuffle(my_str_list) # does shuffling in-place, should be fast
print("".join(my_str_list))
# prints: sstsagThii i rn