练习1
自己的原始代码 (比较复杂)
1.没有把字符串转为列表,所以不能利用pop
# 打乱的次数
for i in range(1,4):
s = "ABCDEF"
n = 4
list = []
l = len(s)
while l > 0:
k = random.randint(1, l)
list.append(s[k-1])
s = s.replace(s[k-1],"")
l -= 1
print(f"第{i}次打乱后的结果:",list)
i += 1
print("最终打乱结果:",list)
封装改进后的代码 (清晰简明)
import random
# 函数fy_shuffle
def fy_shuffle(s,n=1):
for i in range(n):
# 把传入的字符串转为 列表
target = list(s)
# 定义一个存放的空列表
result = []
# 当数字中有值时
while target:
# 随机取值 在数组的长度中随机
k = random.randint(0,len(target)-1)
# 新的列表中添加 索引k的元素,并且在数组target中删除该元素
result.append(target.pop(k))
# 输出打乱的结果
print(f"第{i+1}次打乱的结果:","".join(result))
return "".join(result)
# 两个参数 1. 传入的字符串 2.打乱的次数(至少1次)
s = input("请输入需要打乱的字符串")
n = int(input("请输入需要打乱的次数"))
print(f"最终打乱的结果:{fy_shuffle(s,n)}")