python - 卡普雷卡数字
问题描述
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 编程背景...)“for x in range...”行有问题.. 代码没有进入循环,我不知道为什么。程序需要打印:
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
我会欣赏一些见解:)
解决方案
for 循环很好,你有一些你没有处理的逻辑问题,比如当 n==1 和当 len(sqr)==1 时。
def kaprekar_num(num):
count = 0
n=1
while count <= num:
sqr = n ** 2
digits = str(sqr)
length = len(digits)
if sqr==1:
print("Number: " + str(n) + " = " + str(n))
count+=1
n+=1
elif length>1:
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
else:
n+=1
kaprekar_num(5)
推荐阅读
- symfony - bitbucket 上的私有 symfony 包,作曲家找不到 github 上的配方
- python - Telegram bot 获取发送消息的时间
- google-apps-script - 将序列号分配给 Google 表格中的重复项以按人订购表单回复
- scala - 在 UDF 正文中将列作为参数传递
- powershell - powershell 选择对象属性和扩展属性
- processing - 处理 P3D 动画,留下伪影
- sql - 使用触发器复制更新的行值
- macos - MTKView 的初始渲染倾斜
- excel - 如何正确超链接
- heroku - 我可以在 Heroku 上为同一个应用程序拥有多少个自定义域