最近,我开始尝试重新开始编程。在尝试运行以前制作的脚本(将遵循)只是为了看看我是否让它处于工作状态时,经过几秒钟的处理,我遇到了两个错误。检查代码似乎是正确的,但再次尝试会导致与预期相同的结果。我通过 python 调试器 ( python -m pdb
) 运行它,它运行完美。继续这一思路,我尝试python luhn.py
再次通过 python 解释器运行它,完美无瑕。
这个特殊的盒子是 Linux Sabayon 64bit(Python 版本 2.7.5),它与最初编写脚本的系统类似,也是 sabayon 64bit。可能是什么原因?我尝试重置终端(使用stty sane
和reset
)无济于事。
卢恩.py
# Luhn Check in python
#!/usr/bin/python
import random
def generate():
card = []
for i in range(0,16):
card.append(random.randrange(0,9))
return card
def compress(number):
result = 0
strNum = str(number)
if len(strNum) >= 2:
result = compress(int(strNum[0]) + int(strNum[1]))
else:
result = number
return result
def addition(card):
total = 0
for i in range(0,16,2):
total += compress( card[i]*2 )
for i in range(1,16,2):
total += int(card[i])
return total
cardNumber = generate()
print cardNumber
checksum = addition(cardNumber)%10
if (cardNumber[15]+(10-checksum)) in range(0,9):
cardNumber[15] += (10-checksum)
elif (cardNumber[15]-checksum) in range(0,9):
cardNumber[15] -= checksum
print cardNumber, addition(cardNumber)