def kaprekar_num(num):
count = 0
while count <= num:
n = 1
sqr = n ** 2
digits = str(sqr)
length = len(digits)
for x in range(1, length):
left = int("".join(digits[:x]))
right = int("".join(digits[x:]))
if (left + right) == n:
print("Number: " + str(n) + ", Left: " + str(left) + " + " + " Right: " + str(right) + " = " + str(n))
n += 1
count += 1
else:
n += 1
kaprekar_num(5)
大家好, 我是python编程新手,课堂上有一项任务,就是打印前5个kaprekar数。 (我只有C编程背景…) 我对“范围内的x…”行有问题。。代码没有进入循环,我不知道为什么。 该程序需要打印:
Number: 9, Left: 8 + Right: 1 = 9
Number: 10, Left: 10 + Right: 0 = 10
Number: 45, Left: 20 + Right: 25 = 45
Number: 55, Left: 30 + Right: 25 = 55
Number: 99, Left: 98 + Right: 1 = 99
我将感谢一些见解:)
您如何管理
n
值是不正确的。它应该在循环开始之前设置,然后在每次尝试之后,不管结果如何,它都应该递增作为一项建议:我强烈建议您将来使用调试器逐步完成代码。如果你这么做了,你会发现
n
的变化并不是很快for循环很好,有一些逻辑问题,您还没有处理,比如当n==1和len(sqr)==1时
你把循环设置为重复一次,我想,如果你想把n代替1,我想这就是问题所在
尝试将循环设置为该值
相关问题 更多 >
编程相关推荐