Начнем с верхней:
(not (letter.lower() in word) or not(letter.lower() in guessed_letters)) and letter != ' '
Это два условия, разделенные and
:
a = (not (letter.lower() in word) or not(letter.lower() in guessed_letters))
b = letter != ' '
result = a and b
Смысл этого b
довольно очевидна, так давайте дадим ему лучшее название:
a = (not (letter.lower() in word) or not(letter.lower() in guessed_letters))
not_space = letter != ' '
result = a and not_space
Но вы все еще озадачены этим a
, поэтому давайте разложим его так же. Это выражение в скобках, что то же самое, что внутри скобок, так что давайте пропустить эту часть и перейти право:
x = not (letter.lower() in word)
y = not (letter.lower() in guessed_letters)
a = x or y
Теперь Они должны быть достаточно малы, чтобы разобрать в вашей голове. Если нет, вы можете сделать еще один шаг, но обратите внимание, что вы также можете просто добавить несколько вызовов print
, например print(letter, x, y)
, и запустить программу и посмотреть, поможет ли это.
Во всяком случае, давайте дадим им имена:
not_found = not (letter.lower() in word)
not_guessed = not (letter.lower() in guessed_letters)
new_letter = not_found or not_guessed
not_space = letter != ' '
result = new_letter and not_space
И теперь вы сделали: вы проверяете, что письмо это новое письмо (ни в слове, ни не догадывался), а не пространство ,
Если вы хотите, чтобы принять это до предела, это будет выглядеть примерно так: *
a1a1a1a = letter.lower
a1a1a1 = a1a1a1a()
a1a1a = a1a1a1 in word
a1a1 = (a1a1a)
a1a = not a1a1
a1b1a1a = letter.lower
a1b1a1 = a1b1a1a()
a1b1a = a1b1a1 in guessedletters
a1b1 = (a1b1a)
a1b = not a1b1
a1 = a1a or a1b
a = (a1)
b = letter != ' '
result = a and b
И тогда вы можете идти шаг за шагом, устраняя те, которые не делают ничего, что дает промежуточный имена для значимых с самого низкого уровня вверх и т. д.
Но в реальной жизни вы никогда не зашли так далеко, если бы не пытались интерпретировать код вручную, чтобы понять определение языка или что-то в этом роде.
* На самом деле, если вы действительно хотите разбить его так, как это делает Python, вы можете попросить Python сделать это за вас, используя модуль ast
.
В какой части конкретно у вас есть вопрос? – AtAFork
«Разные, чем учили» имеет смысл, если вы расскажете нам, чему вас учили. –