当用户输入一个nmber时确定一个丰富的数字

时间:2015-11-09 05:27:09

标签: python python-2.7

当用户输入数字时,我会尝试确定数字是否充足。但我很失落为什么它不起作用。因为刚刚开始,我不太擅长编码。任何帮助,将不胜感激。这就是我到目前为止所做的:

def is_abundant():
    n = raw_input("Enter a number: ")
    max_divisor = int(n / 2) + 1
    sum = 0
    for x in range(1, max_divisor):
        if n % x == 0:
            sum += x
            print ("your number isn't Abundant")
is_abundant()

当我输入它时,它并没有给我任何东西。请帮忙!

3 个答案:

答案 0 :(得分:1)

只是查看了大量数字的定义:

  

在数论中,数量充足或数量过多是其适当除数之和大于数本身的数。整数12是第一个丰数。其适当的除数分别为1,2,3,4和6,共16个。维基百科

想出了这个:

def isAbundant(n):
    factors = filter(lambda j: n % j == 0, range(1, n/2 + 1));
    return sum(factors) > n;

或者同样,如果您喜欢单行,请:

isAbdn = lambda n: sum(filter(lambda j: n % j == 0, range(1, n/2 +1))) > n;

现在,如果您坚持使用raw_input

def isInputAbundant():
    n = int(raw_input("Enter a number: "));
    if isAbundant(n): print "YEAH! It's abundant.";
    else: print "Sorry! It's not abundant.";

希望这会有所帮助。

答案 1 :(得分:0)

有几件事。首先,您可能希望通过替换:

尽快将输入从字符串转换为整数
n = raw_input("Enter a number: ")

使用:

import sys
:
try:
    n = int(raw_input("Enter a number: "))
except ValueError:
    print "Invalid number"
    sys.exit(1)

其次,在 之后,你不能说出一个数字很丰富,你总结了它的所有积分因子。因此,您的代码需要先对它们求和,然后检查:

for x in range(1, max_divisor):
    if n % x == 0:
        sum += x
if sum > n:
    print ("Your number is abundant")
else:
    print ("Your number isn't abundant")

所以,toto:

import sys

def is_abundant():
    try:
        n = int(raw_input("Enter a number: "))
    except ValueError:
        print "Invalid number"
        sys.exit(1)
    max_divisor = int(n / 2) + 1
    sum = 0
    for x in range(1, max_divisor):
        if n % x == 0:
            sum += x
    if sum > n:
        print ("Your number is abundant")
    else:
        print ("Your number isn't abundant")

is_abundant()

要记住的另一件事虽然这更像是一种风格。许多人会认为函数is_abundant()是一个取整数并返回一个布尔值,而不是一个也负责输入结果的数量和输出。

您可能希望将来记住这一点,以便"正确"结构/命名你的代码以便更有意义,例如:

import sys

def is_abundant(num):
    max_divisor = int(num / 2) + 1
    sum = 0
    for x in range(1, max_divisor):
        if num % x == 0:
            sum += x
    return sum > num

try:
    n = int(raw_input("Enter a number: "))
except ValueError:
    print "Invalid number"
    sys.exit(1)

if is_abundant(n):
    print ("Your number is abundant")
else:
    print ("Your number isn't abundant")

答案 2 :(得分:0)

" N"变量是字符串,您应该将其转换为第3行和第6行中的整数:::> INT(n)的 祝你好运