Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 8, 2017 14:54:49

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

Привет, взялся за изучение 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)

Отредактировано yyyuuu (Июнь 8, 2017 15:00:28)

Офлайн

#2 Июнь 8, 2017 17:19:23

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

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  "))

Отредактировано marvellik (Июнь 8, 2017 17:50:11)

Офлайн

#3 Июнь 10, 2017 08:15:03

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

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
Для продолжения нажмите любую клавишу . . .

куда посмотреть, где ошибка не могу понять

Офлайн

#4 Июнь 10, 2017 08:17:21

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

print('Декодируем - ', ord(x)) не могу вывести Х на экран

Офлайн

#5 Июнь 10, 2017 10:01:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

yyyuuu
Блин, ну вы же уже вот этими операциями получли ord

         elif x == 121:
           x = ord("b")
        elif x == 120:
           x = ord("a")
        elif x == 122:
           x = ord("c")
после этого вы пытаетесь получить ord от кода символа? Ну вы подумайте хорошенько, что вы делаете вообще.



Офлайн

#6 Июнь 10, 2017 11:18:10

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

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

Офлайн

#7 Июнь 10, 2017 11:18:25

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

Объясните что не так, пожалуйста

Офлайн

#8 Июнь 10, 2017 11:18:26

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

Объясните что не так, пожалуйста

Офлайн

#9 Июнь 10, 2017 13:19:49

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

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

Отредактировано marvellik (Июнь 10, 2017 13:20:38)

Офлайн

#10 Июнь 10, 2017 14:35:25

yyyuuu
Зарегистрирован: 2017-06-08
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Начальный уровень Python. Функции - Python

marvellik
Спасибо больше, понял в чем были у меня проблемы

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version