这里研究的是的版本的格式为:'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')
至此就完成了