Найти - Пользователи
Полная версия: Начальный уровень Python. Функции - Python
Начало » Python для новичков » Начальный уровень Python. Функции - Python
1 2
yyyuuu
Привет, взялся за изучение Python, хочу написать 2 функции которые будут шифровать и расшифровывать символы. То есть при шифровке сдвигать символ на +3.
 def encrypt(text):
   for char in text:
      #print(text)
      #y = len(text)
      x = (ord(char))
      #print(x)
      if x != 0 and x != 121 and x != 120 and x != 122:
          x += 3
      elif x == 121:
          x = ord("b")
      elif x == 120:
          x = ord("a")
      elif x == 122:
           x = ord("c")
      decrypt(x)
      return x
def decrypt(x):
     if x != 0:
        x -=3
        str = chr(x)
        print(str)
str = input("enter str  ")
encrypt(str)

собственно код. помогите пожалуйста разобраться в чем может быть дело?
А точнее поему не вызывается функция decrypt(x)
marvellik
yyyuuu
А точнее почему не вызывается функция decrypt(x)
она вызывается и показывает результат своей работы. допиши в функцию вывод ее работы и ты увидишь что она вызвана.
 def decrypt(x):
      print('функция decrypt вызвана')
      if x != 0:
          x -=3
          str = chr(x)
          print(str)
но если тебе не нравиться результат работы то это ошибка написания алгоритма потому как функция encrypt получив в цикле первое значение х ( x = (ord(char)) ) и проверив все условия передает его в decrypt и та раскодировав единственное значение выдает результат после чего encrypt завершает свою работу возвравщая это первое значение(неизвестно куда) .так наглядней будет
 def encrypt(text):
      print('текст до кодирования - ',text)
      x = [ord(char)+3 for char in text]
      print('кодированный текст - ',*x)
      print()
      decrypt(x)
def decrypt(x):
      print('декодируем - ',*x)
      res = ''.join([chr(i-3) for i in x])
      print('декодированный текст - ',res)
encrypt(input("enter str  "))
yyyuuu
marvellik
 def encrypt(text):
    for char in text:
        x = (ord(char))
        print("кодированый текст - ", chr(x))
        if x != 0 and x != 121 and x != 120 and x != 122:
          x += 3
        elif x == 121:
           x = ord("b")
        elif x == 120:
           x = ord("a")
        elif x == 122:
           x = ord("c")
        decrypt(x)
def decrypt(x):
    print('Декодируем - ', ord(x))
    if x != 0:
       x -=3
       str1 = chr(x)
    print("расшифроная", str1)
str = input("enter str  ")
encrypt(str)
Результат
enter str asd
кодированый текст - a
Traceback (most recent call last):
File “C:\Users\Nikit\documents\visual studio 2017\Projects\PythonApplication5\PythonApplication5\PythonApplication5.py”, line 22, in <module>
encrypt(str)
File “C:\Users\Nikit\documents\visual studio 2017\Projects\PythonApplication5\PythonApplication5\PythonApplication5.py”, line 13, in encrypt
decrypt(x)
File “C:\Users\Nikit\documents\visual studio 2017\Projects\PythonApplication5\PythonApplication5\PythonApplication5.py”, line 15, in decrypt
print('Декодируем - ', ord(x))
TypeError: ord() expected string of length 1, but int found
Для продолжения нажмите любую клавишу . . .

куда посмотреть, где ошибка не могу понять
yyyuuu
print('Декодируем - ', ord(x)) не могу вывести Х на экран
FishHook
yyyuuu
Блин, ну вы же уже вот этими операциями получли ord

         elif x == 121:
           x = ord("b")
        elif x == 120:
           x = ord("a")
        elif x == 122:
           x = ord("c")
после этого вы пытаетесь получить ord от кода символа? Ну вы подумайте хорошенько, что вы делаете вообще.
yyyuuu
FishHook
yyyuuuБлин, ну вы же уже вот этими операциями получли ord
Я пробовал и так и так, print('Декодируем - ', x) так тоже Я не могу вывести символ
yyyuuu
Объясните что не так, пожалуйста
yyyuuu
Объясните что не так, пожалуйста
marvellik
yyyuuu
Я пробовал и так и так, print
что то плохо пробовал.
 def encrypt(text):
    for char in text:
        x = (ord(char))
        print("буква - ", chr(x))
        if x != 0 and x != 121 and x != 120 and x != 122:
          x += 3
        elif x == 121:
           x = ord("b")
        elif x == 120:
           x = ord("a")
        elif x == 122:
           x = ord("c")
        print('буква в коде - ',x)
        decrypt(x)
        
def decrypt(x):
    print('*'*25+' start decrypt')# выделяем начало работы decrypt
    print('Декодируем - ', x)
    if x != 0:
       x -=3
       str1 = chr(x)
    print("расшифровка", str1)
    print('*'*25+' end decrypt')# выделяем конец работы decrypt
stroka = 'asd'
encrypt(stroka)
 буква -  a
буква в коде -  100
************************* start decrypt
Декодируем -  100
расшифроная a
************************* end decrypt
буква -  s
буква в коде -  118
************************* start decrypt
Декодируем -  118
расшифроная s
************************* end decrypt
буква -  d
буква в коде -  103
************************* start decrypt
Декодируем -  103
расшифроная d
************************* end decrypt
yyyuuu
marvellik
Спасибо больше, понял в чем были у меня проблемы
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB