ZBLOG

def isValid(number): summary = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number) if summary % 10 == 0: print('The number is valid') else: print('The number is invalid') def sumOfDoubleEvenPlace(number): return s...

这个程序存在一些问题:

  1. getDigit 函数中,对于超过10的数字,计算出错。应该将 digit1 // 10 + digit1 % 10 修改为 [digit1 // 10, digit1 % 10],以保持返回一个列表。

  2. sumOfOddPlace 函数中,对于输入长度为奇数的情况下可能会出错。可以在函数开头添加一个判断条件来处理这种情况。

  3. main 函数中,在调用 isValid(number) 前没有对输入的信用卡号进行有效性检查(如长度、合法字符等)。建议添加相应的检查逻辑。

修正后的代码如下所示:

  1. def isValid(number):
  2. summary = sumOfDoubleEvenPlace(number) + sumOfOddPlace(number)
  3. if summary % 10 == 0:
  4. print('The number is valid')
  5. else:
  6. print('The number is invalid')
  7. def sumOfDoubleEvenPlace(number):
  8. return sum(getDigit(number))
  9. def getDigit(number):
  10. i = -2
  11. digitEven = []
  12. while True:
  13. try:
  14. digit1 = int(number[i])
  15. if digit1 * 2 < 10:
  16. digitEven.append(digit1 * 2)
  17. i -= 2
  18. else:
  19. digitEven += [digit1 // 10, digit1 % 10]
  20. i -= 2
  21. except IndexError:
  22. break
  23. return digitEven
  24. def sumOfOddPlace(number):
  25. i = -1
  26. digitOdd = []
  27. while True:
  28. try:
  29. digit2 = int(number[i])
  30. digitOdd.append(digit2)
  31. i = i - 2
  32. except IndexError:
  33. break
  34. return sum(digitOdd)
  35. def main():
  36. number = input('Please enter your credit card number: ')
  37. if len(number) < 13 or len(number) > 16:
  38. print('Invalid credit card number')
  39. return
  40. for char in number:
  41. if not char.isdigit():
  42. print('Invalid credit card number')
  43. return
  44. isValid(number)
  45. main()

这样修改后的程序可以正确判断信用卡号的有效性,并且会对输入进行一定的有效性检查。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10234

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?