🐍 НайдитС ΠΈ ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ошибки Π² ΠΊΠΎΠ΄Π΅ Π½Π° Python: ΠΎΡ‚Π»Π°Π΄ΠΊΠ° с IDLE

ВсС Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки – Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Π° Python ΠΈ IDLE ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΈΡ… ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ публикуСтся с сокращСниями, Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ David Amos.

ВыявлСниС ошибок называСтся Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³ΠΎΠΌ, Π° Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ – ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈΡ… появлСния инструмСнт. Π£ΠΌΠ΅Π½ΠΈΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π² ΠΊΠΎΠ΄Π΅ – Π²Π°ΠΆΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ программиста, Π½Π΅ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ ΠΈΠΌ.

IDLE (Integrated Development and Learning Environment) – кроссплатформСнная интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ обучСния для Python, созданная Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ управлСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ интСрфСйсом ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² IDLE являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ управлСния (Debug Control window). ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π±Ρ€Π°Π² Π² мСню ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡƒΠ½ΠΊΡ‚ Debugβ†’Debugger.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли ΠΎΡ‚Π»Π°Π΄ΠΊΠ° отсутствуСт Π² строкС мСню, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ находится Π² фокусС.

Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ [DEBUG ON].

ΠžΠ±Π·ΠΎΡ€ ΠΎΠΊΠ½Π° управлСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, напишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π΅Π· ошибок. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

for i in range(1, 4):
    j = i * 2
    print(f"i is {i} and j is {j}")

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ всС, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 – Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ.

Окно ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ панСль Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π° содСрТит сообщСниС:

> '__main__'.<module>(), line 1: for i in range(1, 4):

Π Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ: ΠΊΠΎΠ΄ for i in range(1, 4): Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½, Π° '__main__'.module() сообщаСт, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ находимся Π² основном Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

НиТС ΠΏΠ°Π½Π΅Π»ΠΈ стСка находится панСль Locals, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСчислСны нСпонятныС Π²Π΅Ρ‰ΠΈ: __annotations__, __builtins__, __doc__ ΠΈ Ρ‚. Π΄. – это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ систСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. По ΠΌΠ΅Ρ€Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π² этом ΠΎΠΊΠ½Π΅, ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π² отслСТивании ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° располоТСны ΠΏΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ: Go, Step, Over, Out ΠΈ Quit – ΠΎΠ½ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ каТдая ΠΈΠ· этих ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Кнопка Step

НаТмитС Step ΠΈ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° отличия. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, сообщСниС Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ стСка измСнилось:

> '__main__'.<module>(), line 2: j = i * 2:

На этом этапС выполняСтся line 1 ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ останавливаСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ line 2.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… – новая пСрСмСнная i со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1 Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Locals. Π¦ΠΈΠΊΠ» for Π² line 1 создал ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ присвоил Π΅ΠΉ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Step, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ строка Π·Π° строкой, ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ происходит Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Когда Π΄ΠΎΠ±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ Π΄ΠΎ строки print(f"i is {i} and j is {j}"), смоТСтС ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ Π·Π° Ρ€Π°Π·.

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ растущиС значСния i ΠΈ j ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ прохоТдСния Ρ†ΠΈΠΊΠ»Π° for. Π­Ρ‚ΠΎ полСзная Ρ„ΠΈΡ‡Π° поиска источника ошибок Π² ΠΊΠΎΠ΄Π΅. Π—Π½Π°Π½ΠΈΠ΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ Π·ΠΎΠ½Ρƒ.

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Go

Часто Π²Π°ΠΌ извСстно, Ρ‡Ρ‚ΠΎ ошибка Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠ»Ρ‹Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ кускС ΠΊΠΎΠ΄Π°, Π½ΠΎ нСизвСстно, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Step вСсь дСнь, установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова, которая скаТСт ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ вСсь ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π΅Π΅ Π½Π΅ достигнСт.

Π’ΠΎΡ‡ΠΊΠΈ останова ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° слСдуСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ (Ctrl для Mac) ΠΏΠΎ строкС ΠΊΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Set Breakpoint – IDLE Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ линию ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Clear Breakpoint.

УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² строкС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ print(). Окно Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС. Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, панСль стСка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ выполнСния line 1. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈ посмотритС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ стСка информация ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ line 3:

> '__main__'.<module>(), line 3: print(f"i is {i} and j is {j}")

На ΠΏΠ°Π½Π΅Π»ΠΈ Locals ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ i ΠΈ j ΠΈΠΌΠ΅ΡŽΡ‚ значСния 1 ΠΈ 2 соотвСтствСнно. НаТмСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈ попросим ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΈΠ»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π½ΠΎΠ²Π° Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Go – ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выглядит Ρ‚Π°ΠΊ:

На ΠΏΠ°Π½Π΅Π»ΠΈ стСка отобраТаСтся Ρ‚ΠΎ ΠΆΠ΅ сообщСниС, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ – ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ выполнСния line 3. Однако значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… i ΠΈ j Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π²Π½Ρ‹ 2 ΠΈ 4. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print() Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π·. Π’Π΅ΠΏΠ΅Ρ€ΡŒ i ΠΈ j Ρ€Π°Π²Π½Ρ‹ 3 ΠΈ 6. Если Π½Π°ΠΆΠ°Ρ‚ΡŒ Go Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Over ΠΈ Out

Кнопка Over Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ сочСтаниС Step ΠΈ Go – ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅ΡˆΠ°Π³ΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ». Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – ΠΊΠ½ΠΎΠΏΠΊΠ° Over ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ нСпосрСдствСнно ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π΅Π΅ выполнСния.

Аналогично Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π° – ΠΊΠ½ΠΎΠΏΠΊΠ° Out выполняСт ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ останавливаСтся.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDLE.

Π‘ΠΎΡ€ΡŒΠ±Π° с Π±Π°Π³Π°ΠΌΠΈ

ВзглянСм Π½Π° Β«Π³Π»ΡŽΡ‡Π½ΡƒΡŽΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ add_underscores(), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ строку – копию слова с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ символом, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. НапримСр, add_underscores("python") Π²Π΅Ρ€Π½Π΅Ρ‚ Β«_p_y_t_h_o_n_Β».

Π’ΠΎΡ‚ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

def add_underscores(word):
    new_word = "_"
    for i in range(len(word)):
        new_word = word[i] + "_"
    return new_word

phrase = "hello"
print(add_underscores(phrase))

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот ΠΊΠΎΠ΄ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, сохранитС ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5. ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – _h_e_l_l_o_, Π½ΠΎ вмСсто этого вывСдСтся o_.

Если Π²Ρ‹ нашли, Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π΅ исправляйтС Π΅Π΅. Наша Ρ†Π΅Π»ΡŒ – Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого IDLE.

Рассмотрим 4 этапа поиска Π±Π°Π³Π°:

  • ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ошибка;
  • установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΠΎ строкС Π·Π° Ρ€Π°Π·;
  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ строку ΠΈ внСситС измСнСния;
  • повторяйтС шаги 1-3, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ΄ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π¨Π°Π³ 1: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π½Π΅ смоТСтС Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстонахоТдСниС ошибки, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ логичСски ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠ΄Π° ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π°: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add_underscores() ΠΈ основной Π±Π»ΠΎΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«helloΒ» ΠΈ выводящий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° основной Ρ€Π°Π·Π΄Π΅Π»:

phrase = "hello"
print(add_underscores(phrase))

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ здСсь всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

def add_underscores(word):
    new_word = "_"
    for i in range(len(word)):
        new_word = word[i] + "_"
    return new_word

ΠŸΠ΅Ρ€Π²Π°Ρ строка создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ new_word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«_Β». ΠŸΡ€ΠΎΠΌΠ°Ρ…, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° находится Π³Π΄Π΅-Ρ‚ΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for.

Π¨Π°Π³ 2: Ρ‚ΠΎΡ‡ΠΊΠ° останова

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ², Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ошибка, установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° происходящим Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π°:

