python找出肇事者_python100例详解

python找出肇事者_python100例详解抓交通肇事犯1.问题描述一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

抓交通肇事犯

 

1.问题描述

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同:丙是数学家,他说:4位的车号刚好是一个整数的平方。请根据以上线索求出车号。
 

2.确定程序框架

python找出肇事者_python100例详解
根据流程,构建程序框架如下:

if __name__ == '__main__':
    # i代表前两位车牌号数字,j代表后两位车牌号数字,k代表车牌号
    for i in range(10):
        for j in range(10):  # 穷举前两位和后两位车牌数字
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出

 

3.判断车牌k是是否为某个数的平方,是就输出

再次利用循环来实现,循环变量 temp求平方后和车牌号k比较,相等则投到车牌号,优化算法,temp的初值应该从31开始,因为小于30的数的平方小于4位数。故该层循环为最内层循环,对每一个年牌号均作如此操作。

for temp in range(31, 100):
    if temp * temp == k:
        print("车牌号为:", k)

 

4.完整程序

根据上面的分析,完整程序如下:

if __name__ == '__main__':
    # i代表前两位车牌号数字,j代表后两位车牌号数字,k代表车牌号
    for i in range(10):
        for j in range(10):  # 穷举前两位和后两位车牌数字
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出
                for temp in range(31, 100):
                    if temp * temp == k:
                        print("车牌号为:", k)

 

5.运行结果

Pycharm运行程序,结果如下

车牌号为: 7744

 

6.优化算法

针对上述程序,如果已经找到相应的车牌号,请读者考虑循环是否还需要继续呢?答案是肯定的,因为算法在设计穷举循环的时候,并没有在找到车牌的时候就退出循环,而是继续穷举其他ij的情况。我们可以改进算法,设置一个“标识变量”,该变量初值为0,一旦找到车牌号,则改变该标识变量的值为1,每次循环判断一下标识变量的值。如果值为1,则退出所有循环,这样能有效的减少循环次数,改进的程序如下:

if __name__=="__main__":
    # i代表前两位车牌号数字,j代表后两位车牌号的数字,k代表车牌号
    flog = 0  # 循环标识变量,为1时推出所有循环
    for i in range(10):
        if flog:
            break
        for j in range(10):  # 穷举前两位和后两位车牌数字
            if flog:
                break
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出
                for temp in range(31, 100):
                    if temp * temp == k:
                        print("车牌号为: ", k)
                        flog = 1
                        break
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164831.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站

    防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站我们来看一下以下这2个网址:http://www.lcbc.com.cn、http://www.baiud.com,在此之前大家有没有发现有什么异样?仔细一看,大家会发现…

    2025年9月11日
    7
  • Git使用之基于SSH的Gitserver的client配置(下篇)[通俗易懂]

    Git使用之基于SSH的Gitserver的client配置(下篇)

    2022年1月31日
    45
  • asp中的session使用方法详解

    asp中的session使用方法详解ASP中: SESSION必须倚赖COOKIE才可用,SESSION是存储在服务器端的,而COOKIE是存储在客户端的,相对而言,SESSION的安全性和可靠程度都比COOKIE高 ASP.NET中 SESSION可以不依赖COOKIE而存在!!! 也就是说,从微软的方面来说,开始让SESSION摆脱COOKIE的束缚了!!Session数据是存储在服务器上的,C

    2022年7月15日
    18
  • 常见算法时间复杂度

    常见算法时间复杂度时间复杂度算法分析同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。一、时间复杂度(1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费

    2022年5月15日
    43
  • java migration_EF Add-Migration总结

    java migration_EF Add-Migration总结EFCodeFirst 对数据库任何的操作 千万不要手工去修改 解释 add migration 命令是 codefirstmig 中的关键命令之一 当您对领域域模型进行更改并需要将它们时添加到数据库中 您将创建一个新的迁移 这是通过 Add Migration 命令完成的 用最简单的形式 你只需要提供迁移名称展现形式 命令将您的更改构建到一个 cs 文件中 这个 cs 文件与配置文件放在同一个文件

    2025年7月29日
    4
  • Android Protobuf应用及原理「建议收藏」

    Android Protobuf应用及原理

    2022年3月13日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号