С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 272
1

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

08.06.2017, 14:48. Показов 2102. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, взялся за изучение Python, хочу написать 2 функции которые будут шифровать и расшифровывать символы. То есть при шифровке сдвигать символ на +3.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)
собственно код. помогите пожалуйста разобраться в чем может быть дело?

Добавлено через 7 минут
А точнее поему не вызывается функция decrypt(x)
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2017, 14:48
Ответы с готовыми решениями:

Задачи по python 3 НАЧАЛЬНЫЙ УРОВЕНЬ сложности
Предлагаю тему - начального уровня - решать интересные задачки на python3 условие: Свою задачу...

Диапазон чисел, функция if (супер начальный уровень)
Доброго времени суток! Полагаю, вопрос скорее математического характера, но я сомневаюсь. Вопрос...

Наследование в Python (базовый уровень)
Построить иерархию классов в соответствии с вариантом задания (любой на выбор): 1....

Си начальный уровень
#include "stdafx.h" #include "stdio.h" #include "math.h" #include "conio.h" int...

10
0 / 0 / 1
Регистрация: 08.06.2017
Сообщений: 5
08.06.2017, 15:02 2
Проверьте отступы в процедурах и циклах после имени процедуры 4 пробела и т.д.
Python
1
2
3
4
def encrypt(text):
    for char in text:
        x = (ord(char))
        print(x)
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 272
08.06.2017, 15:06  [ТС] 3
Проверил, все ровно в функцию не заходит decrypt(x)
0
0 / 0 / 1
Регистрация: 08.06.2017
Сообщений: 5
08.06.2017, 15:11 4
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# -*- coding:utf-8 -*-
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")
        print x
        #decrypt(x)
        print '----'
    return x
 
def decrypt(x):
     if x != 0:
        x -=3
        str = chr(x)
        print(str)
 
 
str = raw_input("enter str  ")
encrypt(str)
на 2.7 версии результат:
Process started >>>
enter str bumos
98
101
----
117
120
----
109
112
----
111
114
----
115
118
----
<<< Process finished. (Exit code 0)
================ READY ================
0
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 272
08.06.2017, 15:24  [ТС] 5
Подскажите пожалуйста, в теле одной функции написана другая функция. Но она не вызывается, отладчик даже не заходит в нее. Что не так делаю?
0
0 / 0 / 1
Регистрация: 08.06.2017
Сообщений: 5
08.06.2017, 15:42 6
В теле процедуры зашифровать(encrypt) есть вызов функции расшифровать decrypt - в результате на экране будут символы в расшифрованном виде

Добавлено через 7 минут
Python
1
2
3
4
5
6
7
8
9
10
11
# -*- coding:utf-8 -*-
def encrypt(text):
    for char in text:
        x = (ord(char)+3)
        print x ,' decrypted ', decrypt(x)
def decrypt(x):
     if x != 0:
        str = chr(x-3)
        return str
str = raw_input("enter str  ")
encrypt(str)
А если так
0
5032 / 3378 / 1155
Регистрация: 21.03.2016
Сообщений: 8,203
08.06.2017, 17:47 7
yyyuuu, все у тебя заходит но только функция encrypt в цикле получает первое значение из text после чего пройдя все условия и что то сделав с этим единственным значением вызывает decrypt(x) которая обработав это значение выдает результат и завершает свою работу ну а следущей строкой в функции encrypt(text) после вызова decrypt(x) стоит команда return x которая и завершает работу первой функции и всего кода в целом
1
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 272
09.06.2017, 06:22  [ТС] 8
Тогда подскажите почему когда выполняется допустим код -
Python
1
2
3
4
      elif x == 122:
           x = ord("c")
      decrypt(x)
      return x
ретёрн стоит позже вызова функции. Разве не должен следуя алгоритму сначала выполнить функцию а потом вернуть х
0
5032 / 3378 / 1155
Регистрация: 21.03.2016
Сообщений: 8,203
09.06.2017, 12:00 9
Цитата Сообщение от yyyuuu Посмотреть сообщение
Разве не должен следуя алгоритму сначала выполнить функцию а потом вернуть х
так оно и есть выполняется функция после чего return x возвращает значение из encrypt туда откуда была вызвана. простой пример
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def encrypt(text):
   text =text.upper() # 2) функция обрабатывает аргумент(hello = HELLO)
   decrypt(text) # 3) вызываем decrypt c аргументом (HELLO)
   print() # 7) просто разделяю работу функций для наглядности
   return text+'!!!' # 8)возвращаем значение text-(HELLO) дописав к нему !!!  в место вызова
 # то есть в print( можно в переменную, в другую функцию и т.д.)
 
def decrypt(x):
    for i in x: # 4) перебираем элементы строки HELLO
        i = ord(i) # 5) меняем элемент на числовое значение
        print(i, end = ' ') # 6) выводим результат через пробел
        # функция завершила(ничего не возвращая) 
        
        
x = 'hello'
print(encrypt(x))# 1) выводим то что вернет encrypt через return (запускаем функцию)
 
# вывод в перменную
x = 'goodbye'
y = encrypt(x) # теперь y приймет результат работы encrypt
print(y)
результат:
72 69 76 76 79
HELLO!!!

71 79 79 68 66 89 69
GOODBYE!!!
2
7 / 2 / 0
Регистрация: 19.10.2014
Сообщений: 272
10.06.2017, 07:29  [ТС] 10
немного не понял, ретерн возращает значение функции. В моем коде Я передал функцию вторую функцию НО, по отладке в нее даже не зашло
0
5032 / 3378 / 1155
Регистрация: 21.03.2016
Сообщений: 8,203
10.06.2017, 09:51 11
Лучший ответ Сообщение было отмечено yyyuuu как решение

Решение

Цитата Сообщение от yyyuuu Посмотреть сообщение
Я передал функцию вторую функцию НО, по отладке в нее даже не зашло
с чего ты так решил? вот твой вариант без условий скопируй и убедись что все вызывается
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def encrypt(text):
   x = text 
   print ('я функция encrypt с аргументрм',x)
   decrypt(x)
   print ('----')
   return x #  возвращаем значение функции encrypt  в место вызова функции encrypt (в последнюю строку кода
 
def decrypt(x):
     x = x[0]:
     print('функция decrypt обработала аргумент и ее результат = ',x)
 
 
stroka = raw_input("enter str  ")
encrypt(stroka)
1
10.06.2017, 09:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2017, 09:51
Помогаю со студенческими работами здесь

Начальный уровень C++
Добрый вечер. Я поступил на заочное обучение по программированию. До этого программирование ни где...

Строки. Начальный уровень.
Получить из слова a, вычёркиванием некоторого кол-ва букв, слова b. Отобразить на экране...

Функциями. начальный уровень
1) Напишите функцию, которая для заданных целых переменных A B C меняет местами их значения так,...

UML, начальный уровень
Здравствуйте! Имеется задание: Собственно главный вопрос по поводу метода enter. Не понимаю,...

Задание на С (начальный уровень)
Помогите с решением пожалуйста. Задан массив, состоящий из 50 неотрицательных элементов. Найти в...

Задание на С (начальный уровень)
Помогите пожалуйста. Ничего не понятно. Нарушение правил: 4.3. Создавайте темы с осмысленными...

Задание на С (начальный уровень)
Помогите пожалуйста решить. Не допираю совсем. Нарушение правил: 4.3. Создавайте темы с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru