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

标签 python type-conversion syntax-error

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

相关文章:

python - 如何将单元格填充设置为透明/无填充

c# - 为什么在c#.NET中 "Enum"编译成功, "enum"编译失败?

php - PHP语法错误

python - 如何在 flask-sqlalchemy 中建立三向多对多关系

python - raise Exception, "foo"和 raise Exception ("foo"之间的区别)?

python - 执行查询时 PyODBC Python 3 错误(Ubuntu 14.04)

php - 在 PHP 中将整数转换为字符串

c++ - 转换 VS 2010 和 2015 之间的差异

memory-management - Golang 中 []byte 和 string 转换的技术问题

php - 无法在数据库中存储文件详细信息