@rurik123

Как исправить «TypeError: bad operand type for unary -: 'function'»?

Traceback (most recent call last):
  File "C:\Users\Денис\Desktop\1.py", line 44, in <module>
    print(getTranslatedMessage(mode,message,key))
  File "C:\Users\Денис\Desktop\1.py", line 24, in getTranslatedMessage
    key = -key
TypeError: bad operand type for unary -: 'function'

Вот сама программа:

# Шифр Цезаря
SYMBOLS = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'
MAX_KEY_SIZE = len (SYMBOLS)
def getMode():
    while True:
        print('Вы хотите зашифровать или расшифровать текст?')
        mode = input().lower()
        if mode in ['Зашифровать','зашифровать','з','Расшифровать','расшифровать','р']:
              return mode
        else:    
         print('Введите для зашифровки"Зашифровать"или"зашифровать"или"з", а для расшифровки"Расшифровать"или"расшифровать"или"р".')
def getMessage(): 
    print('Введите текст:')
    return input()
def getKey() :
    key=0
    while True:
        print('Введите ключ для шифрования(1-%s)' % (MAX_KEY_SIZE))
        key = int(input())
        if (key >= 1 and key <= MAX_KEY_SIZE):
            return key
def getTranslatedMessage(mode, message, key):
    if mode[0] == 'р':
        key = -key
    translated = ''
    for symbol in message:
        symbolIndex = SYMBOLS.find(symbol)
        if symbolIndex == -1: # Символ не найден в SYMBOLS.
            # Просто добавить этот символ без изменений.
            translated += symbol
        else:
            #Зашифровать или расшифровать
            symbolIndex =+ key
            if symbolIndex >= len(SYMBOLS):
                symbolIndex -= len(SYMBOLS)
            elif symbolIndex < 0:
                symbolIndex += len (SYMBOLS)
            translated += SYMBOLS[symbolIndex]
    return translated
mode = getMode()
message = getMessage()
key = getKey
print('преоброзованный текст:')
print(getTranslatedMessage(mode,message,key))
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
@OshiGen
Вы передаете саму функцию в качестве аргумента. Попробуйте так:
mode = getMode()
message = getMessage()
key = getKey()
print('преоброзованный текст:')
print(getTranslatedMessage(mode,message,key))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы