from decimal import Decimal
import itertools
def encrypt(numbers_as_text, code):
key = itertools.cycle(code[::-1])
num = Decimal(numbers_as_text)
power = 1
for _ in numbers_as_text:
num += power * int(next(key))
power *= Decimal(10)
return num
if __name__ == "__main__":
print(encrypt('12345','12'))
在Python3.2上测试的一些代码:
一些解释:
code[::-1]
是反转字符串的一种很酷的方法。Stolen from herekey
现在包含一个生成器,它产生2
,1
,2
,1
,2
,1
,等等Decimal()
调用该类型的constructor,并以此创建该类型的新对象。Decimal()
构造函数可以处理一个参数,然后将其转换为十进制对象。在本例中,numbers_as_text
字符串和整数10
都转换为^{power
是一个变量,它以1
开始乘以{num
的位置for
循环头确保我们对给定输入文本中的每个数字进行一次迭代。我们也可以使用类似for index in range(len(numbers_as_text))
的东西,但这不必要地复杂当然,如果你想编码文本,这种方法是行不通的。但因为这不在你的问题规范中,这是一个专注于处理整数的函数。在
相关问题 更多 >
编程相关推荐