-2

到目前为止,这是我的代码:

def code_block(text, key):
    itext = int(text)
    rkey = int(key)
    res= itext + rkey
    def last():
        return res[-1:]
    if res>=11111111:
        last()
    return res

这是我设定的任务:

现在我们需要一个函数来获取一个代码块和一个密钥作为输入,假设两者都是 8 位长,并用密钥的相应数字加密数字的每个数字:

>>> code_block('12341234','12121212')
'24462446'

>>> code_block('66554433','44556677')
'00000000'

我哪里错了?你能指出我正确的方向并指出我错了吗?

4

1 回答 1

0

你正在以错误的方式解决这个问题。逐个字符处理这个字符:

def code_block(text, key):
    res = [str(int(c) + int(k))[-1:] for c, k in zip(text, key)]
    return ''.join(res)

这给了我:

>>> code_block('12341234','12121212')
'24462446'
>>> code_block('66554433','44556677')
'00000000'

该代码分别对每个字符求和,将其转换回字符串并仅使用结果的最后一个字符9 + 9 是 18,但结果是'8'.

您的代码将对整数求和,但这会导致:

>>> 66554433 + 44556677
111111110

这不是正确的结果。您也没有再次将总和转换回字符串,因此您的代码尝试通过切片将总和结果视为字符串,给出了异常:

>>> code_block('12341234', '12121212')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in code_block
  File "<stdin>", line 6, in last
TypeError: 'int' object has no attribute '__getitem__'
于 2013-03-09T18:32:52.357 回答