Trình tạo từ Python từ các chữ cái

I'm essentially working on a project where a user inputs a word from a list of terms, and the computer randomly jumbles it. There is only one issue: I don't want to always have to add numerous words to the list. As a result, I'm wondering if there is a method to import numerous random words, so that even I wouldn't know what they were and I could still enjoy the game. This is how the entire programme is coded, and I only used 6 words:
import random

WORDS = ("python", "jumble", "easy", "difficult", "answer",  "xylophone")
word = random.choice(WORDS)
correct = word
jumble = ""
while word:
    position = random.randrange(len(word))
    jumble += word[position]
    word = word[:position] + word[(position + 1):]
print(
"""
      Welcome to WORD JUMBLE!!!

      Unscramble the leters to make a word.
      (press the enter key at prompt to quit)
      """
      )
print("The jumble is:", jumble)
guess = input("Your guess: ")
while guess != correct and guess != "":
    print("Sorry, that's not it")
    guess = input("Your guess: ")
if guess == correct:
    print("That's it, you guessed it!\n")
print("Thanks for playing")

input("\n\nPress the enter key to exit")

Nếu ai đó có thể giúp đỡ sẽ thực sự đánh giá cao sự giúp đỡ

Tôi đã tìm thấy một câu hỏi trong trò chơi Trình tạo từ ngẫu nhiên trên trang hỏi đáp StackOverflow. Câu hỏi chứa một phiên bản nhỏ có thể chạy được của mã trò chơi

Câu hỏi của tác giả là. nơi để tìm danh sách từ tiếng Anh lớn trên internet?

Việc có được danh sách lớn các từ này sẽ bổ sung giá trị chơi lại trò chơi tốt cho trò chơi và có khả năng khiến nó trở nên hấp dẫn hơn rất nhiều đối với người dùng cuối

Tôi nghĩ rằng những câu hỏi mã nhỏ và dễ đọc của nó chứa nhiều điều thú vị mà tôi có thể mở rộng. Tôi có thể sử dụng nó để tìm hiểu mức độ ngẫu nhiên của ngôn ngữ python để người dùng tương tác với. Tôi cũng có thể sử dụng nó để mở rộng các tính năng khác của trò chơi xung quanh danh sách từ để làm cho nó mạnh mẽ hơn.  

Câu hỏi StackOverflow có tên Trình tạo từ ngẫu nhiên- Python

Trò chơi chữ ví dụ tạo động lực

Đây là mã có thể chạy được của trò chơi

import random
 
WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone")
word = random.choice(WORDS)
correct = word
jumble = ""
while word:
    position = random.randrange(len(word))
    jumble += word[position]
    word = word[:position] + word[(position + 1):]
    print( """ Welcome to WORD JUMBLE!!! Unscramble the leters to make a word. (press the enter key at prompt to quit) """ )
    print("The jumble is:", jumble)
    guess = input("Your guess: ")
 
while guess != correct and guess != "":
    print("Sorry, that's not it")
    guess = input("Your guess: ")
if guess == correct:
    print("That's it, you guessed it!\n")
    print("Thanks for playing")
    input("\n\nPress the enter key to exit")

Bạn có thể chơi tương tác tại đây

Trò chơi chọn ngẫu nhiên một từ trong danh sách. Sau đó, nó xáo trộn hoặc xáo trộn từ bằng cách thay đổi thứ tự các chữ cái trong đó. Mã thực hiện điều này bằng cách chọn ngẫu nhiên một số bằng 0 với độ dài của từ -1. Điều này sau đó được sử dụng như một chỉ số. Từ đó là   Người dùng trò chơi có nhiệm vụ tìm ra từ chính xác là gì khi các chữ cái được sắp xếp lại.  

Sau đó, người dùng sắp xếp lại các chữ cái để tạo thành một từ. Người dùng nhập dự đoán này bằng cách sử dụng bàn phím và nhấn enter. Nếu người dùng sắp xếp lại từ không chính xác thì họ được yêu cầu tiếp tục đoán từ đúng. Khi người dùng đoán đúng câu trả lời là python thì chương trình sẽ in "thank you for playing". Trò chơi kết thúc khi người dùng nhấn

import random

WORDS = ("python", "jumble", "easy", "difficult", "answer",  "xylophone")
word = random.choice(WORDS)
correct = word
jumble = ""
while word:
    position = random.randrange(len(word))
    jumble += word[position]
    word = word[:position] + word[(position + 1):]
print(
"""
      Welcome to WORD JUMBLE!!!

      Unscramble the leters to make a word.
      (press the enter key at prompt to quit)
      """
      )
print("The jumble is:", jumble)
guess = input("Your guess: ")
while guess != correct and guess != "":
    print("Sorry, that's not it")
    guess = input("Your guess: ")
