首页 > 解决方案 > 测试一个数字是否在 1000 或 2000 的 100 以内

问题描述

我只是编程的初学者,但这让我很烦恼,我在网上找不到任何关于此的信息。请在这件事上给予我帮助..

def function(num):
    if (abs(num-1000) > 100) or (abs(num-2000) > 100):
        return False
    else:
        return True


print(function(1009))
print(function(2001))
print(function(1098))
print(function(500))
print(function(600))

当我写这个答案是不同的

#Python program to test whether a number is within 100 of 1000 or 2000
def function(num):

    if (abs(num-1000) < 100) or (abs(num-2000) < 100):
        return True
    else:
        return False


print(function(1009))
print(function(2001))
print(function(1098))
print(function(500))
print(function(600))

大于比较给出所有输出 False。

标签: pythonpython-3.x

解决方案


这是正确的,因为您or的语句之间有一个逻辑,所以如果这两个条件之一是true您的函数将返回false。另外,您使用函数abs将负数转换为正数(或绝对数)。

因此,即您的行将print(function(500))执行此操作(对于第四行):

500 - 1000 = -500
abs(-500) = 500
if(500 > 100):
   return false

您会看到您的函数将始终使用一个参数 as true,这意味着您的or条件得到满足。所以你if也是true,你的代码将跳转到你的if.

当您将比较更改为以下内容时

def function(num):
    if (abs(num-1000) < 100) or (abs(num-2000) < 100):
        return True
    else:
        return False

你得到(第一行)以下代码:

1009-1000=9
abs(9) = 9
if(100 < 9): <- This is false, so return True

推荐阅读