我一直在制作自己的小程序,该程序可以找到输入数字的除数。
确定数字是否可以除以另一个数字的方法是结果是否为整数。如果它是浮动的,则应该为负。
这是到目前为止我得到的:
# 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
>>>
我想知道我在做错什么。
答案 0 :(得分:3)
首先,我要清理您的代码:
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
现在,它们全部返回负值是什么?仅仅因为/
除法返回浮点数(即结果是浮点数)。什么是正确的解决方案?使用%
取模,以检查余数是否为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 :(得分:3)
除法运算符/
在Python 3中始终导致浮点数,因此结果永远不会是整数的实例。
您应该改用模运算符测试余数是否为0:
if number % divider == 0:
print("{} Y".format(divider))
else:
print("{} N".format(divider))
答案 2 :(得分:2)
我将使用模数来解决它。如果余数为0,则其整除,否则为不可整除。无需进行任何int
或float
检查。
num = input("> ")
#Assuming the num is an integer
divisors = [] #List of divisors
for i in range(1,num):
if num%i == 0:
divisors.append(i)
输出:
>>[1, 2, 5]
答案 3 :(得分:1)
for divisor in range(1, number//2+1):
print("{} {}".format(divisor, "Y" if number % divisor == 0 else "N"))
一些其他建议:
number // 2
(整数除法)就足够了,因为在number // 2
和number
之间不再有除数。a if b else c
运算符可避免重复print
。答案 4 :(得分:0)
您如何在下面使用模运算呢?
result = Number%divider
if result==0:
print("{} Y".format(divider))
答案 5 :(得分:0)
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)