你好!你的函数只会打印一次结果,是因为在循环中使用了错误的逻辑。这里有几个问题需要注意:
1. 你在定义`list2`时使用了`list2 = list1`,这实际上是将`list2`与`list1`指向同一个列表对象。也就是说,当你改变`list1`的时候,`list2`也会被改变。所以,你的代码中并没有保存下初始的`letter`,而是一直在对同一个对象进行操作。
2. 在每次循环中,你使用`while`循环来遍历`list1`中的元素,并在满足条件时将元素从`list1`中移除。但是,在第二次循环中,`list1`已经是空列表了,所以循环不会再执行,导致只有第一次循环有结果。
为了解决这个问题,你可以将`list2`创建为一个新的列表,并且在每次循环中重新赋值给`list1`,这样就可以保留初始的`letter`,并在每次循环中都从初始的列表开始。
下面是修改后的代码:
import random
def fy_shuffle(letter, second: int):
list1 = list(letter)
net_list = []
for each in range(second):
list2 = list(list1)
while list1:
count = random.randrange(len(list1))
if list1 not in net_list:
net_list.append(list1[count])
list1.pop(count)
list1 = list2
print(''.join(net_list), end='')
net_list = []
letter = input('请输入字母:')
fy_shuffle(letter, 3)
这样,你就可以在每次循环中打印不同的结果了。希望能帮到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |