python:比较字符串/整数的值

python:比较字符串/整数的值,python,Python,我将比较如下两个值:\ value1>value2 我知道value2总是一个整数,但有时value1是None或字符串,如何仅在value1是数字时强制进行比较 value1是十进制的Python 3 Python 3 Python你能在小数点上也使用这个吗?intcast在小数点上不会很好地工作。而isdigit()只对字符串有效。您可以使用hasattr检查isdigit是否存在,并将int更改为Decimal,以确保可以比较int和Decimal。isdigit是否会在1.123

我将比较如下两个值:\

value1>value2
我知道value2总是一个整数,但有时value1是None或字符串,如何仅在value1是数字时强制进行比较

value1是十进制的

Python 3 Python 3
Python你能在小数点上也使用这个吗?
int
cast在小数点上不会很好地工作。而
isdigit()
只对字符串有效。您可以使用
hasattr
检查
isdigit
是否存在,并将
int
更改为
Decimal
,以确保可以比较int和Decimal。isdigit是否会在1.123返回true?正如我所说的,这只适用于字符串。但是,如果您的输入经过净化(所有字符串都可以转换为
Decimal
),那么您可以使用简单的
if value1
Decimal(value1)>value2
对十进制也可以使用它吗?
int
转换对十进制不起作用。而
isdigit()
只对字符串有效。您可以使用
hasattr
检查
isdigit
是否存在,并将
int
更改为
Decimal
,以确保可以比较int和Decimal。isdigit是否会在1.123返回true?正如我所说的,这只适用于字符串。但是,如果您的输入经过净化(所有字符串都可以转换为
Decimal
),那么您可以使用简单的
if value1
Decimal(value1)>value2
来处理十进制数吗?是的。前者是因为Py3k不允许比较不同的类型,后者是因为我们只允许
int
s。在问这么简单的问题之前,你应该试着思考一下代码在做什么。你能用这个小数点吗?是的。前者是因为Py3k不允许比较不同的类型,后者是因为我们只允许
int
s。在问这么简单的问题之前,你应该试着思考一下代码在做什么。你能把这个也用在小数点上吗?是的,你能。这两个异常是在尝试将None或另一个无法强制转换为int的对象转换为None或另一个对象时引发的。可以强制浮点(1.23),因此不会引发异常。是否也可以对十进制使用此选项?是的,可以。这两个异常是在尝试转换None或其他无法强制转换为int的对象时引发的。可以强制转换浮点(1.23),因此不会引发异常。
try:
    value1 > value2
except TypeError:
    pass
if isinstance( value2, int ):
    value1 > value2
try:
    int(value1) > value2
except (TypeError, ValueError):
    pass
if value1:
    Decimal(value1) > value2