Python 小数和负数的整除性检验
我正在努力使我的可分性检查代码正常工作。它目前只适用于整正数。如果数字是十进制或负数,代码将不起作用。我知道我需要添加一些浮动,但我不知道在哪里添加它们Python 小数和负数的整除性检验,python,Python,我正在努力使我的可分性检查代码正常工作。它目前只适用于整正数。如果数字是十进制或负数,代码将不起作用。我知道我需要添加一些浮动,但我不知道在哪里添加它们 def divisibility(): print "+------------------------------------+" print "|Welcome to the Divisibility Checker!|" print "+---------------------------
def divisibility():
print "+------------------------------------+"
print "|Welcome to the Divisibility Checker!|"
print "+------------------------------------+"
x = raw_input("Please input a number: ")
num1 = raw_input("Number to start checking at: ")
num2 = raw_input("Number to end checking at: ")
print "Divisibility:"
for i in range(int(num1), int(num2)):
if (int(i)) % (int(x)) == 0:
print str(i) + ": Yes"
else:
pass
divisibility()
我想要它做的是,基本上打印出哪些数字可以被这个数字整除。因此,如果您输入2.5,然后希望它从1-10进行检查,那么它应该返回2.5、5、7.5和10。与输入-2相同,它从0--10进行检查,它应该返回-2、-4、-6、-8和-10。根据OP的示例,他似乎想要得到两个范围之间的数字的所有整数倍。鉴于这一目标,我已经重命名了函数getMultiples 输出:
2.5
5.0
7.5
10.0
0
-2
-4
-6
-8
-10
正如梅林的回答所显示的,有更好的方法来实现你想要做的事情,但我认为作为一个初学者,你对学习比熟练程度更感兴趣 这段代码还不完整,但应该给您足够的时间来开始接近您想要的内容
def float_range(start, stop, step): # will step in any range of step passed 1, .5, .1 etc...
while start < stop:
yield start
start += step
def divisibility():
print "+------------------------------------+"
print "|Welcome to the Divisibility Checker!|"
print "+------------------------------------+"
x = raw_input("Please input a number: ")
num1 = (raw_input("Number to start checking at: "))
num2 = (raw_input("Number to end checking at: "))
if "." in num1: # if "." is in the num it is a float
num1 = float(num1)
else: # else an int
num1 = int(num1)
if "." in num2:
num2 = float(num2)
else:
num2 = int(num2)
if "." in x:
x = float(x)
step=.5 # you will need more conditions to check and set the appropriate step.
else:
x = int(x)
step=1
print "Divisibility:"
for i in float_range(num1, num2 + 1,step=step): # add 1 to range to include top end of range
if i % x == 0:
print str(i) + ": Yes"
divisibility()
如何检查非整数的可整除性?听起来你想要的是倍数而不是可整除性。你如何计划在你的范围内增加浮点输入?你不能只使用范围吗?范围0,10,2.5或范围-10,0,2。。。也许你需要一步。@Justin,range什么时候开始一步走浮动的?
def float_range(start, stop, step): # will step in any range of step passed 1, .5, .1 etc...
while start < stop:
yield start
start += step
def divisibility():
print "+------------------------------------+"
print "|Welcome to the Divisibility Checker!|"
print "+------------------------------------+"
x = raw_input("Please input a number: ")
num1 = (raw_input("Number to start checking at: "))
num2 = (raw_input("Number to end checking at: "))
if "." in num1: # if "." is in the num it is a float
num1 = float(num1)
else: # else an int
num1 = int(num1)
if "." in num2:
num2 = float(num2)
else:
num2 = int(num2)
if "." in x:
x = float(x)
step=.5 # you will need more conditions to check and set the appropriate step.
else:
x = int(x)
step=1
print "Divisibility:"
for i in float_range(num1, num2 + 1,step=step): # add 1 to range to include top end of range
if i % x == 0:
print str(i) + ": Yes"
divisibility()