Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 11, 2020 13:03:20

Ruslan_Nali
Зарегистрирован: 2020-06-22
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объяснение кода на человеческом языке

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

Прикреплённый файлы:
attachment haпgman.py (3,3 KБ)

Офлайн

#2 Окт. 11, 2020 18:26:00

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Объяснение кода на человеческом языке

         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



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 11, 2020 18:26:13)

Офлайн

#3 Окт. 12, 2020 22:47:32

Ruslan_Nali
Зарегистрирован: 2020-06-22
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объяснение кода на человеческом языке

Спасибо большое за объяснение.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version