Python -Моя строковая переменная не будет складываться в одну строку - PullRequest
0 голосов
/ 14 февраля 2020

Кажется, у меня проблемы с добавлением строки.
Я написал функцию, которую я продолжаю вызывать для декодирования или кодирования строки.
Проблема в том, что когда я печатаю результат, он работает только для печати одной обугливается, а не весь код.
Вне функции этот метод работает, хотя, добавляя букву за буквой.
Здесь я использую числа.

def code(s,i):
  result = ""
  if i < len(s):
    if s[i] == '0':
      result += "3"
      print (result)
      code(s,i+1)
    if s[i] == '1':
      result += "4"
      print (result)
      code(s,i+1)
    else:
      print ("An Error seems to have occured.")
  else:
    print("Code is done.")
  return

Например, если я поставлю in: 01
Я ожидаю результат: 3
34
Но он печатает только: 3
4
Так что в основном результаты после воспроизведения удаляют / переопределяют то, что было в строке раньше.
Я хочу напечатать результат в одну строку, а не в несколько строк за строкой.
Это только часть моего кода, прерванного. Почему результат не сложится?
Это как я определил введено.
entered = input("Please type something.")

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Я нашел решение своей проблемы.
Каждый раз, когда я вспоминал функцию, она сбрасывала мой код, поэтому я передавал результат в качестве параметра моей функции:

def code(s,i,result):

  if i < len(s):
    if s[i] == '0':
      result += "3"
      print (result)
      code(s,i+1,result)
      return
    if s[i] == '1':
      result += "4"
      print (result)
      code(s,i+1,result)
      return
    else:
      print ("An Error seems to have occured.")
  else:
    print("Code is done.")
  return

Теперь распечатывается результат что мне нужно, спасибо за любую помощь! ^^

0 голосов
/ 14 февраля 2020

На самом деле ваш код прав, но есть только одна проблема, заключающаяся в том, что после прохождения первого вложенного предложения if код переходит к следующему, он переходит во вложенное предложение else.

Чтобы остановить это, вы должны вернуть программу

Вы должны сделать свой код следующим образом.

def code(s,i):
  result = ""
  if i < len(s):
    if s[i] == '0':
      result += "3"
      print (result)
      code(s,i+1)
      return
    if s[i] == '1':
      result += "4"
      print (result)
      code(s,i+1)
      return
    else:
      print ("An Error seems to have occured.")
  else:
    print("Code is done.")
  return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...