Генерация случайных строк до тех пор, пока не будет сгенерирована заданная строка - PullRequest
0 голосов
/ 04 августа 2020

Это программа для генерации некоторой случайной строки до тех пор, пока не будет сгенерирована данная строка. Я не могу понять, как исправить индекс в части else. Если случайно сгенерированный символ в attemptThis[i] не совпадает с символом в t[i], мы сохраняем символ в attemptNext право? И после этого при повторной проверке в attemptThis? Сохраняется только один символ? Я не знаю, правильно ли я спрашиваю. Я получил представление об утверждениях в части if. Но else:attemptNext += t[i] сбивает с толку. Будем очень признательны за опыт с примером. (код из 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") 

1 Ответ

1 голос
/ 04 августа 2020

for l oop строит строку для attemptNext. Если символ в attemptThis равен соответствующему ему символу в t, то этот символ добавляется в конец attemptNext.

Код написан странно. В коде рекомендуется избегать not или != в простом выражении в операторе if-else. В данном случае он использовал !=. Часто лучше использовать противоположное (==) и менять тела каждого.

...