951670646 发表于 2021-12-21 22:09:55

新手Python求助

看了小甲鱼零基础入门学习Python 第009讲:了不起的分支和循环3 | 课后测试题及答案 后,对特殊的数字产生了兴趣,然后写了个代码(详情如下)想写一个能体现完美数的代码(完美数:该数字平方后的结果十位 + 个位 == 原数字,例9**2 = 81,8 + 1 = 9)。
for a in range(1,10):
    for b in range(1,9):
      for c in range(0,10):
            a*a == b*10 + c
            if b + c == a:
                print(a)
IDLE界面循环滚动False
是哪里不对么0.0

冬雪雪冬 发表于 2021-12-21 22:09:56

for a in range(1, 10):
    b = (a * a) // 10
    c = (a * a) % 10
    if a == b + c:
      print(a)

疯狂 发表于 2021-12-21 23:23:16

冬雪雪冬 发表于 2021-12-21 22:14


瞬间找到了回忆,要好好学数学。

paradisewalk 发表于 2021-12-22 14:57:54

for a in range(1,10):
    for b in range(1,9):
      for c in range(0,10):
            a*a == b*10 + c #这里在a方不等于10b加c,再加上这么多循环,就在一直报错了
            if b + c == a:
                print(a)


你自己看看他为什么报错的原因,要学会自己分吸问题

boredlink 发表于 2021-12-22 15:21:13

本帖最后由 boredlink 于 2021-12-22 15:40 编辑

因为( b+c== a)的结果为不成立(即False),所以返回了False。而结果为成立的时候,就返回了True,并打印了a。

for a in range(4,101):#要求十位和个位之和,那么至少要4以上
    b = str(a*a)   # 得出平方数,并转成字符串
    g = int(b[-1])# 取出倒数第一位,并转化成整数,作为个位数
    s = int(b[-2])# 取出倒数第二位,并转化成整数,作为十位数
    if g + s == a:# 该数字平方后的结果十位 + 个位 == 原数字
      print(a)   # 打印a

看看这个是否符合你的想法。

另外,我查到的完美数的定义是:一个数的所有真因子(即除了自身以外的约数)的和,恰好等于它本身。不知道是否为你想要求的完全数。

boredlink 发表于 2021-12-22 15:24:03

本帖最后由 boredlink 于 2021-12-22 15:25 编辑

运行过程序并没有报错,只是返回的结果跟题主想象的不一样,看什么报错原因呢?
页: [1]
查看完整版本: 新手Python求助