利用Python的分支,循环,序列编写程序 ,完成以下题目. 1. 信用卡号校验。编写一个能判断信用卡号是否合法的小程序。 信用卡号必须通过lun算法进行校验,其过程: 1>、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2>、从卡号倒数第二位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3>、将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是:5432123456788881 逆向奇数位为 4 2 2 4 6 8 8 1 和 = 35 逆向偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和 = 35。 最后 35 + 35 = 70 可以被10整除,认定校验通过。
时间: 2023-06-20 17:04:08 浏览: 241
下面是一个Python程序实现信用卡号校验:
```python
def check_credit_card_number(card_number):
# 逆向奇数位相加
odd_sum = 0
for i in range(len(card_number) - 1, -1, -2):
odd_sum += int(card_number[i])
# 逆向偶数位乘以2,有些要减去9,然后求和
even_sum = 0
for i in range(len(card_number) - 2, -1, -2):
digit = int(card_number[i]) * 2
if digit > 9:
digit -= 9
even_sum += digit
# 检验结果是否可以被10整除
total_sum = odd_sum + even_sum
return total_sum % 10 == 0
```
这个函数接受一个字符串参数`card_number`,表示要校验的信用卡号。函数首先遍历这个字符串中的奇数位,从最后一位开始,将它们的数字相加,得到`odd_sum`。然后遍历偶数位,将它们的数字乘以2,如果结果大于9,则减去9,最后将所有结果相加得到`even_sum`。最后将`odd_sum`和`even_sum`相加,检查结果是否可以被10整除,如果是,返回`True`,否则返回`False`。
阅读全文