Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 小数和负数的整除性检验_Python - Fatal编程技术网

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()