首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要在Python2中做一个EAN-13号有效性检查器。我不明白这为什么行不通

在Python2中实现EAN-13号有效性检查器是可行的,但需要注意Python2已经不再被官方支持,建议使用Python3进行开发。

EAN-13是一种国际商品条码标准,用于唯一标识商品。它由13位数字组成,其中最后一位是校验位,用于验证条码的有效性。

要实现EAN-13号有效性检查器,可以按照以下步骤进行:

  1. 首先,需要了解EAN-13号的校验算法。EAN-13号的校验位计算方法是通过对前12位数字进行加权求和,并将结果取模10,再用10减去模10的结果作为校验位。具体的计算方法可以参考相关资料。
  2. 在Python中,可以使用字符串操作来处理EAN-13号。首先,将输入的EAN-13号转换为字符串类型,然后提取前12位数字。
  3. 接下来,根据EAN-13号的校验算法,对前12位数字进行加权求和。可以使用循环遍历每一位数字,并根据其位置(奇数位或偶数位)进行加权求和。
  4. 计算加权求和的结果取模10的余数,并用10减去余数得到校验位。
  5. 最后,将计算得到的校验位与输入的EAN-13号的最后一位进行比较,如果相同,则说明EAN-13号有效;如果不同,则说明EAN-13号无效。

以下是一个示例代码,实现了在Python2中的EAN-13号有效性检查器:

代码语言:txt
复制
def validate_ean13(ean):
    ean = str(ean)
    if len(ean) != 13:
        return False

    check_digit = int(ean[-1])
    ean = ean[:-1]

    weighted_sum = sum(int(ean[i]) * (3 if i % 2 == 0 else 1) for i in range(12))
    calculated_check_digit = (10 - (weighted_sum % 10)) % 10

    return check_digit == calculated_check_digit

# 示例用法
ean = "5901234123457"
if validate_ean13(ean):
    print("EAN-13号有效")
else:
    print("EAN-13号无效")

在这个示例代码中,我们定义了一个validate_ean13函数,接受一个EAN-13号作为参数。函数首先检查输入的EAN-13号长度是否为13位,然后提取校验位和前12位数字。接下来,使用循环遍历前12位数字,并根据其位置进行加权求和。最后,计算加权求和的结果取模10的余数,并用10减去余数得到校验位。最后,将计算得到的校验位与输入的EAN-13号的最后一位进行比较,如果相同,则返回True,表示EAN-13号有效;如果不同,则返回False,表示EAN-13号无效。

请注意,由于Python2已经不再被官方支持,建议使用Python3进行开发。在Python3中,字符串的操作和语法略有不同,但基本的算法和逻辑是相同的。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云官方文档或咨询腾讯云的技术支持团队,获取相关产品和服务的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 Swift 创建简单的二维码扫描应用

排着长队等待结账的商店,帮助旅客记录包裹和航班信息的机场,帮助大型零售商处理大量无聊的存货清单,这些场景非常适合使用条码扫描。此外,条码扫描也能帮消费者进行智能购物和产品分类。...既然它这么棒,不如我们在 iPhone 上做一个吧! 幸运的是,对 Apple 开发者来说,实现条码扫描非常容易,苹果大法好!...能够实现读取条码的功能,非常的酷,但是我们的野心不止于此,我们会对识别的条码内容作进一步的操作。 本不该再多啰嗦,不过还是友情提醒一下,这个条码扫描 app 只有在设备具有摄像头时才能正确工作。...我们需要在 barcodeDetected() 做一些操作。第一个任务是弹出一个提示框告知用户,我们扫描到了一个条码。然后将扫描到的信息转化为我们需要的内容。 必须去掉扫描内容的空格。...同时需要在 deinit 移除监听者。 ? 当监听到通知的时候,setLabels() 方法将会被调用。这里我们将使用 DataService.swift 的原始字符串来初始化Album 对象。

1.9K20

Anaconda完全入门指南 原

