这是我的第二个挑战 - 它叫做“guard_game”。
挑战是创建一个函数,递归地将数字的各个位数相加,直到只剩下一位数字,并返回该数字。
以下是我的解决方案,在我的机器上运行得很好:
然而,Google foobar控制台在第4行抛出了一个“RuntimeError”。我已经尝试将逻辑拆分成单独的块(在不能像控制台屏幕一样
可能相关的是:Google foobar限制条件中提到的代码在Python 2.7.6沙盒内运行。我学习时使用了100%的Python 3,所以有一定机会我做错了什么。约束还说输入将是1到2147483647之间的“long”(在现代Python中与“int”相同)。
有人知道问题可能是什么吗?
挑战是创建一个函数,递归地将数字的各个位数相加,直到只剩下一位数字,并返回该数字。
以下是我的解决方案,在我的机器上运行得很好:
answers = {}
def answer(x):
return answers[x] if answers.setdefault(x,sum(int(_) for _ in str(x))) in xrange(1,10) else answer(answers[x])
if __name__ == '__main__':
print answer(1235)
print answer(13)
然而,Google foobar控制台在第4行抛出了一个“RuntimeError”。我已经尝试将逻辑拆分成单独的块(在不能像控制台屏幕一样
print
的情况下很难做到),并且似乎是由这个代码引起的:str(x)
。可能相关的是:Google foobar限制条件中提到的代码在Python 2.7.6沙盒内运行。我学习时使用了100%的Python 3,所以有一定机会我做错了什么。约束还说输入将是1到2147483647之间的“long”(在现代Python中与“int”相同)。
有人知道问题可能是什么吗?
x%9
的技巧。这个问题不是关于如何完成挑战,而是关于RuntimeError
的原因。 - Rick