Python编写的计算跳过带有特定数字的车位数量小程序,并利用wxPython做成GUI界面打包成可执行文件(Part1)

 1.概述

         本文主要讲述利用Python来编写一个可以计算跳过带有特定数字的车位数量小程序。并且又利用第三方库wxPython做出GUI界面,打包成可执行文件。

        现实中有这样的实际案例,某楼盘的地下车库的数量有2000多个车位,车位分成了5个分区,每个分区有400-500个车位数量不等。并且车位的编号已经在图上一一编好了,比如起始号是001,终止号是720。但是营销人员在编写车位号码时避开了带有数字4和数字18的车位号,例如4、14、18、24、40、118、114等等,这样我们就不能直接用终止号减起始号再加一的算法来算出来车位的数量了。

        因此为了方便统计这种跳号的车位总数,我写了这么一段简单的代码。本代码利用的是python非常基础的知识,例如字符串的操作、列表的操作、for循环、input函数、自定义函数等等,由浅入深逐步完善整个代码。非常适合Python小白刚学完列表和字符串相关操作后练手使用。wxPython部分的应用也是非常基础的用法,主要是用户输入文本框、静态文本以及按钮控件的基础知识。

        为了方便给不会使用Python,电脑上也没有Python开发环境的人使用这个小工具,就需要我们做出GUI界面,并且打包成可执行文件。

2.代码实现

(1)Python环境代码实现

①基本的代码

        首先我们要声明两个变量,来获取用户输入的起始车位号和终止车位号,如下代码:

#  声明start_no变量,将用户输入的起始车位号数据存储到变量中。
start_no = input('请输入起始车位号:')
#  声明end_no变量,将用户输入的终止车位号数据存储到变量中。
end_no = input('请输入终止车位号:')

        我们获得了起始和终止车位号之后,就需要利用for循环把起始号到终止之间的所有的数字遍历出来,然后再把这些数字转换成字符串格式,用字符串判断的操作来判断‘4’和‘18’是否在遍历出来的数字字符串中,如果不在,则把这个数字存到一个列表里,最后计算列表的长度就可以得出车位总数量了。并且我们还可以把这个列表打印出来,以便做进一步对比使用。如下代码:        

#  用for循序来遍历起始号到终止号之间所有的数字
#  由于input函数获取的数据格式为字符串格式,因此需要用int()函数转换成整数类型
for i in range(int(start_no), int(end_no) + 1):
    # 判断“4”和“18”是否在字符串str(i)中,如果不在存储到列表中
    if "4" not in str(i) and '18' not in str(i):
        parking_no_lst.append(i)
#  用len函数计算列表长度,得出车位总数
print('车位总数量为:', len(parking_no_lst))
#  打印车位号列表
print("车位号分别为:", parking_no_lst)

        运行代码我们输入起始号为001,终止号为021,得出如下结果:

请输入起始车位号:001
请输入终止车位号:021
车位总数量为: 18
车位号分别为: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 21]
        我们看到运行的结果是正确的,计算出的每个车位号是没有4、14、18的。为了把输出的每个车位号的格式与输入的车位号格式一致,比如输入的是001,输出的具体车位号应该是001,002,003这样的,如果输入的是0001,那么输出的也应该是0001,0002这样的数,所以我们要对数据进行处理,如下代码:

for i in range(int(start_no), int(end_no) + 1):
    # 判断“4”和“18”是否在字符串str(i)中,如果不在则进行下一步处理
    if "4" not in str(i) and '18' not in str(i):
        #  判断位数是否相等,如果相等将i添加到parking_no_lst列表中
        if len(str(i)) == l:
            parking_no_lst.append(str(i))
        else:
            #  str(i)的位数与输入的车位位数少几位就加几个0
            parking_no_lst.append("0"*(l-len(str(i)))+str(i))

         上面的代码也可以直接简化为如下代码:

for i in range(int(start_no), int(end_no) + 1):
    # 判断“4”和“18”是否在字符串str(i)中,如果不在则进行下一步处理
    if "4" not in str(i) and '18' not in str(i):
        parking_no_lst.append("0" * (l - len(str(i))) + str(i))

        运行代码我

  • 43
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值