扰乱单词时形成半金字塔(python)(初学者)


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

最新更新