2015-02-21 2 views
-1

Моя функция должна принимать строковый аргумент как входной сигнал и возвращать кодировку rot-13 входной строки.Ошибка «Невозможно назначить вызов функции»

def str_rot_13(string): 

    c = list(string) 

    for num in c: 
     if ord(num) >= ord('a') and ord('z'): 
      if ord(num) >=('m'): 
      ord(num) -=13 
      else: 
      ord(num) +=13 

     elif ord(num) >= ord('A') and ord('Z'): 
      if ord(num) >=('M'): 
      ord(num) -=13 
      else: 
      ord(num) +=13 

    z += chr(ord(num)) 
    return z 

Это дает мне сообщение об ошибке «Невозможно назначить функцию вызова». Я не уверен, что я делаю неправильно.

Редактировать: Наконец-то это получилось! Благодарю.

Решение:

if ord(num) >= ord('a') and ord('z'): 
     if ord(num) >=('m'): 
     k+= chr(ord(num)-13) 
     else: 
     k+= chr(ord(num)+13) 

    elif ord(num) >= ord('A') and ord('Z'): 
     if ord(num) >=('M'): 
      k+= chr(ord(num)-13) 
     else: 
      k+= chr(ord(num)+13) 

return k 

ответ

3

Проблема с линиями, как это:

ord(num) -=13 

ord является встроенной функцией. Вы можете использовать значение, возвращаемое функцией, но не назначать значение функции.

Что вы можете сделать вместо этого:

num = chr(ord(num) - 13) 

Это, вероятно, не поможет решить проблему, так как у вас есть другие ошибки, как вы пытаетесь добавить переменную z без объявления его где-нибудь. Вы должны объявить его перед вашим циклом:

z = '' 
for num in c: 
... 

, а также отступы линии

z += chr(ord(num)) 

так, что внутри для цикла. Вы также можете сделать это:

z += num 

как chr и ord - обратные функции.

3

Что вы делаете неправильно, вы назначаете вызов функции! Например:

ord(num) -=13 

вы присваиваете к вызову функции ord(num) - и вы не можете это сделать.

То, что вы на самом деле хотите сделать предположительно:

num = chr(ord(num) - 13) 

и так далее.

Конечно, у вас все еще есть проблемы с добавлением z, если вы не определите z в части кода, который вы решили не показывать нам. Трудно помочь отлаживать код, который вы предпочитаете скрывать от нас, конечно.

Смежные вопросы