Triển khai trò chơi Python Hangman

Xây dựng và chạy trò chơi Hangman bằng Python. Khám phá việc kiểm tra bộ ký tự, bộ đếm số lần thử còn lại và thay thế chuỗi từ ẩn.

Thử trong Trình chỉnh sửa

Tổng quan

Hangman là một trò chơi đoán từ nhằm đào tạo các nhà phát triển cách xử lý chuỗi người dùng, danh sách ký tự có thể thay đổi và vòng lặp xác thực.

Công cụ chọn một từ ngẫu nhiên từ danh sách được xác định trước. Nó hiển thị cho người chơi các khoảng trống phù hợp với độ dài của từ. Với mỗi lần đoán, chữ cái sẽ được tiết lộ hoặc số lỗi còn lại giảm đi một.

Trong Python, chúng tôi quản lý luồng trò chơi này bằng cách sử dụng danh sách ký tự thay vì chuỗi bất biến, cho phép tiết lộ nhanh chóng tại chỗ trong khi vẫn theo dõi các ký tự đã đoán trước đó để tránh bị phạt.

Đầu ra mã & thực thi

Tập lệnh trò chơi Hangman dòng lệnh tiêu chuẩn có đầu vào phiên mô phỏng.

import random

def play_hangman():
    word_bank = ["python", "compiler", "terminal", "debugger", "variable"]
    word = random.choice(word_bank)
    guessed_word = ["_"] * len(word)
    guessed_letters = set()
    attempts_remaining = 6
    
    print("Welcome to Hangman!")
    print(f"Word length: {' '.join(guessed_word)}")
    
    # Mocking guess inputs for deterministic run
    mock_guesses = ["e", "o", "a", "t", "r", "n", "i", "m", "p", "c", "l"]
    
    for guess in mock_guesses:
        if attempts_remaining <= 0 or "_" not in guessed_word:
            break
            
        print(f"\nGuessing letter: '{guess}'")
        if guess in guessed_letters:
            print("You already guessed that!")
            continue
            
        guessed_letters.add(guess)
        
        if guess in word:
            for idx, char in enumerate(word):
                if char == guess:
                    guessed_word[idx] = guess
            print(f"Correct! Word state: {' '.join(guessed_word)}")
        else:
            attempts_remaining -= 1
            print(f"Incorrect! Attempts remaining: {attempts_remaining}")
            
    if "_" not in guessed_word:
        print(f"\nCongratulations! You guessed the word '{word}'!")
    else:
        print(f"\nGame Over! The word was '{word}'.")

# Seed random to ensure output matches the word 'compiler'
random.seed(35)
play_hangman()
Đầu ra thiết bị đầu cuối
Welcome to Hangman!
Word length: _ _ _ _ _ _ _ _

Guessing letter: 'e'
Correct! Word state: _ _ _ _ _ _ e _

Guessing letter: 'o'
Correct! Word state: _ o _ _ _ _ e _

Guessing letter: 'a'
Incorrect! Attempts remaining: 5

Guessing letter: 't'
Incorrect! Attempts remaining: 4

Guessing letter: 'r'
Correct! Word state: _ o _ _ _ l e r
... (guesses continue)
Congratulations! You guessed the word 'compiler'!

Triển khai từng bước

  • Học các thuật toán phân tích chuỗi có điều kiện
  • Theo dõi trạng thái bằng cách sử dụng các bộ để tra cứu lịch sử duy nhất
  • Xây dựng trò chơi giáo dục thiết bị đầu cuối tương tác

Câu hỏi thường gặp

Tại sao nên sử dụng một bộ để đoán các chữ cái?

Việc kiểm tra tư cách thành viên trong các bộ Python chạy trong thời gian trung bình O(1), trong khi các danh sách yêu cầu thời gian O(n). Điều này đảm bảo tra cứu nhanh hơn khi xác minh các dự đoán trước đó.

Làm cách nào tôi có thể tải danh sách từ lớn hơn?

Bạn có thể tải hàng nghìn từ bằng cách đọc từ tệp văn bản bằng hàm `open()` của Python hoặc tìm nạp chúng một cách linh hoạt bằng cách sử dụng khung yêu cầu API web.

Chủ đề liên quan