如果参数是表示有效整数的字符串,如何在 python 中创建 return 语句?

How to make a return statement in python if the argument is a string that represents a valid integer?

如果我写一个主程序来测试它的函数 def as_integer(an_object) 和 def main()

如果参数是表示有效整数的字符串return该整数。否则,return NoneType 对象。

对列表中的每个元素调用as_integer函数:['20', 10, len, True, '-six', '-10', '0'] 并输出结果对象在自己的线上 我应该得到以下输出:

输出:

20
None
None
None
None
-10
0

我开发了以下代码,但仍然出现错误。

我只尝试了代码的第一部分,得到 ['20', 10, len, True, '-10', '0'] 打印为 [20, 10, len, True, -10 , 0] 在不同的行上。但没有引号。会有问题吗?

我不确定是使用 (isinstance) 还是 (isdigit)。我尝试使用 (isdigit) 来检测 an_object 是一个数字还是 (startswith) 一个“-”,但我会得到一个错误。这是我到目前为止所拥有的。另外,感谢您在整个过程中的耐心等待。

def main():
    my_list = ['20', 10, len, True, '-10', '0']
    for an_object in my_list:
        print(as_integer(my_list))

def as_integer(an_object):
    if isinstance(an_object, (str, int)):
        return int(an_object)
    else:
        return None

我收到这个错误:

#TEST 1#
main() returned None
inputs:

outputs:
**  ERROR  ** None
* EXPECTED * 20
None
None
None
None
**  ERROR  ** None
* EXPECTED * -10
**  ERROR  ** no line
* EXPECTED * 0
----------
#TEST 2#
** ERROR **as_integer(True) returned 1
* EXPECTED * None
inputs:

outputs:
----------
#TEST 3#
as_integer('43') returned 43
inputs:

outputs:
----------
#TEST 4#
as_integer('-50') returned -50
inputs:

outputs:
----------
#TEST 5#
as_integer(id) returned None
inputs:

outputs:
----------
def as_integer(value):
    if isinstance(value, str):
        try:
            return int(value)
        except ValueError:
            return None
    return None

这将 return None 用于 as_integer(10),但也许这是您的用例。您仍然可以使用 isinstance(value, (str, int)) 扩展条件,但这将使 True 转换为 1,这在更多编程语言中是常​​见的和预期的。为了解决这个极端情况,您可以添加 and value not in (True, False)