生成随机字符串,直到生成给定的字符串

这是一个生成一些随机字符串直到生成给定字符串的程序。我无法理解修复部分中的索引的想法else。如果随机生成的字符与attemptThis[i]中的字符不匹配t[i],我们是否将字符存储在右侧attemptNext?之后当它再次检查时,只有一个字符存储在attemptThis?我不知道我问的方式是否正确。我在部分中得到了陈述的想法if。但是令人else:attemptNext += t[i]困惑。带有示例的 exp 将不胜感激。(来自 gfg 的代码)


import string 

import random 

   

possibleCharacters = string.ascii_lowercase + string.digits + 

                     string.ascii_uppercase + ' ., !?;:'

  

t = "geek"

  

attemptThis = ''.join(random.choice(possibleCharacters) 

                                for i in range(len(t))) 

attemptNext = '' 

  

completed = False

iteration = 0

  

while completed == False: 

    print(attemptThis) 

      

    attemptNext = '' 

    completed = True

      

    for i in range(len(t)): 

        if attemptThis[i] != t[i]: 

            completed = False

            attemptNext += random.choice(possibleCharacters) 

        else: 

            attemptNext += t[i] 

              

    iteration += 1

    attemptThis = attemptNext 

  

print("Target matched after " +

      str(iteration) + " iterations") 


慕村225694
浏览 124回答 3
3回答

三国纷争

该for循环正在为 构建一个字符串attemptNext。如果 中的字符attemptThis等于 中的相应字符t,则将该字符添加到 的末尾attemptNext。代码写得很奇怪。在代码中,最好避免在语句的简单表达式中使用notor 。在这种情况下,它使用了. 通常最好使用相反的 ( ) 并切换每个主体。!=if-else!===

幕布斯7119047

import stringimport randoms1 = input("enter the string:")n = len(a)s2 = Nonechar = string.digits+string.ascii_uppercase+string.ascii_lowercasec = 1while s1!=s2:    s2= ''.join(random.choice(char) for i in range(n))    c+=1    print(c,s2)

慕斯709654

import randomimport stringpossibleCharacters = string.ascii_lowercase + string.digits + string.ascii_uppercase + ' ., !?;:'a='zero'c=1while a != random:      b = ''.join(random.choice(possibleCharacters)for i in range(len(a)))      c=c+1      print(b)      if b ==a:         print(a)         print("target is matched after",c," attermpts")         break#try this short and simple
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python