if guess == correct:
    print("That's it, you guessed it!\n")
print("Thanks for playing")

input("\n\nPress the enter key to exit")
0 để thoát khỏi trò chơi

Trong dòng mã thứ hai, tác giả của câu hỏi chỉ cần kéo một vài từ được mã hóa cứng vào câu trả lời. Tôi đã tìm thấy một số danh sách từ, tối ưu hóa việc ngẫu nhiên hóa và truy xuất danh sách từ. Tôi cũng đã làm sạch danh sách từ để tìm bất kỳ sự mâu thuẫn nào về loại hoặc định dạng.

Cách lấy danh sách từ

Câu hỏi StackOverflow về nơi tìm danh sách từ có nhiều câu trả lời. Câu trả lời được tác giả đánh dấu là câu trả lời, chứa danh sách 1000 từ trong danh sách từ được gọi là danh sách từ – MIT. Tác giả của câu trả lời đã chỉ ra cách đọc danh sách từ bằng cách yêu cầu web hoặc đọc từ ổ cứng.  

Tác giả đã không tích hợp điều này với mã mà câu hỏi StackOverflow. Vì điều này không được thực hiện, tôi đã quyết định triển khai chức năng yêu cầu web lấy tài nguyên danh sách từ và đọc chúng và chức năng tệp IO.   

Một số danh sách từ có trong các tệp văn bản thuần túy và các danh sách khác là từ các tệp chứa loại byte

Có một bộ sưu tập các danh sách từ ở đây

  • Tôi đã sử dụng danh sách 100 từ trong danh sách từ – MIT
  • Dữ liệu Corpus ngôn ngữ tự nhiên. Dữ Liệu Đẹp – Danh sách từ này có dữ liệu từ danh sách từ được sử dụng nhiều nhất từ ​​2008 đến 2009. Các danh sách từ này cũng hiển thị số lần các từ được sử dụng.  
  • Đây là một danh sách tốt cho các cấp lớp trẻ em danh sách từ đánh vần từ lớp hai cho đến lớp tám. Điều này có thể hữu ích nếu trò chơi được thiết kế cho trẻ em. Tôi quyết định đặt mã này làm mã mặc định để tôi có thể dễ dàng đoán và kiểm tra xem các từ đó là gì

Tôi đã thấy một vài danh sách từ khác mà tôi đã chọn không sử dụng vì chúng yêu cầu tìm kiếm từ web, là độc quyền hoặc có vẻ không toàn diện. Dường như có những danh sách từ hay khác trên Kaggle

Thêm giá trị cho trò chơi

Một trong những phần thú vị nhất khi trải qua bài tập mã hóa này là thêm các tính năng bổ sung vào trò chơi. Tôi đã thêm mã truy xuất danh sách từ. Tôi cũng đã thêm một tính năng thực thi một mức độ ngẫu nhiên nhất định mà tôi xác định là cần thiết để khiến từ trở nên khó hiểu.   

Tôi cũng đã thêm giá trị cho trò chơi bằng cách

  • Thêm cài đặt trò chơi
    • Cài đặt 
      import random
      
      WORDS = ("python", "jumble", "easy", "difficult", "answer",  "xylophone")
      word = random.choice(WORDS)
      correct = word
      jumble = ""
      while word:
          position = random.randrange(len(word))
          jumble += word[position]
          word = word[:position] + word[(position + 1):]
      print(
      """
            Welcome to WORD JUMBLE!!!
      
            Unscramble the leters to make a word.
            (press the enter key at prompt to quit)
            """
            )
      print("The jumble is:", jumble)
      guess = input("Your guess: ")
      while guess != correct and guess != "":
          print("Sorry, that's not it")
          guess = input("Your guess: ")
      if guess == correct:
          print("That's it, you guessed it!\n")
      print("Thanks for playing")
      
      input("\n\nPress the enter key to exit")
      1 và
      import random
      
      WORDS = ("python", "jumble", "easy", "difficult", "answer",  "xylophone")
      word = random.choice(WORDS)
      correct = word
      jumble = ""
      while word:
          position = random.randrange(len(word))
          jumble += word[position]
          word = word[:position] + word[(position + 1):]
      print(
      """
            Welcome to WORD JUMBLE!!!
      
            Unscramble the leters to make a word.
            (press the enter key at prompt to quit)
            """
            )
      print("The jumble is:", jumble)
      guess = input("Your guess: ")
      while guess != correct and guess != "":
          print("Sorry, that's not it")
          guess = input("Your guess: ")
      if guess == correct:
          print("That's it, you guessed it!\n")
      print("Thanks for playing")
      
      input("\n\nPress the enter key to exit")
      2 để kiểm soát kích thước của từ mà người dùng có thể đoán
    • Các từ trong tệp là một lá cờ để quyết định xem danh sách từ có phải từ tệp hay từ một yêu cầu web hay không
    • Người dùng cũng có thể chọn
