Member 13304887 Ответов: 2

Код Railfence ничего не печатает Python


Я пытаюсь создать код, который печатает каждую вторую букву в другой строке для класса, но ничего не печатается.

Что я уже пробовал:

plainText="hellomynameisbob"
railOne=""
railTwo=""
i=0
while i>=len(plainText):
  railOne=railOne+plainText[i]+" "
  i=i+1
  railTwo=railTwo+" "+plainText[i]
  i=i+1
print(railOne)
print(railTwo)

2 Ответов

Рейтинг:
12

Patrice T

Похоже, ваша программа берет символы из plaintext миновал его конец.
В строке длины x, символы находятся на позициях от 0 к x-1.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb-интерактивный отладчик-Python модуль недели[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Member 13304887

Я попробовал отладчик и вообще не понимаю что он говорит
вот что дал мне отладчик:
> /tmp/sessions/62a6cfe655950bdf/main.py(3) & lt;модуль>()
- > plainText= " hellomynameismax"
(Pdb) n
> /tmp/sessions/62a6cfe655950bdf/main.py(4) & lt;модуль>()
- > рейлон=""
(Pdb) n
> /tmp/sessions/62a6cfe655950bdf/main.py(5) & lt;модуль>()
- > railTwo=""
(Pdb) n
> /tmp/sessions/62a6cfe655950bdf/main.py(6) & lt;модуль>()
-> i=0
(Pdb) n
> /tmp/sessions/62a6cfe655950bdf/main.py(7) & lt;модуль>()
- > while i>=(len(plainText)-1):
(Pdb) n
> /tmp/sessions/62a6cfe655950bdf/main.py(12) & lt;модуль>()
- > печать(railOne)
(Pdb) n

> /tmp/sessions/62a6cfe655950bdf/main.py(13) & lt;модуль>()
- > печать(railTwo)
(Pdb) n

--Вернуть--
> /tmp/sessions/62a6cfe655950bdf/main.py(13) & lt;модуль> () - & gt;Нет
- > печать(railTwo)
(Pdb) n

Patrice T

Вы должны найти учебник для отладчика. Я не практикую python или этот отладчик.
у вас есть группы из 3 строк:
/tmp/sessions/62a6cfe655950bdf/main.py это ваше имя файла.
(4) номер строки.
открытый текст= " hellomynameismax" исходный код

Рейтинг:
0

Richard MacCutchan

i=0
while i>=len(plainText):

Ничего не будет делать, так как 0 никогда не может быть больше или равно длине строки.


Member 13304887

Я просто изменил его на этот:
открытый текст= " hellomynameisbob"
рейлон=""
railTwo=""
i=0
в то время как я< len(открытый текст):
railOne=railOne+открытый текст[i]+" "
i=i+1
railTwo=railTwo+" "+открытый текст[i]
i=i+1
печать (рейлон)
печать (railTwo)

теперь он дает мне эту ошибку:
Обратная трассировка (самый недавний призыв последнего):
Файл "C:/Users/maxwe/AppData/Local/Programs/Python/Python36-32/test2.py", строка 8, в & lt;модуле>
railTwo=railTwo+" "+открытый текст[i]
IndexError: строковый индекс вне диапазона

Richard MacCutchan

Этот код отлично работает для меня. Вы должны убедиться, что ваша текстовая строка содержит четное количество символов.