Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
竞争编程Python:重复数字和错误_Python - Fatal编程技术网

竞争编程Python:重复数字和错误

竞争编程Python:重复数字和错误,python,Python,我不知道该不该问这个问题。但我感觉完全被卡住了。找不到更好的解决方法 我是竞争性编程的新手。我在解决重复的数字和问题 给定一个整数N,递归地求N的和,直到得到一个位数。 例如:- Input: 2 123 9999 Output:- 6 9 这是我的密码:- def sum(inp): if type(inp) == int: if len(str(inp)) <= 1: return inp else:

我不知道该不该问这个问题。但我感觉完全被卡住了。找不到更好的解决方法

我是竞争性编程的新手。我在解决重复的数字和问题

给定一个整数N,递归地求N的和,直到得到一个位数。

例如:-

Input:
 2
 123
 9999

Output:-
 6
 9
这是我的密码:-

def sum(inp):
    if type(inp) == int:
        if len(str(inp)) <= 1:
            return inp
        else:
            a = list(str(inp))
            while len(a) > 1:
                b = 0       
                for i in a:
                    b+= int(i)
                a = list(str(b))
    return b

t = int(raw_input())
for i in range(0,t):
    print sum(i)
然而,当我使用
42
亲自测试代码时,它完美地为我提供了正确的输出
6


下面是问题的链接:-

您没有正确实现代码。您正在迭代
i
0
t
。为什么?方法如下:

N=12345

计算数字之和(1+2+3+4+5=15)

检查是否小于10。如果是,那么当前的总和就是答案。。如果不是。。按照相同的步骤设置
N=15

代码如下:

def sum(inp):
    while inp > 9:
        num = inp
        s = 0
        while num > 0:
            s = s + num%10
            num = num/10
        inp = s

    return inp

t = int(raw_input())
for i in range(t):
    n = int(raw_input())
    print sum(n)
Edit:我认为您正在迭代到
t
,因为您已经将
t
视为测试用例的数量。因此,在
for
循环中,您应该为每个测试用例的
N
获取另一个输入。[这是基于您在问题中提供的
输入
输出


编辑-2:我对代码做了一些更改。这个问题要求我们找出
t
数的重复和。为此,我添加了一个循环,我们在其中输入一个与每个测试用例对应的数字
n
,并找到它的重复和。

您的函数不应该命名为
digSum()
?顺便说一句:定义与内置方法同名的函数可能会引起一些混乱。例如,在Python中,您应该避免为事物命名
sum
。现在,相同代码的错误发生了更改
第17行:TypeError:“int”对象不可编辑
这怎么可能呢?请发布您更新的代码。我运行了你的旧版本,我认为它运行得很好。FWIW,有一种简单的非递归方法来执行此计算。如果
n
是输入的数字,那么它实际上是
n%9或n和9,这是我的第一个问题。因此,我在理解测试用例
t
n
时遇到了一些困难。如果你能进一步解释,那将非常有帮助。谢谢提供的链接中的问题是,他们将提供一个数字作为
N
作为输入,您必须找到
N
的重复数字和。根据您的解决方案,您获取输入并将其存储在
t
[没问题]。然后从
0
迭代到
t
,并找到从
0
t
的所有数字的重复总和。在我的解中,我只找到了
t
的重复和。希望你收到了。有些问题他们会给出
t
,对于每个
t
,他们会提供一个数字
N
,以找到重复的总和。但您的问题并非如此
您的输出产生的行数比预期的少。!!!可能您缺少新行字符。
@SanatanChaudhary:请立即试用代码。做了一个编辑(Edit2)。非常感谢它能工作,但我不明白为什么我们必须这样做测试用例。
def sum(inp):
    while inp > 9:
        num = inp
        s = 0
        while num > 0:
            s = s + num%10
            num = num/10
        inp = s

    return inp

t = int(raw_input())
for i in range(t):
    n = int(raw_input())
    print sum(n)