#GAME SETTINGS
MINIMUM_WORD_LENGTH = 5
MAXIMUM_WORD_LENGTH = 7
WORDS_FROM_FILE = False
WORD_LIST_TO_USE = "THIRD_GRADE_WORDS"
  • Tạo các chức năng để mã dễ kiểm tra hơn. Điều này có thể được nhìn thấy trong suốt mã
  • Đã dọn sạch các từ trong danh sách từ để có thể đọc được nếu chúng là byte hoặc chuỗi
    • Danh sách từ MIT này ở định dạng tệp mà khi đọc ở dạng byte. danh sách từ khác đã được trong chuỗi. Mã đã được thay đổi để nó có thể chuyển đổi từ ở dạng byte thành một chuỗi để nó có thể bị xáo trộn. Tôi đã sửa đổi mã để có các chức năng riêng biệt mà tôi có thể dễ dàng kiểm tra để chuyển đổi đúng chuỗi thành byte
    • Một số mã có thêm ký tự như số hoặc ký tự phụ. Tôi đã sử dụng một biểu thức chính quy để xóa các ký tự thừa này
def format_words(words):
    if len(words) > 1:
        words_pattern = '[a-z]+'
        if type(words[0]) is bytes:
            words = [re.findall(words_pattern, word.decode('utf-8'), flags=re.IGNORECASE)[0] for word in words]
        else:
            words = [re.findall(words_pattern, word, flags=re.IGNORECASE)[0] for word in words]
    words = [word for word in words if len(word) >= MINIMUM_WORD_LENGTH and len(word) <= MAXIMUM_WORD_LENGTH]
   
    return words
  • Giúp dễ dàng trao đổi giữa các danh sách từ bằng cách thêm từ điển
 if WORDS_FROM_FILE:
        words = get_words_from_file(WORD_LIST_FILE[WORD_LIST_TO_USE])
    else:
        words = get_word_list_from_web(WORD_LIST_WEB[WORD_LIST_TO_USE])
    words = format_words(words)
  • Đảm bảo rằng từ đó được sắp xếp lộn xộn ở một mức độ khiến cho việc đoán trở nên thú vị
    • Tôi đã thêm một mã so khớp trình tự thực thi một tỷ lệ phần trăm ngẫu nhiên nhất định trong từ. Nó đã làm như vậy bằng cách lặp qua mã
    • Đã có mã được thêm vào để đảm bảo rằng từ đó bị xáo trộn ở một mức độ nhất định. Nếu không thì từ đó lại lộn xộn. Đây là cách SequnceMatcher hoạt động SequenceMatcher trong Python. Một tiếp giáp dài nhất thân thiện với con người &…. của Nikhil Jaiswal. Hướng tới khoa học dữ liệu
def generate_unique_shuffled_word(word):
    while True:
        shuffled_word = shuffle_word(word)
        simliar_percent = SequenceMatcher(None, shuffled_word, word).ratio()
 
        if MINIMUM_WORD_LENGTH >= 5 and simliar_percent <= 0.5:
            break
 
    return shuffled_word

Mã đầy đủ

________số 8

Phiên bản mã ở đây trên GitHub

Phần kết luận

Tôi đã học về Python, các danh sách từ khác nhau và triển khai tính ngẫu nhiên cho người dùng. Quan trọng nhất, tôi đã rất vui khi mã hóa nó

Tôi hy vọng bạn cũng vui vẻ khi đọc và tìm hiểu về nó, và bạn cũng đã học được điều gì đó từ đoạn mã đơn giản này

Làm cách nào để tạo các từ ngẫu nhiên từ danh sách các chữ cái trong python?

Cách tạo chuỗi ngẫu nhiên trong Python .
Nhập chuỗi và mô-đun ngẫu nhiên. .
Sử dụng hằng chuỗi ascii_lowercase. .
Quyết định độ dài của một chuỗi. .
Sử dụng hàm for loop và random choice() để chọn ký tự từ nguồn. .
Tạo mật khẩu ngẫu nhiên

Có cách nào để tạo các từ ngẫu nhiên trong python không?

Để tạo một từ ngẫu nhiên từ hệ thống tệp. .
Mở tệp ở chế độ đọc
sử dụng str. splitlines() hoặc str. split() để chia nội dung của tệp thành một danh sách
Sử dụng ngẫu nhiên. lựa chọn () để chọn bao nhiêu từ ngẫu nhiên từ danh sách nếu cần