Найти - Пользователи
Полная версия: Объяснение кода на человеческом языке
Начало » Python для новичков » Объяснение кода на человеческом языке
1
Ruslan_Nali
Добрый день!
Учусь самостоятельно по книге M.Dowsen “Программируем на Python”.
В одном из его программ для обучения возникли проблемы с пониманием кода.
Вот сам код программы “Игра Виселица”
# Виселица
#
# Классическая игра “Виселица”. Компьютер случайным образом выбирает слово,
# которое игрок должен отгадать буква за буквой. Если игрок не сумеет
# отгадать за отведенное количество попыток, на экране появится фигурка повешенного.
# импорт модуля
import random

# константы
HANGMAN = (
“”“
——
| |
|
|
|
|
|
|
|
———-
”“”,
“”“
——
| |
| O
|
|
|
|
|
|
———-
”“”,
“”“
——
| |
| O
| -+-
|
|
|
|
|
———-
”“”,
“”“
——
| |
| O
| /-+-
|
|
|
|
|
———-
”“”,
“”“
——
| |
| O
| /-+-/
|
|
|
|
|
———-
”“”,
“”“
——
| |
| O
| /-+-/
| |
|
|
|
|
———-
”“”,
“”“
——
| |
| O
| /-+-/
| |
| |
| |
| |
|
———-
”“”,
“”“
——
| |
| O
| /-+-/
| |
| |
| | |
| | |
|
———-
”“”)

MAX_WRONG = len(HANGMAN) - 1

WORDS = (“ЯБЛОКО”, “КОМПЬЮТЕР”, “УТКА”, “ТРАВА”, “ЗМЕЯ”)

# инициализация переменных
word = random.choice(WORDS) # слово для отгадывания
so_far = “-” * len(word) # по одному дефису на каждую букву, которую надо отгодать
wrong = 0 # количество ошибок, которые сделал игрок
used = # буквы, которые игрок уже предлагал

# создание основного цикла
print(“Добро пожаловать в игру ‘Виселица’. Удачи вам!”)
while wrong < MAX_WRONG and so_far != word:
print(HANGMAN)
print(“\nВы уже предлагали следующие буквы:\n”, used)
print(“\nОтгаданные вами в слове сейчас выглядит так:\n”, so_far)
# получение ответа игрока
guess = input(“\n\nВведите букву: ”)
guess = guess.upper()
while guess in used:
print(“Вы уже предлагали букву”, guess)
guess = input(“\n\nВведите букву: ”)
guess = guess.upper()
used.append(guess)
# проверка наличия буквы в слове
if guess in word:
print(“\nДа! Буква”, guess, “есть в слове!”)
# новая строка so_far с отгаданной буквой или буквами
new = “”
for i in range(len(word)):
if guess == word:
new += guess
else:
new += so_far
so_far = new
else:
print(“\nК сожалению, буквы”, guess, “нет в слове.”)
wrong += 1
# завершение игры
if wrong == MAX_WRONG:
print(HANGMAN)
print(“\nВас повесили!”)
else:
print(“\nВы отгодали!”)
print(“\nБыло загадано слово:”, word)

Мне непонятен один блок из данной программы, пожалуйста объясните мне на человеческом языке, что конкретно происходит в данном блоке кода и как изменяются в нем переменные.
Вот блок кода который мне не ясен:
new = “”
for i in range(len(word)):
if guess == word:
new += guess
else:
new += so_far
so_far = new

Заранее благодарю за помощь.
P.S. Возможно моя проблема покажется вам пустяком, но не судите строго, обучаюсь я не быстро.
PEHDOM
         new = ""                   # создаем пусутю строку , связываем ее с переменной new
        for i in range(len(word)):  # цикл для i от 0 до динны загаданого слова
            if guess == word[i]:    # если введенная буква равна букве на позиции i в загаданом слове
                new += guess        # добавляем введенную букву к строке new
            else:                   # если она не равна
                new += so_far[i]    # добавляем к строке new, букву из  so_far на позиции i
        so_far = new                # когда весь цикл прошел, переменной so_far присваиваем значение new
Ruslan_Nali
Спасибо большое за объяснение.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB