找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3705|回复: 3

[求助] 各位大神帮帮忙!!!

2

主题

3

帖子

3

积分

贫民

积分
3
wx_vfKjTd77 发表于 2018-11-13 20:31:37 | 显示全部楼层 |阅读模式
信用卡号是否合法的判断规则为:
a) 对给定的8位信用卡号码,如43589795,从最右边数字开始,隔一位取一个数相加,如5+7+8+3=23。
b) 将卡号中未出现在第一步中的每个数字乘2,然后将相乘的结果的每位数字相加。例如,对上述例子,未出现在第一步中的数字乘2后分别为(从右至左)18、18、10、8,则将所有数字相加为1+8+1+8+1+0+8=27。
c) 将上述两步得到的数字相加,如果得数个位为0,则输入的信用卡号是有效的。
请在指定位置完成函数的编写,判断用户输入的8位信用卡号码是否合法。

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-11-14 16:19:27 | 显示全部楼层
自己再优化一下
  1. def proc_part2(part2):
  2.     lst=[]
  3.     for x in [int(y)*2 for y in list(part2)]:
  4.         lst.extend(list(str(x)))
  5.     part2s=sum(int(z) for z in list(lst))
  6.     return part2s
  7. def codecheck(card):
  8.     rev=card[::-1]
  9.     part1=rev[::2]
  10.     part2=rev[1::2]
  11.     part1sum=sum(int(x) for x in list(part1))
  12.     part2sum=proc_part2(part2)
  13.     if (part1sum+part2sum)%10==0:
  14.         print('ok')
  15.     else:
  16.         print('not correct')
  17. 结果
  18. In [48]: codecheck('43589795')
  19. ok
  20. In [49]: codecheck('43589794')
  21. not correct

复制代码
回复 支持 1 反对 0

使用道具 举报

2

主题

3

帖子

3

积分

贫民

积分
3
wx_vfKjTd77  楼主| 发表于 2018-11-14 23:15:39 | 显示全部楼层

太感谢了!!!!!
回复 支持 反对

使用道具 举报

0

主题

27

帖子

27

积分

贫民

积分
27
艾幻翔 发表于 2018-11-21 16:56:40 | 显示全部楼层
献丑
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Created by lightwave on 2017/9/6
  4. # Copyright (c) 2017 lightwave. All rights reserved.


  5. def check_credit_number(credit_card):
  6.     temp1 = credit_card[1::2]
  7.     temp2 = credit_card[::2]

  8.     temp_sum1 = sum(map(int, temp1))

  9.     # 第一步:中的每个数字乘2
  10.     temp2 = map(lambda x: x * 2, map(int, temp2))
  11.     # 第二步:将相乘的结果的每位数字相加
  12.     temp_sum2 = sum(map(int, "".join(map(str, temp2))))

  13.     # 数字相加,如果得数个位为0,则输入的信用卡号是有效的
  14.     return (temp_sum1 + temp_sum2) % 10 == 0


  15. if __name__ == '__main__':
  16.     credit_card = "43589795"
  17.     result = check_credit_number(credit_card)
  18.     print("result = %s" % result)
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表