【问题标题】:How to make a return statement in python if the argument is a string that represents a valid integer?如果参数是表示有效整数的字符串,如何在python中创建return语句?
【发布时间】:2022-09-28 16:20:26
【问题描述】:

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

如果参数是表示有效整数的字符串,则返回该整数。否则,返回 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 是数字还是(开头)是 \"-\" 但我会收到错误消息。这就是我到目前为止所拥有的。另外,感谢您在这一切过程中的耐心等待。

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:
----------

    标签: python integer return


    【解决方案1】:
    def as_integer(value):
        if isinstance(value, str):
            try:
                return int(value)
            except ValueError:
                return None
        return None
    

    这将为as_integer(10) 返回None,但也许这是您的用例。您仍然可以使用isinstance(value, (str, int)) 扩展条件,但这将使True 转换为1,这在更多编程语言中很常见和预期。要修复这个角落案例,您可以添加and value not in (True, False)

    【讨论】:

    • 我收到此错误:对于我的字符串的第一个数字 20
    • @Kaede 如果我理解正确,您不会得到预期值。它似乎是某种带有测试的家庭作业或在线学习资源。因此,我无法真正复制您正在做的事情。但!我注意到,在main() 中,您将my_list 而不是an_object 传递到as_integer()。这可能是个问题。我对as_integer() 的实现应该为您的输入产生正确的输出。 (除了我提到的角落案例)。
    • @Kaede,不客气。如果您的问题得到解答,请考虑将答案标记为正确。 :)
    【解决方案2】:

    这段代码给出了这个答案 没有任何 没有任何 没有任何 没有任何 没有任何 没有任何 但正确的答案是 20 没有任何 没有任何 没有任何 没有任何 -10 0 你能重新检查你的代码并提供一个完美的代码吗

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多