概述 很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有什么用, 是用来做什么的, 为什么要这么做, 比如笔者一开始也是不明白为啥除了...在使用过之后才逐渐发现其实anaconda等环境管理工具究竟在做啥, 以及为什么我们需要他们来管理我们的python环境 首先我们需要先去了解Anaconda诞生的目的.再去了解Anaconda的使用方法...解释 解释根据python的版本大概分为2和3. python2和3之间无法互相兼容, 也就是说用python2语法写出来的脚本不一定能在python3的解释运行....包管理 如果在本地只有一个python环境那我所有程序用到的各种包都只能放到同一个环境, 导致环境混乱, 另外当我将写好的程序放到另一电脑上运行时又会遇到缺少相关包, 需要自己手动一个个下载的情况,...image.png 比如你要在learn环境编写程序, 那么就修改为D:\Software\Anaconda\envs\learn, 可以看到这时候下面的依赖包也变成了learn环境的包了.接下来我们就可以在

90320
  • Python高效代码实践:性能、内存和可用性

    Objgraph 可以帮助您找到反向引用,以明白为什么它们不能被释放。您可以在 这里[4] 阅读更多关于在Python诊断内存泄漏的信息。...另一方面,您可能希望使用仅支持 Python2 的包,而Python3 不能向后兼容。意味着在 Python3.x 的解释上运行 Python2 的代码可能会抛出错误。...不过,编写能同时跑在 Python2 和 Python3 解释的代码是可能的。...覆盖度测量通常用于测量测试的有效性。它可以显示您的代码的哪些部分被测试执行了,哪些没有。通常建议有 100% 的分支覆盖度,意味着您的测试应该能够执行和验证项目的每个分支的输出。...CI 的一些典型检查包括: 在现实环境运行测试。有些情况下,测试在某些架构上通过,而在其他架构上失败。CI 服务可以让您在不同的系统架构上运行测试。 对您的代码库执行覆盖度约束。

    91340

    Python 2和Python 3的区别?

    有人可能就有疑问了,Python2 明明也看到当函数使用: # py2 print("hello") # 等价 print ("hello") #py3 print("hello") 然而...的默认编码是 asscii,这也是导致 Python2 中经常遇到编码问题的原因之一,至于是为什么会使用 asscii 作为默认编码,原因在于 Python这门语言出来的时候还没出现 Unicode。...在 Python2 ,字符串有两个类型,一个是 unicode,一个是 str,前者表示文本字符串,后者表示字节序列,不过两者并没有明显的界限,开发者也感觉很混乱,不明白编码错误的原因,不过在 Python3...# py3 >>> True = 1 File "", line 1 SyntaxError: can't assign to keyword 迭代Python2 很多返回列表对象的内置函数和方法在...Python2的迭代必须实现 next 方法,而 Python3 改成了 next nonlocal 我们都知道在Python2可以在函数里面可以用关键字 global 声明某个变量为全局变量,但是在嵌套函数

    72420

    微信小程序之登录态探索

    通常的登录都是通过一个表单,很正常,但如果在小程序里你也这么做那就有点不可思议了,微信的一键登录对用户体验有多好你难道不知道?不用是不是脑子有坑?...所以之前直接通过调用API的方式就行不通了,那么问题来了——这个点击按钮要放到哪里? 放到首页,一进小程序就必须先登录。...session_key 的有效性 诚如上图: 1、要保证调用接口时后端 session_key 不失效,只能在每次调用前先使用 wx.checkSession 检查是否有效 2、实践也发现 wx.checkSeesion...当然可以,不过不够完美,为什么?...因为storage是永久的存储,而 session_key 的有效期却只是在使用小程序期间,所以你需要在小程序结束后手动重置该状态以重新校验其有效性,那是不是在app的onUnload里重置呢?不是!

    1.4K20

    云原生关乎文化,而不是容器

    12 因素 节约成本、弹性和交付速度都很好,但我们只要在云端就能得到这些。为什么我们需要云原生?我们需要云原生的原因是,很多公司发现他们试图上云,结果被电死了。...之所以说这是格外可怕的坏事,是因为一个正常的、非分布式的单体有诸如编译时检查类型和同步的、有保证的内部通信。在单进程运行会损害你的可扩展性,但意味着你不能被分布式计算的谬误所困扰。...为什么持续集成而不持续部署 和很多客户交流,他们会说:“我们有一个 CI/CD。” 给我们敲响了警钟,因为 CI/CD,不应该是你买了一个工具,放在服务上,然后欣赏,说 “有 CI/CD。...是啊,这么多,不明白钱都花到了哪里,也不明白是谁花的。” 用云端配置硬件是如此简单,但并不意味着硬件是免费的。还是要有人为它付费。硬件很容易配置,也不能保证硬件有用。...这样做很好,直到自动检查坏了,这时需要进行更改。一位工程师说:“哦,但我真的想做这个改动。就绕过自动检查,直接把的代码推送给空间探测,因为,的代码当然是完美的。”

    49640

    自动剪发机器人万圣节变身3D南瓜雕刻机!还能刻上女儿画作,油管播放300w+

    大数据文摘出品 作者:牛婉杨 还记得YouTube上那位制作“百发百”篮板的博主Shane Wighton吗?...想到这里,Shane自己都吐槽到,从没见过谁专门做个机器人来雕刻南瓜,“可能因为真的很蠢,但我就喜欢做这种蠢东西”。 既然决心要做,那就别灰心,一件一件来解决。...Shane险些怀疑人生,“不明白为什么这个行不通已经敲了几个小时有关墨卡托投影的代码了。” 经过一番调整,终于,像那么回事了。...Shane想到一个办法,用一个特殊的工具来帮助机器定位,就像这样,一个蓝色的触发: 当这个触发的开关闭合,就说明找对了位置,可以开始雕刻了。...成品大合集 切割出形状相对来说比较简单,Shane准备把他女儿的画刻在南瓜上,来做一个南瓜灯。 一切工作都已就绪,只需把图案转换成三维,just do it !

    47810

    半年后,再谈 Python3.10

    2021 年 10 月 4 ,Python 官方正式发布了 Python3.10.0(https://www.python.org/downloads/release/python-3100/)。...至于为什么没有 Python4.0 ,在 InfoQ 的这篇文章《Python 之父:Python 4.0 可能不会有了》给出了解释: Python 4,在这个问题上,无论是什么时候,只要核心开发团队一提到它...,基本只是当做一个玩笑…… 我们已经从 Python 3 和 Python 2 中学到很多东西,因此,在严肃的意义上,谈论 Python 4 几乎是一个禁忌。...因此,即使是 Python2 进入了“死亡”状态,像很多公司的底层操作系统的默认语言依然是 Python2。除此之外,还有好多基于 Python2 的框架和组件,也要兼容新的版本 Python3。...,全局解释锁);如果其中一种或两种出现,我们可能会被迫调用 4.0,因为 C 扩展层面的兼容性问题。

    69810

    JAVAAction层, Service层 ,modle层 和 Dao层的功能区分

    大家好,又见面了,是全栈君。 JAVAAction层, Service层 ,modle层 和 Dao层的功能区分 首先这是现在最基本的分层方式,结合了SSH架构。...Action是一个控制 首先解释面上意思,service是业务层,dao是数据访问层。...呵呵,这个问题曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道...,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。...再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,就去数据库取,业务几乎没有。 怎么说呢,不是理论帝。

    94130

    太多的安全技术失效,为什么

    因此,这项研究的目的是试图理解,背后的原因是什么?如果我们花了更多的钱,为什么我们没有得到更好的安全保障?如图1所示。...但实际上,采访过的人中有90%的人说他们从市场上购买的安全技术存在功效问题。技术并没有实现供应商所声称那样的效果,用户也没有从采购得到好处。...图2 安全有效性的四个方面 第一是能力,这项技术是否有能力做好供应商声称它可以做的事情?能够验证能从中获得安全效果吗? 第二个是是否实际,能在的环境实际使用它吗?...真的是可以在的公司里使用的东西吗,而不需要什么顶尖的高手来使用它,让它工作吗? 第三个是质量,即产品的设计和质量如何,能否避免漏洞或负面影响? 第四个是来源,即供应链是否安全。...下一步是研究,为什么?我们为什么要遭受这些?为什么无效的解决方案会进入市场?真正的问题是什么? 本论坛就是为了分享一些我们参与的关于网络安全技术有效性的独立研究。

    68220

    软件测试面试题分享No.2

    让我们一起看一下为大家收录的面试题: 为什么要在一个团队开展软件测试工作?...因为没有经过测试的软件很难在发布之前知道该软件的质量,测试同样也需要质量的保证,这个时候就需要在团队开展软件测试的工作。...,需要检查是不是因为与服务的连接有问题,或者访问有问题造成的; 5、在系统没有任何负载的情况下,查看性能监视,确认应用程序对 CPU/内存的访问情况。...、python2 range(1,10)返回列表,python3返回迭代,节约内存 3、python2使用ascii编码,python3使用utf-8编码 4、python2unicode表示字符串序列...,str表示字节序列 python3str表示字符串序列,byte表示字节序列 5、python2为正常显示中文,引入coding声明,python3不需要 6、python2是raw_input

    43730

    马斯克向推特员工服软:放开远程办公,可每周坐班一次

    言外之意:求求大家了,别走了行吗。 ……是怎么回事儿?老马也有如此“卑微”之时???...通过他本人批准。 马老板日理万机,基本是把“不允许”写在脸上了。 而在规定下来后,所有“幸存”员工需要在一周时间内考虑是否接受这一“硬核(hardcore)”管理。...正如一位老员工在内部网络发帖所说: 在推特工作已超11年。7月份的时候在公司的终身雇员排名位列第27位,现在是第15个了。 如今,这一切都超出了马斯克的预期。...有人表示,看来这一“霸王硬上弓”的方式行不通啊。 可是为什么特斯拉和Space X就能让员工接受严苛的工作要求呢? 有观点认为: 主要是因为特斯拉和Space X的员工有目标支撑。...据说要到21才开。 有原因猜测是因为马斯克担心有人要在内部搞破坏???

    27120

    BeanUtil的正确使用方式

    在实际的开发,我们常常会用到工具类去拷贝对象的属性,将一个对象的属性转换成另外一个对象的属性值。首先:答应不要去自己重复造轮子,写Beanutil了,为什么不去使用现成的工具类呢?...貌似文章在这里就可以结束了,因为已经符合大多数的场景需求了。 但是,就怕会这个但是。...我们有需求是这样的: 忽略空值:当源对象的值为null时,可选择忽略而不注入此值,否则注入null 目标对象有值不覆盖:原对象为null,则覆盖 是不是感觉原来的方法行不通了,是的,原来方法太单一了,但是我们调用...2、是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入null 3、忽略的属性列表,设置一个属性列表,不拷贝这些属性值 似乎还是有些不明白对吧,现在我们来看看怎么使用...的知乎主页 掘金 shigen01 shigen的掘金主页 腾讯云开发者社区 shigen shigen的腾讯云开发者社区主页 微信公众平台 shigen 公众

    25310

    1.Python3扩展知识之笔试操作总结(一)

    如果要在一个字符串嵌入一个双引号,正确的做法是? 你有两个选择:可以利用反斜杠(\)对双引号转义:\”,或者用单引号引起这个字符串。例如:’ I l”o”ve fishc.com ‘。...为什么我们要使用 Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?...(3)一般来说我们可以用Ta再程序中置入检查点,当需要确保程序的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。...另外,许多通讯服务的客户端/服务系统也是通过这样的原理来工作的。...先将 12 个球混合放在一个盒子,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。 #!

    82310

    【玩转腾讯云】万物皆可Serverless之借助微信公众简单管理用户激活码

    Serverless之在Flutter快速接入腾讯云开发 万物皆可Serverless之在Flutter写一个Dart原生腾讯云对象存储插件 万物皆可Serverless之的Serverless之路..._083336.jpg 可以看到,现在我们只需要在自己的微信公众后台回复 会员@激活时长 就可以添加并回复一个指定有效期的会员激活码,实现了在微信公众简单管理用户激活码的需求 二、开始教程 第一步...第三步:配置云函数Timer定时触发 可参考之前的系列文章《万物皆可Serverless之使用云函数Timer触发实现每天自动定时打卡》 第四步:上线发布云函数,添加api网关触发、启用响应集成...可参考之前的系列文章《万物皆可Serverless之使用SCF+COS快速开发全栈应用》 第五步:修改微信公众后台服务配置 可参考之前的系列文章《万物皆可Serverless之使用SCF+COS...免费运营微信公众》 三、文章最后 预告一下 本专栏下一篇文章将继续带大家使用SCF+COS 做一个简单的类似给未来写封信功能的小应用 今天就到这里了,拜~

    1.4K1511

    Python3笔试实际操作基础1.md

    如果要在一个字符串嵌入一个双引号,正确的做法是? 你有两个选择:可以利用反斜杠(\)对双引号转义:\”,或者用单引号引起这个字符串。例如:’ I l”o”ve fishc.com ‘。...为什么我们要使用 Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?...(3)一般来说我们可以用Ta再程序中置入检查点,当需要确保程序的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。...另外,许多通讯服务的客户端/服务系统也是通过这样的原理来工作的。...先将 12 个球混合放在一个盒子,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。 #!

    65010

    DIY无刷电机控制:画板、打样、焊接、调...

    而这也就是为什么基本所有的商业控制全是nmos的原因。 但是,上臂用nmos存在一个问题vgs控制电压大与vcc 4v以上才能完全导通。...为了简化电路采用了ir公司出的驱动ic,它内部有自举升压电路,外部仅一个续流的二极管及储能电容即可。 ? ? 有感模式控制相对简单,3个霍尔传感输出一般都是数字信号,分压后直接接单片机io。...如下图,当然很多时候需要在4.7k对地的电阻上并一个100nf的电容,做一个低通滤波,也可以在软件做滤波处理。而我们所要做的,就是检测这个悬浮相的电动势过零点。 ?...理想很完美,现实很残酷,实际根本得不到这么完美的波形。如下图,这个已经是比较好的了,但还是有很多毛刺。这个给单片机中断,肯定一大堆问题,严重的换错相烧mos管。 ? ? 为什么会有这些毛刺呢?...参考了网上的介绍,中间还有一个叫消磁的东西。 ? 原理不深究了,反正时间很短,软件上做一个滤波消掉就可以了。 进入中断函数后,做如下处理,定时的中断暂时用的20us。 ? ? ?

    2.2K20

    如何判断自己是否具有成为一名优秀程序员的潜质

    剩下的5%对于整个软件的有效性十分重要,能造成完全相反的结果。 ««« 如果你讨厌细节,你就别去做程序员。 2) 学无止境 ---- 起初这句话听起来会很迷人,你会很喜欢!喜欢学习新事物!...而在现实生活,有的是压力,虽然不是时刻都这样,但事情会比那种做一个30分钟的简单在线辅导要不同的多。喜欢挑战的极限,渴望成长,变成一个更棒的程序员,所以我不介意。...5) 好奇心 ---- 当我还是十几岁时,教堂里的一位夫人几乎每月都会对我说一次,她说应该停止问那么多为什么,她说让人讨厌。虽然受了批评,最终还是清楚的认识到,优秀的程序员总是在问“为什么?”...程序员之间的对话听起来总是像这样开始的:“很奇怪他们为什么要这样做…?” 以前以为问这么多为什么是很奇怪的表现,但现在明白,至少是在软件开发,这是一个好的品质。...««« 不明白的事情会引起你的好奇心吗?新事物会让你兴奋的想搞清楚它的原理吗?如果你不具有某种程度天生的好奇心,那么你就很可能不喜欢做一名程序员。

    60760

    一些常见的新手问题

    另一条是直接用文本编辑写代码,然后在命令行运行。文本编辑推荐 SublimeText。 3. IDLE 里为什么只能写一行代码? IDLE 默认打开的是 Python 命令行,可用来调试语句。...所以编写输入相关的代码请在命令行或 IDE 运行。 5. 输入为什么报错?输入的值比较大小为什么结果不对?...对于数字类型的输入,额外做转换。 6. print 为什么报错? 需要输出一个已定义的值。输出字符串需要加引号。Python3 的 print 需要加括号。 7....该学 Python2 还是 Python3? 一贯的观点是,学哪个都一样,学会之后转另一个都是分分钟的事情。之前大多数教材和第三方的模块都基于版本2,的教程也是,所以我倾向于2。...为什么程序里加了中文就报错? 这是因为对字符的编码没有处理好。这也是 Python2 广为诟病的一块。

    74090
    领券