Добрый день!
Учусь самостоятельно по книге 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. Возможно моя проблема покажется вам пустяком, но не судите строго, обучаюсь я не быстро.