Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tạo chuỗi ngẫu nhiên cho đến khi khớp chuỗi cho trước bằng Python

Cho một chuỗi ký tự, nhiệm vụ của chúng ta là tạo ra các chuỗi ngẫu nhiên từ tổ hợp các ký tự, ký tự đặc biệt, số, v.v. cho đến khi thu được chuỗi trùng khớp với chuỗi đầu vào.

Ví dụ

Input: PP
Output: AK AK ... (các chuỗi ngẫu nhiên) ... PP

Thuật toán

  1. Nhập chuỗi mục tiêu.
  2. Lưu trữ tất cả các tổ hợp có thể của chữ thường, chữ hoa, chữ số và ký tự đặc biệt vào một biến.
  3. Sử dụng hai vòng lặp và hàm random để sinh ra các tổ hợp ký tự, ký hiệu.
  4. So sánh từng chuỗi ngẫu nhiên với chuỗi đầu vào; nếu ký tự tại cùng vị trí trùng khớp thì giữ lại, ngược lại sinh lại ký tự đó.
  5. Lặp lại cho đến khi chuỗi sinh ra hoàn toàn trùng khớp với chuỗi đầu vào.

Mã ví dụ

import string
import random
import time

my_possibleCharacters = string.ascii_lowercase + string.digits + string.ascii_uppercase + ' ., !?;:'
t = "ab"
my_attemptThis = ''.join(random.choice(my_possibleCharacters) for i in range(len(t)))
my_attemptNext = ''
com = False
iteration = 0

# Lặp cho đến khi hoàn thành
while com == False:
    print(my_attemptThis)
    my_attemptNext = ''
    com = True
    for i in range(len(t)):
        if my_attemptThis[i] != t[i]:
            com = False
            my_attemptNext += random.choice(my_possibleCharacters)
        else:
            my_attemptNext += t[i]
    # Tăng số lần lặp
    iteration += 1
    my_attemptThis = my_attemptNext
    time.sleep(0.1)

# Mã chính
print("Chuỗi khớp sau " + str(iteration) + " lần lặp")

Kết quả

36 G sM ,L jt g1 FN uR ;W Ja 3n 4o Gl kY NR oR Nw Lg Jt Od wN z0 J 3a 9J sF v g6 HO Ia AB Xa OX :N Wo Dp f; tt kf Er In ou bD T a0 aH aW a a8 ai ax az aN aJ ah a0 a. aq ar ax ai am a; aO as a; aS aL aQ a8 a3 ae a5 aS ao al aV ar aj aT aS ad ab
Chuỗi khớp sau 83 lần lặp