我正在编写一个通过 rpm 包执行的脚本,我试图将包的发行版本与命令行上提供的两个参数 --fromVersion 和 --toVersion 进行比较。
我这样运行脚本:
python packageSearch.py --package --fromVersion 5.5.0 --toVersion 7.0.0
即使我尝试将命令行参数转换为字符串,我也会得到以下结果:
if ( float(package['version']) >= float(options.fromVersion) and package['version'] <= options.toVersion ):
ValueError: invalid literal for float(): 7.0.21
我搜索了 stackoverflow 和谷歌,但令我惊讶的是我没有找到任何比较 int 和 float 的好例子,或者如果用户输入 float,它必须比较 float 和 float。
我也尝试过不转换,然后就可以了,但是比较是错误的。
为什么 python 在这个语句中说无效语法:
version3 = 5.5.5
File "<stdin>", line 1
version3 = 5.5.5
^
SyntaxError: invalid syntax
但如果我尝试以下操作:
version3 = 5.5
它按预期正常工作。这是怎么回事,为什么我不能将 5.5.5 分配给变量,以及将可能是整数或 float 的值与另一个 float 进行比较的最佳方法是什么,因为使用 float() 将其转换为 float 不会似乎有效。
最佳答案
但是“5.5.0”不是 float 。为什么您期望 Python 能够将其转换为一个?版本不是简单的十进制数字,版本的任何元素都可以大于 10:例如“5.11.35”是一个完全有效的版本。
您需要将变量分成三个独立的整数,然后分别进行比较。
关于Python 将 "5.4"但不是 "5.4.4"转换为 float ,这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809401/