交互式 Sage 单元格的语法错误
Syntax errors with interactive Sage cell
我正在尝试创建一个网页,该网页使用交互式 Sage 单元格在用户输入的字符串上实施 Vigenere 密码。当我 运行 在交互式单元格之外时,代码 运行 非常完美。见下文:
message = 'Beware the Jabberwock, my son!'
key = 'VIGENERECIPHER'
from itertools import starmap, cycle
def encrypt(message, key):
message = filter(lambda _: _.isalpha(), message.upper())
def enc(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))
return "".join(starmap(enc, zip(message, cycle(key))))
encr = encrypt(message, key)
print encr
但是当我尝试在交互式单元格中实现它时,出现语法错误。
@interact
def f(message = input_box('Beware the Jabberwock, my son!', label ="Plain text"), key = input_box('VIGENERECIPHER', label = "Key word")):
from itertools import starmap, cycle
def encrypt(message, key):
message = filter(lambda _: _.isalpha(), message.upper())
def enc(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))
return "".join(starmap(enc, zip(message, cycle(key))))
encr = encrypt(message, key)
print encr
打印出以下错误:
AttributeError: 'exceptions.SyntaxError' object has no attribute 'upper'
我是 python/sage 的新手...我猜这是 class/type 的某种错误?我试过谷歌搜索,但找不到与此问题具体相关的任何内容。谢谢
我没有看到这个 AttributeError
,而是另一个错误。也许这是同一件事的征兆。无论如何,问题是 message=input_box(...)
期望框中有一个 Python 表达式。您应该添加一个 type
关键字:
message=input_box('Beware the Jabberwock, my son!', label ="Plain text", type=str)
(或者,您可以在输入框中输入所有带显式引号的字符串。)
我正在尝试创建一个网页,该网页使用交互式 Sage 单元格在用户输入的字符串上实施 Vigenere 密码。当我 运行 在交互式单元格之外时,代码 运行 非常完美。见下文:
message = 'Beware the Jabberwock, my son!'
key = 'VIGENERECIPHER'
from itertools import starmap, cycle
def encrypt(message, key):
message = filter(lambda _: _.isalpha(), message.upper())
def enc(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))
return "".join(starmap(enc, zip(message, cycle(key))))
encr = encrypt(message, key)
print encr
但是当我尝试在交互式单元格中实现它时,出现语法错误。
@interact
def f(message = input_box('Beware the Jabberwock, my son!', label ="Plain text"), key = input_box('VIGENERECIPHER', label = "Key word")):
from itertools import starmap, cycle
def encrypt(message, key):
message = filter(lambda _: _.isalpha(), message.upper())
def enc(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))
return "".join(starmap(enc, zip(message, cycle(key))))
encr = encrypt(message, key)
print encr
打印出以下错误:
AttributeError: 'exceptions.SyntaxError' object has no attribute 'upper'
我是 python/sage 的新手...我猜这是 class/type 的某种错误?我试过谷歌搜索,但找不到与此问题具体相关的任何内容。谢谢
我没有看到这个 AttributeError
,而是另一个错误。也许这是同一件事的征兆。无论如何,问题是 message=input_box(...)
期望框中有一个 Python 表达式。您应该添加一个 type
关键字:
message=input_box('Beware the Jabberwock, my son!', label ="Plain text", type=str)
(或者,您可以在输入框中输入所有带显式引号的字符串。)