Code Explainer | Python

Language Learning Game in Python

This Python script is a language learning game that tests users' ability to translate English words into Russian, featuring adjustable difficulty levels, tracking of correct answers, and performance-based ranking.


Empty image or helper icon

Prompt

#Создаем словари
words_easy = { 
    "family":"семья", 
    "hand": "рука", 
    "people":"люди", 
    "evening": "вечер",
    "minute":"минута", 
}
words_medium = { 
    "believe":"верить", 
    "feel": "чувствовать", 
    "make":"делать", 
    "open": "открывать",
    "think":"думать", 
}
words_hard   = { 
    "rural":"деревенский", 
    "fortune": "удача", 
    "exercise":"упражнение", 
    "suggest": "предлагать",
    "except":"кроме", 
}
levels = {
   0: "Нулевой", 
   1: "Так себе", 
   2: "Можно лучше", 
   3: "Норм", 
   4: "Хорошо", 
   5: "Отлично",
}
words = {}
answers = {}


#Создаем функцию выбора пользователем уровня сложности
def choose_difficulty():
    user_input_level = input("Выберите уровень сложности.\nЛегкий, средний, сложный.\n").lower()
    if user_input_level == "легкий" or user_input_level == "Легкий":
        print("Выбран легкий уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_easy
    elif user_input_level == "сложный":
        print("Выбран сложный уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_hard
    else:
        print("Выбран средний уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_medium
    return words


#Создаем функцию логики вопросов пользователю и контроль ответов на вопросы
def play_game(words):
    for key, value in words.items():
        print(f"{key.title()}, {len(value)} букв, начинается на {value[0]}...")
        user_input = input()
        if user_input == words[key]:
            print(f"Верно. {key.title()} — это {value}.")
            answers[key] = True
        else:
            print(f"Неверно. {key.title()} — это {value}.")
            answers[key] = False
    return answers


#Создаем функцию вывода правильных и неправильных ответов
def display_results(answers):
    print("Правильно отвеченные слова:")
    for key, value in answers.items():
        if value:
            print(key)
    print("Неправильно отвеченные слова:")
    for key, value in answers.items():
        if not value:
            print(key)
    return answers


#Создаем функцию подсчета ранга пользователя на основе словаря ответов
def calculate_rank(answers):
    count = 0
    for key, value in answers.items():
        if value == True:
            count += 1
    print(f"Ваш ранг:\n{levels[count]}")


#Вызов функции
words = choose_difficulty()
answers = play_game(words)
display_results(answers)
calculate_rank(answers)

Answer

Code Analysis and Explanation

Overview

The provided code is a Python script designed for a simple language learning game. The game allows the user to choose a difficulty level and then tests their knowledge by asking them to translate words from English to Russian. It also keeps track of correct and incorrect answers and provides a ranking based on performance.

Detailed Explanation

Initialization of Dictionaries

The code begins by creating several dictionaries:

# Creating dictionaries
words_easy = { 
    "family":"семья", 
    "hand": "рука", 
    "people":"люди", 
    "evening": "вечер",
    "minute":"минута", 
}
words_medium = { 
    "believe":"верить", 
    "feel": "чувствовать", 
    "make":"делать", 
    "open": "открывать",
    "think":"думать", 
}
words_hard   = { 
    "rural":"деревенский", 
    "fortune": "удача", 
    "exercise":"упражнение", 
    "suggest": "предлагать",
    "except":"кроме", 
}
levels = {
   0: "Нулевой", 
   1: "Так себе", 
   2: "Можно лучше", 
   3: "Норм", 
   4: "Хорошо", 
   5: "Отлично",
}
words = {}
answers = {}
  • words_easy: Contains basic English words as keys with their Russian translations as values.
  • words_medium: Contains intermediate-level words.
  • words_hard: Contains more difficult words.
  • levels: Maps numeric scores to corresponding ranks (in Russian).
  • words and answers: Initialized as empty dictionaries for later use.

Function to Choose Difficulty

def choose_difficulty():
    user_input_level = input("Выберите уровень сложности.\nЛегкий, средний, сложный.\n").lower()
    if user_input_level == "легкий" or user_input_level == "Легкий":
        print("Выбран легкий уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_easy
    elif user_input_level == "сложный":
        print("Выбран сложный уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_hard
    else:
        print("Выбран средний уровень сложности. Мы предложим 5 слов, подберите перевод")
        words = words_medium
    return words
  • choose_difficulty():
    • Prompts the user to select a difficulty level: easy, medium, or hard.
    • Depending on the choice, assigns the corresponding dictionary (words_easy, words_medium, or words_hard) to the variable words.
    • Returns the chosen dictionary.

Function to Handle the Game Logic

def play_game(words):
    for key, value in words.items():
        print(f"{key.title()}, {len(value)} букв, начинается на {value[0]}...")
        user_input = input()
        if user_input == words[key]:
            print(f"Верно. {key.title()} — это {value}.")
            answers[key] = True
        else:
            print(f"Неверно. {key.title()} — это {value}.")
            answers[key] = False
    return answers
  • play_game(words):
    • Iterates over the word pairs in the selected dictionary.
    • For each word, prints a hint (word length and first letter of the translation).
    • Captures the user's input and checks if it matches the correct translation.
    • Records the correctness of the answer in the answers dictionary.
    • Returns the answers dictionary.

Function to Display Results

def display_results(answers):
    print("Правильно отвеченные слова:")
    for key, value in answers.items():
        if value:
            print(key)
    print("Неправильно отвеченные слова:")
    for key, value in answers.items():
        if not value:
            print(key)
    return answers
  • display_results(answers):
    • Prints the words the user answered correctly.
    • Prints the words the user answered incorrectly.
    • Returns the answers dictionary.

Function to Calculate and Display User Rank

def calculate_rank(answers):
    count = 0
    for key, value in answers.items():
        if value == True:
            count += 1
    print(f"Ваш ранг:\n{levels[count]}")
  • calculate_rank(answers):
    • Counts the number of correct answers.
    • Maps the count to a rank using the levels dictionary.
    • Prints the user's rank.

Main Execution Flow

# Function calls
words = choose_difficulty()
answers = play_game(words)
display_results(answers)
calculate_rank(answers)
  • Calls the functions in sequence to execute the game:
    • choose_difficulty() to determine the difficulty level and words to be used.
    • play_game(words) to conduct the quiz and collect answers.
    • display_results(answers) to show the results.
    • calculate_rank(answers) to determine and display the user's rank.

Key Concepts

  1. Dictionaries in Python: Used to store pairs of keys and values.
  2. Conditional Statements: Used to branch the flow of execution based on the user's input.
  3. Looping through Dictionary Items: Essential for iterating over key-value pairs in dictionaries.
  4. User Input Handling: Facilitates interaction with the user, capturing their responses.
  5. Function Definitions and Calls: Organize the code into reusable blocks that structure the main logic flow.

Additional Examples

Example of Dictionary Usage

Consider a simpler example of using dictionaries to store and retrieve data:

fruits = {
    "apple": "яблоко",
    "banana": "банан",
    "cherry": "вишня"
}

for english, russian in fruits.items():
    print(f"The Russian word for {english} is {russian}.")

Example of Conditional Statements

A simple if-else example for guiding user input:

user_input = input("Enter 'yes' or 'no': ").lower()

if user_input == 'yes':
    print("You entered yes.")
elif user_input == 'no':
    print("You entered no.")
else:
    print("Invalid input.")

These additional examples illustrate basic concepts similar to those used in the main code, further enhancing understanding. For more advanced learning and practical applications, consider exploring the Enterprise DNA Platform.

Create your Thread using our flexible tools, share it with friends and colleagues.

Your current query will become the main foundation for the thread, which you can expand with other tools presented on our platform. We will help you choose tools so that your thread is structured and logically built.

Description

This Python script is a language learning game that tests users' ability to translate English words into Russian, featuring adjustable difficulty levels, tracking of correct answers, and performance-based ranking.