Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้างสตริงแบบสุ่มจนได้สตริงที่ต้องการด้วย Python

เมื่อได้รับสตริงหนึ่งสตริง เราสามารถสร้างสตริงต่างๆ โดยการสุ่มตัวอักษร ตัวเลข และอักขระพิเศษ จนกว่าจะได้สตริงที่ตรงกับค่าที่กำหนด

ตัวอย่าง

Input: PP
Output: AK AK . . . . . (สุ่มไปเรื่อยๆ จนได้ PP)

อัลกอริธึม

  1. รับสตริงอินพุต
  2. เก็บชุดตัวอักษรทั้งหมดที่เป็นไปได้ (ตัวพิมพ์เล็ก, ตัวพิมพ์ใหญ่, ตัวเลข, อักขระพิเศษ) ไว้ในตัวแปร
  3. ใช้ลูปสองชั้นร่วมกับฟังก์ชันสุ่ม เพื่อสร้างทุกชุดการจัดหมู่ที่เป็นไปได้
  4. เปรียบเทียบสตริงที่สุ่มได้กับสตริงอินพุต ทุกตำแหน่ง
  5. ถ้าตำแหน่งไหนตรงกัน ให้เก็บไว้ และสุ่มต่อเฉพาะตำแหน่งที่ยังไม่ตรง

โค้ดตัวอย่าง

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

# วนลูปจนกว่าจะตรงกันทั้งหมด
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]
    iteration += 1
    my_attemptThis = my_attemptNext
    time.sleep(0.1)

print("String matched after " + str(iteration) + " iterations")

ผลลัพธ์

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
String matched after 83 iterations