【问题标题】:my program shows unexpected token error. why?我的程序显示了意外的令牌错误。为什么?
【发布时间】:2018-01-13 19:02:32
【问题描述】:

如果n以外的n个因数总和为n,则程序需要返回true。我需要在运行时使用函数名。当我输入时

factors(45) 

它表明存在未解释的令牌错误。请检查程序有什么问题。

def factors(n):#unexpected token error
 factorlist = []
 for i in range(1,n):
  if n%i == 0:
    factorlist = factorlist + [i]
 return(factorlist)
def perfect(n):
 if sum(factorlist) == n:
  return(True)
 else :
  return(False)

【问题讨论】:

  • factorlist 未在 perfect(n) 函数中引用。你可能想要factorlist = factors(n) 吗?
  • 你可以在程序中进行更正吗?我无法得到它。我刚开始学习python。请
  • 45 不是完美的数字。所以,它返回False
  • 下面有人回答了。使用一个答案;)
  • 您使用的是 Python 3 吗?如果是这样,要在运行时从用户那里读取一个数字,您可以执行n = int(input('Enter number '))

标签: python


【解决方案1】:

您不会将factors(n) 调用到perfect(n) 函数中。所以,你必须使用 factorlist = factors(n) 进入 perfect(n) 函数。

然后试试这个方法:

def factors(n):
  factorlist = []
  for i in range(1, n):
    if n % i == 0:
      factorlist = factorlist + [i]
  return (factorlist)


def perfect(n):
  factorlist = factors(n)  # use this line
  if sum(factorlist) == n:
    return (True)
  else:
    return (False)

print(perfect(45)) # Ouput : False

【讨论】:

  • 复制我的代码并在编译器中运行。我认为,这段代码是对的,没有错误。
【解决方案2】:

试试:

def factors(n):
    factorlist = []
    for i in range(1,n):
        if n%i == 0:
            factorlist = factorlist + [i]
    print factorlist
    return factorlist

def perfect(n):
    factorlist = factors(n)
    if sum(factorlist) == n:
        return True
    else :
        return False

n = int(raw_input('Enter the number: '))
print(perfect(n))

输出:

【讨论】:

  • 它不起作用。同样的错误,如何在函数中使用参数?
  • @Benetha,我的和 Md. Rezwanul Haque 的答案都有效并给出了输出,请再试一次。或者发布您正在尝试的确切错误和代码。
  • 我需要输入数字,以便仅在运行时计算总和。我应该如何更改打印命令
  • 你可以使用“raw_input”动态输入值,看我更新的答案
  • 运行时命令应该是>>> perfect(28) true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2016-06-25
  • 2017-05-14
  • 2014-06-21
  • 1970-01-01
  • 2018-05-08
  • 2014-12-26
相关资源
最近更新 更多