【问题标题】:Python - Caesar Cipher ErrorPython - 凯撒密码错误
【发布时间】:2015-01-08 01:07:18
【问题描述】:

我正在尝试在 python 中创建一个凯撒密码,但是我遇到了一个错误。 我的代码是:

print("Enter desired function.")
print("1 - Encode")
print("2 - Decode")
function = input("")
if function == "1":
    print("How much do you want to offset it by?")
    offset = int(input(""))
elif function == "2":
    print("How much is it offset by?")
    offset = int(input("")) * -1
print("Enter the message.")
message = input("")
upperMessage = message.upper
length = len(message)
for i in range(length):
    letter = upperMessage[i-1]
    number = ord(letter)
    offsetNumber = number + offset
    if offsetNumber > 90:
        highOffset = offsetNumber - 90
        offsetNumber = 65 + highOffset
    if offsetNumber < 65:
        lowOfsset = 65 - offsetNumber
        offsetNumber = lowOffset + 90
    newLetter[i-1] = chr(offsetNumber)
 print(newLetter)

一开始运行良好,但是当我输入消息时,我收到错误:

TypeError: 'builtin_function_or_method' object is not subscriptable

我已尝试更换线路

letter = upperMessage[i-1]

letter = upperMessage(i-1)

但这会返回错误

TypeError: upper() takes no arguments (1 given)

你能帮帮我吗? 非常感谢, 狐狸

【问题讨论】:

  • 你的意思是upperMessage = message.upper() - 注意括号。

标签: python


【解决方案1】:

实际调用方法需要加括号

upperMessage = message.upper()

否则,如果您熟悉 C++,则将函数本身分配给 upperMessage,类似于 (-ish) 函数指针。

【讨论】: