-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 に答える