for循环判断版本号是否需要更新

这里研究的是的版本的格式为:'a.a.a...a' ,a为整数

版本更新判断的基本逻辑是,从第一位到最后一位逐个比较,如果新大于旧,需要更新

否则不更新

分析一下,先用print来测试:

比较两个列表第一位到最后一位,两个列表相同位上的数大小,
从第一位开始到最后一位, 如果第m位,L1[m]比L2[m]大,打印L1大于L2
如果没有出现这种情况则 打印L2小于等L1,最终只出现一个打印结果

这里先取4位来模拟

old one :localversion='1.1.1.1'

new one:lasteversion='1.1.1.2'

很快就会想到ifelse 的形式来实现

# get = getlastversion.split('.')
# loc = localversion.split('.')
# print(f'新版本{get}')
# print(f'旧版本{loc}')
# if int(get[0]) > int(loc[0]):
#     print('需要版本更新')
# elif int(get[1]) > int(loc[1]):
#     print('需要更新版本')
# elif int(get[2]) > int(loc[2]):
#     print('需要版本更新')
# elif int(get[3]) > int(loc[3]):
#     print('需要更新版本')
# else:
#     print('不需要更新版本')

但是问题是如果版本号位数更多呢,这样肯定不行,还是要写for循环

version1

alist = ['4', '1', '2', '2']
blist = ['3', '1', '1', '3']
for one in range(0,4):
    if int(alist[one]) > int(blist[one]):
        print('需要版本更新')
    else:
        print('不需要需要版本更新')
# 这样肯定不对,因为输出结果是多个,无法判断是否需要更新,
判断出结果后,应该立即停止,所以需要添加break

version2

alist = ['4', '1', '1', '2']
blist = ['4', '1', '1', '3']
for one in range(0,4):
    if int(alist[one]) > int(blist[one]):
        print('需要版本更新')
        break
    else:
        print('不需要需要版本更新')
        break


# 发现还是不对,如果第一位相等,循环停止后,后面还没有判断,
可以发现相等时不能停止循环,还要接着判断后面几位的大小,
直到最后一位再输出

version3

alist = ['3', '1', '1', '3']
blist = ['3', '1', '1', '3']
for one in range(0,4):
    if int(alist[one]) > int(blist[one]):
        print('需要版本更新')
        break
else:
    print('不需要需要版本更新')

但是这种情况下,如果if里是True,会在循环结束时多打印一次,
所以不能放在循环最后,elseif,来判断我们发现只要没有出现
谁比谁大得情况下就不能停止循环,
如果不相等就停止循环并打印结果
所以:
for one in range(0,4):
    if int(alist[one]) > int(blist[one]):
        print('需要版本更新')
        break
    elif int(alist[one]) < int(blist[one]):
         print('不需要需要版本更新')
         break

基本对了,但是如果全部相等,应该也要打印不需要,这里最后结束做一层判断即可
有两种方式,第一种,elif 判断最后一位是否相等,如果相等则打印
for one in range(len(alist)):
    if int(alist[one]) > int(blist[one]):
        print('alist > blist')
        break
    elif int(alist[one]) < int(blist[one]): #or alist[len(alist) - 1] == blist[len(blist) - 1]:
        print('alist <= blist')
        break
还有就循环没有结束,说明完全相等,循环结束后在打印一次:
for one in range(len(alist)):
    if int(alist[one]) > int(blist[one]):
        print('需要版本更新')
        break
    elif int(alist[one]) < int(blist[one]):
        print('不需要需要版本更新')
        break
else:
    print('alist <= blist')
至此就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shan_non

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值