Запустим. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ останавливаСтся Π½Π° строкС с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова:

Код останавливаСтся ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add_underscores(). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Locals ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ – word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«helloΒ», ΠΈ new_word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«_Β»,

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Step, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² Ρ†ΠΈΠΊΠ» for. Окно ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ измСнится, ΠΈ новая пСрСмСнная i со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0 отобразится Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Locals:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i – это счСтчик для Ρ†ΠΈΠΊΠ»Π° for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Step Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ посмотритС Π½Π° панСль Locals – пСрСмСнная new_word приняла Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«h_Β»:

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚. ΠΊ. сначала Π² new_word Π±Ρ‹Π»ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«_Β», Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for Π² Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Β«_h_Β». Если Π½Π°ΠΆΠ°Ρ‚ΡŒ Step Π΅Ρ‰Π΅ нСсколько Ρ€Π°Π·, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² new_word ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ e_, Π·Π°Ρ‚Π΅ΠΌ l_ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π¨Π°Π³ 3: ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ошибки ΠΈ исправлСниС

Как ΠΌΡ‹ ΡƒΠΆΠ΅ выяснили – Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° new_word пСрСзаписываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ символом Π² строкС Β«helloΒ» ΠΈ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° строка ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ:

new_word = word[i] + "_"

Код ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Python ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ word, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_word. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ наблюдали.

Π§Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ word[i] + "_" с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ new_word. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Quit Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° for Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ:

new_word = new_word + word[i] + "_"

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Π±Ρ‹ Π²Ρ‹ Π·Π°ΠΊΡ€Ρ‹Π»ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Π½Π΅ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Quit, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠ³Π»Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ошибка:

You can only toggle the debugger when idle

ВсСгда Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈΠ»ΠΈ Quit, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ запуском.

Π¨Π°Π³ 4: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ шагов 1-3, ΠΏΠΎΠΊΠ° ошибка Π½Π΅ исчСзнСт

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ запуститС Π΅Π΅ снова. Π’ ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. ΠŸΠΎΠ½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ Step нСсколько Ρ€Π°Π· ΠΈ смотритС, Ρ‡Ρ‚ΠΎ происходит с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_word Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ – всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ. Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ этот процСсс нСсколько Ρ€Π°Π·, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ исправится ошибка.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы поиска ошибок

ИспользованиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТным ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ, Π½ΠΎ это самый Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ Π½Π°ΠΉΡ‚ΠΈ ошибки Π² ΠΊΠΎΠ΄Π΅. Однако ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ Π½Π΅ всСгда Π΅ΡΡ‚ΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ print debugging для поиска ошибок Π² ΠΊΠΎΠ΄Π΅. PD задСйствуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print() для отобраТСния Π² консоли тСкста, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ мСсто выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

НапримСр, вмСсто ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π² ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π° for:

print(f"i = {i}; new_word = {new_word}")

Π˜Π·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

def add_underscores(word):
    new_word = "_"
    for i in range(len(word)):
        new_word = word[i] + "_"
        print(f"i = {i}; new_word = {new_word}")
    return new_word

phrase = "hello"
print(add_underscores(phrase))

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

i = 0; new_word = h_
i = 1; new_word = e_
i = 2; new_word = l_
i = 3; new_word = l_
i = 4; new_word = o_
o_

PD Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько нСдостатков ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ΠΎΠΌ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ print().

Один ΠΈΠ· способов ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ наш Ρ†ΠΈΠΊΠ» – ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ символы Π² word:

def add_underscores(word):
    new_word = "_"
    for letter in word:
        new_word = new_word + letter + "_"
    return new_word

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ всС ΠΎΠ± ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DLE. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π΅Π±Π°Π³Π΅Ρ€Π°ΠΌΠΈ.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

  • использованиС ΠΎΠΊΠ½Π° управлСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ;
  • установку Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π°;
  • ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Step, Go, Over ΠΈ Out;
  • чСтырСхэтапный процСссом выявлСния ΠΈ удалСния ошибок.

НС ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³ – это вСсСло!

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...