【问题标题】:Python if statement to find Armstrong NumbersPython if 语句查找 Armstrong 数字
【发布时间】:2020-05-17 04:49:39
【问题描述】:
n = int(input("" ""))
l = []
for i in  range(n):
    a = int(input())
    l.append(a)
    s=0
for i in l:
    temp = i

    while temp>0:
        d = temp % 10
        s += d**3
        temp //= 10
    if n == s:
        print("yes")
    else:
        print("no")

如果号码是 Armstrong 号码,我将尝试打印“是”,如果不是,则打印“否”。但是代码只运行else 部分。 if 部分没有执行,请帮忙。

【问题讨论】:

  • 你试过调试代码吗?你试过什么?
  • 我试过了,但总是得到单一的输出为“不”
  • 我猜s应该为每个i初始化为0
  • 试过没用
  • 您需要耐心并了解自己应该是​​什么流程。使用打印语句并验证这是否是您对该行代码的期望。这样您就可以自己调试和修复代码。

标签: python algorithm list


【解决方案1】:

您应该将if n == s: 更改为if i == s:,因为i 是要测试的数字,n 是您要测试的数字。

正如 Damien 所说,s 应该为每个 i 初始化为 0

n = int(input("" ""))
l = []
for i in range(n):
    a = int(input())
    l.append(a)
for i in l:
    s=0
    temp = i

    while temp>0:
        d = temp % 10
        s += d**3
        temp //= 10
    if i == s:
        print("yes")
    else:
        print("no")

测试部分:

1 # input, n = how many numbers i to test
1 # input, i = number to test
yes # output

【讨论】:

  • 但仍然只打印其他部分
  • cf my "Test part" : 如果您的号码是 Armstrong 号码,例如 0、1、153... 那么它将输出“yes”
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2012-06-09
相关资源
最近更新 更多