python - 测试一个数字是否在 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。
解决方案
这是正确的,因为您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
推荐阅读
- xml - 如何在 InstallScript 中读取 XML 节点的值
- python - Gitpython 初始化并推送一个新的 repo
- database - 我的 GridDB 节点不想加入同一个集群
- linux - CSP Image Base64 未使用正确的服务器配置加载
- c# - 通过 C# 获取编译后的 HTML 源代码
- javascript - 仅将样式应用于元素映射的一个元素
- spring - 如何在 JPA 中处理“jsonb”
- c++ - 这个复杂的正则表达式行在 C++ 中做了什么
- c - C - Scanf 没有得到正确的信息
- asp.net - Asp.net 锚点和 nav 上的常规视图无法通信