| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
  Python 44讲 函数IV 动动手 0  看了小甲鱼思路,发现自己思维老是走远路    
我的: 
import random 
 
def fy_shuffle(s,count): 
    n = 0 
    while count > n: 
        r = [] 
        while len(s) > 0: 
            k = random.randint(1,len(s)) 
            r.append(s[k-1]) 
            s = s[:k-1]+s[k:] 
             
        s = "".join(r) 
        n += 1 
        print(f"第{n}次打乱后的结果:{s}") 
         
    return s 
         
s = input("请输入需要打乱的序列:") 
n = int(input("请输入需要打乱的次数:")) 
 
print(f"最终结果是:{fy_shuffle(s,n)}") 
 
小甲鱼的: 
import random 
 
def fy_shuffle(x, n=1): 
    for i in range(n): 
        target = list(x) 
        result = [] 
        while target: 
            r = random.randint(0, len(target)-1) # 步骤2 
            result.append(target.pop(r)) # 步骤3 
 
        print(f"第{i+1}次打乱后的结果:{''.join(result)}") 
         
    return "".join(result) 
 
x = input("请输入需要打乱的序列:") 
n = int(input("请输入需要打乱的次数:")) 
 
print(f"最终的结果是:{fy_shuffle(x, n)}")
没有细看你的代码 但是每个需求的实现都是多种多样的,慢慢的积累经验吧,逐渐自己也能有清晰的思路。另外,小甲鱼的代码似乎也并不完美,多次打乱时,并没有考虑到与上次打乱结果的关联性,相当于每次打乱都是重新开始打乱,然后最后一次最为结果,实际上只打乱了一次,加一行代码,让上次打乱的输出成为下次打乱的输入会更好一点 
 
 
 |   
 
 
 
 |