|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神,
题目如附件:我的解题思路大概是比较''. ''左边的的int(字符串)大小 ,如果相等,则将v1 /v2 左边消除掉. 进行下一次比较。。。
但是我改了几次都错了,有大神帮我看看错在哪了,应该怎么改么 。。。
'''动动手'''
v1 = input('请输入第一个版本号,v1 = ')
v2 = input('请输入第二个版本号,v2 = ')
loca1 = v1.find('.')
loca2 = v2.find('.')
while (loca1 != -1) and (loca2 != -1):
left1 = int(v1[:v1.find('.')])
left2 = int(v2[:v2.find('.')])
print ([left1,left2])
if left1 != left2:
if left1 > left2:
print('V1')
break
else:
print('V2')
break
else:
v1 = v1[v1.find('.')+1:]
v2 = v2[v2.find('.')+1:]
print ([v1,v2])
loca1 = v1.find('.')
loca2 = v2.find('.')
else:
if int(v1) == int (v2):
print ('v1 = v2')
print('v1') if int(v1)> int(v2) else print('v2')
本帖最后由 白two 于 2022-3-30 23:54 编辑
错误原因:
如果有一个提前结束,例如: 1.2.3.4 1.2, 就会导致有一个截取的是 2.3.4 这种格式的字符串, 或者 1.2.3.4 1.2.6 结束的时候是有一个是 3.4, 这两种都不能使用 int 进行转换, 尤其第一种 float 都不行
我的建议是去特殊化, 即所有的输入辨别一下, 都转换为 0.0.0 或者 0.0.0.0 诸如此类这种格式, 然后再挨个比大小
如下
- v1 = input('请输入第一个版本号,v1 = ')
- v2 = input('请输入第二个版本号,v2 = ')
- v1_lst = v1.split('.')
- v2_lst = v2.split('.')
- while len(v1_lst) < len(v1_lst):
- v1_lst.append('0')
- while len(v2_lst) < len(v1_lst):
- v2_lst.append('0')
- equal = 1
- for i in range(len(v1_lst)):
- num_v1 = int(v1_lst[i])
- num_v2 = int(v2_lst[i])
- if num_v1 > num_v2:
- print(v1)
- equal = 0
- break
- elif num_v1 < num_v2:
- print(v2)
- equal = 0
- break
- if equal == 1:
- print('v1 = v2', v1)
复制代码
|
-
|