Python 查找数字除数的程序

Python 查找数字除数的程序,python,python-3.x,Python,Python 3.x,我一直在制作自己的小程序,为输入的数字寻找除数 它确定一个数字是否可以与另一个数字相除的方式是结果是否为整数。如果它是一个浮动,它应该是负数 到目前为止,我得到的是: # Divider Number = input("> ") divider = 1 while True: Number = int(Number) divider = int(divider) result = 0 result = int(result) result

我一直在制作自己的小程序,为输入的数字寻找除数

它确定一个数字是否可以与另一个数字相除的方式是结果是否为整数。如果它是一个浮动,它应该是负数

到目前为止,我得到的是:

# Divider

Number = input("> ")

divider = 1

while True:
    Number = int(Number)
    divider = int(divider)

    result = 0

    result = int(result)

    result = Number/divider

    if isinstance(result, int):    
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1

    if divider == Number + 1:
        break
问题是,当我运行程序并输入一个像10这样的数字时,它应该有多个除数1,2,5,10,结果完全是负数:

> 10
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
9 N
10 N
>>>

我想知道我做错了什么。

首先我要清理你的代码:

Number = 15

divider = 1

while True:

    if divider == Number + 1:
        break

    Number = int(Number)
    divider = int(divider)

    result = Number/divider

    if isinstance(result, int):
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1
现在,它们都返回为负值的是什么?简单地说,因为/division返回一个浮点,即结果是一个浮点。正确的解决方案是什么?使用%模检查余数是否为0

Number = 15

divider = 1

while True:

    if divider == Number + 1:
        break

    Number = int(Number)
    divider = int(divider)

    result = Number%divider

    if result == 0:
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1
输出:

1 Y
2 N
3 Y
4 N
5 Y
6 N
7 N
8 N
9 N
10 N
11 N
12 N
13 N
14 N
15 Y
>>[1, 2, 5]
在Python3中,除法运算符/总是导致一个浮点数,因此结果永远不会是整数的实例

您应该改为使用模运算符来测试余数是否为0:

if number % divider == 0:
    print("{} Y".format(divider))
else:
    print("{} N".format(divider))

如果你只是像下面那样使用模呢

result = Number%divider

if result==0:   
    print("{} Y".format(divider))

我会用模来解它。如果余数是0,那么它是可除的,否则它不是。不需要任何int或float检查

输出:

1 Y
2 N
3 Y
4 N
5 Y
6 N
7 N
8 N
9 N
10 N
11 N
12 N
13 N
14 N
15 Y
>>[1, 2, 5]
还有一些建议:

变量名不要使用大写字母。最好用大写字母来命名类,并用大写字母来表示常量。 一直走到number//2整数除法就足够了,因为在number//2和number之间不能再有任何除数。 干式-不要重复编程中的一条非常一般的规则:使用a if b else c运算符避免重复打印。
请在您的问题中以文本形式发布所有相关信息,而不是以图像形式发布。isinstance10/5,int==isinstance2.0,int==False/运算符返回一个浮点值无论发生什么情况,您都需要使用模运算符%并检查它是否等于零。非常感谢,也很抱歉我的代码太草率:D@kanukit顺便说一句除法器不需要转换为int,因为它是一个硬编码变量。数字的int转换应该在while循环之外完成。@Mathieus好吧,我想我开始确认一切都是正确的类型,但我会记住你说的。
num = int(input('Enter a number : '))
div = 1
count = 0
while True:
    if(div == num+1):
        break
    result = num%div
    if result == 0:
        print('{} -- yes'.format(div))
        count+=1
    else:
        print('{} -- No'.format(div))
    div+=1
print('Total number of divisor : ', count)