gpt4 book ai didi

Python 将 "5.4"但不是 "5.4.4"转换为 float ,这是怎么回事?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:48 25 4
gpt4 key购买 nike

我正在编写一个通过 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/

25 4 0