【问题标题】:Can anyone explain why this code on python is not working?谁能解释为什么 python 上的这段代码不起作用?
【发布时间】:2022-12-04 17:40:33
【问题描述】:
def n(a):
    a = str(a)
    if "0" in a:
        b = str((a).replace("0", ''))
        a = b[::-1]
        a = a[::-1]
        a = int(a)
        return a
    else:
        a = a[::-1]
        a = a[::-1]
        a = int(a)
        return a 


N = int(input())
des = 10**9 + 7
summa = 0

for a in range():
    print(n(a))
    b = n(a)
    summa = summa + b
    summa = summa % des
    print(summa)

给出这样的错误:'invalid literal for int() with base 10: '' '

如果我在没有 for i in 循环的情况下将值传递给变量 a,那么一切正常

我只需要了解代码有什么问题。我是编程新手,无法马上弄明白

【问题讨论】:

    标签: python


    【解决方案1】:

    input 函数等待用户输入。如果没有给出,它将返回一个空字符串,即''。因此,您将 '' 转换为整数。这是不可能的,会导致您提到的错误。

    int('')` # returns `ValueError: invalid literal for int() with base 10: ''
    

    您还可以在错误的末尾看到这一点。这就是错误结尾处 '' 的意思。这就是传递给int()的内容

    我猜你可能会将上面的代码直接复制粘贴到终端中。这导致 Python 不等待 input 的任何实际输入。

    如果你首先只运行这条线

    N = int(input())
    

    然后按回车键,它将等待用户输入。然后你可以复制剩下的代码。代码的其余部分也包含一些问题。具体来说,range 应该有一些输入,比如 range(N)

    def n(a):
        a = str(a)
        if "0" in a: # this also happen when a == '0'
            b = str((a).replace("0", '')) 
            a = b[::-1]
            a = a[::-1]
            a = int(a) # and if a == '0', this resolved to int('')
            ....
    

    您可以添加以下内容

    def n(a):
        if not a: # ifa is anything beside 0
             return 0 # then there is no sense in flipping it around 
        a = str(a)
        ....
    

    【讨论】:

    • 您好,我不小心在源代码 range(N) 中发布了 range 函数为空的代码,即使我不使用 input 并将值传递给变量 N,代码仍然会出现此错误
    • 同样的错误发生在b = str((a).replace("0", ''))这一行。当 a 为“0”时,它始终是传递给 n 函数的第一个值,零将被替换为 ''。然后这个空字符数组''将在a = int(a)下面的几行中使用。因为''不能变成int,所以会报错。你应该做什么 它向函数 n 添加一个子句,如果输入变量为零,则返回零。
    【解决方案2】:

    您看到的错误是因为您试图使用 int() 函数将空字符串转换为整数。发生此错误是因为您在 for 循环中使用了没有参数的 range() 函数,这将创建一个空范围并导致 for 循环根本不执行。

    要修复此错误,您需要将正确的参数传递给 for 循环中的 range() 函数。

    【讨论】:

    • 您好,我不小心在源代码范围(N)中发布了范围函数为空的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2015-07-08
    • 2021-04-10
    • 2017-04-22
    • 2011-02-11
    相关资源
    最近更新 更多