鱼C论坛

 找回密码
 立即注册
查看: 1538|回复: 2

[已解决]我这个程序哪里出了问题,为什么结果不一样?

[复制链接]
发表于 2022-3-6 21:45:37 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 风百默 于 2022-3-6 21:46 编辑

2edf5410794d28fd.jpg -23f3a3215f54b02b.jpg
def validCreditCard(num):
    num=str(num)
    a=[int(x) for x in num]
    if len(a)==8:
        n=1
        for i in a:
            s1=0
            s2=0
            if n%2!=0:
                c=str(i*2)
                b=[int(x) for x in c]
                s1+=sum(b)
                n+=1
            else:
                s2+=i
                n+=1
        s=str(s1+s2)
        if s[-1]=='0':
            valid=True
        else:
            valid=False
    else:
        valid=False
    return valid
for num in [1234567, 43589795, 87539319, 123456789]:
        valid = validCreditCard(num)
        print(valid)
最佳答案
2022-3-6 21:45:38
  1. def validCreditCard(num):
  2.     num=str(num)
  3.     a=[int(x) for x in num]
  4.     if len(a)==8:
  5.         n=1
  6.         s1=0             # 不要把 s1 和 s2 的赋值放循环里,否则每次循环都会被重置为 0
  7.         s2=0
  8.         for i in a:
  9.             
  10.             if n%2!=0:
  11.                 c=str(i*2)
  12.                 b=[int(x) for x in c]
  13.                 s1+=sum(b)
  14.                 n+=1
  15.             else:
  16.                 s2+=i
  17.                 n+=1
  18.         s=str(s1+s2)
  19.         if s[-1]=='0':
  20.             valid=True
  21.         else:
  22.             valid=False
  23.     else:
  24.         valid=False
  25.     return valid
  26. for num in [1234567, 43589795, 87539319, 123456789]:
  27.         valid = validCreditCard(num)
  28.         print(valid)
复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-6 21:45:38 | 显示全部楼层    本楼为最佳答案   
  1. def validCreditCard(num):
  2.     num=str(num)
  3.     a=[int(x) for x in num]
  4.     if len(a)==8:
  5.         n=1
  6.         s1=0             # 不要把 s1 和 s2 的赋值放循环里,否则每次循环都会被重置为 0
  7.         s2=0
  8.         for i in a:
  9.             
  10.             if n%2!=0:
  11.                 c=str(i*2)
  12.                 b=[int(x) for x in c]
  13.                 s1+=sum(b)
  14.                 n+=1
  15.             else:
  16.                 s2+=i
  17.                 n+=1
  18.         s=str(s1+s2)
  19.         if s[-1]=='0':
  20.             valid=True
  21.         else:
  22.             valid=False
  23.     else:
  24.         valid=False
  25.     return valid
  26. for num in [1234567, 43589795, 87539319, 123456789]:
  27.         valid = validCreditCard(num)
  28.         print(valid)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-7 11:07:29 | 显示全部楼层
本帖最后由 qq1151985918 于 2022-3-7 11:12 编辑
  1. def isValid(n: str or int) -> bool:
  2.     n = str(n)
  3.     if len(n) != 8:
  4.         return False
  5.     fun = lambda x: sum([int(i) for i in str(int(x) * 2)])
  6.     a = sum(map(int, n[1::2]))
  7.     b = sum(map(fun, n[0::2]))
  8.     return False if (a + b) % 10 else True

  9. if __name__ == "__main__":
  10.     cardnum = input("Please Enter The CardNum:")
  11.     print(isValid(cardnum))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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