我必须编写一个函数来查找给定数字(num)是否在10的倍数的2中。我使用模数(%)来获得余数,但它似乎没有正常工作。救命?
def nearten(num):
if num%10<=2:
return True
elif num%10>2:
return False
最重要的是,你只检查了“1”数字是0,1还是2 - 你错过了8和9。
作为样式注释,不要检查布尔表达式,然后对刚刚找到的结果进行硬编码。您目前编写的函数简化为:
def nearten(num):
return num%10 <= 2
你看到它是如何工作的吗?首先,elif检查不会给你任何新信息:你已经知道当你超过if条件时结果必须> 2。
然后,你的陈述如下
if this condition is true, return true
otherwise, we know it's false; return false.
那是多余的。你的程序手中有一个True / False值 - 只需返回一个,而不是使用常量。
修理 ...
我将把这作为学生的练习:“在...内”意味着你必须检查双方,所以你必须选择那些数字是8或9的情况。你能写出表达式吗?
您可以将此代码编写为:
def near_ten(num):
a = num % 10
return 2 >= a or 8 <= a
您可以使用三元运算符并检查num
是否在10的倍数之内:
def near_ten(num):
return True if num%10<3 or num%10>7 else False
def near_ten(num):
return num % 10 in [0,1,2,8,9,10]
return 0 <= (num % 10) <= 2 or 8 <= (num % 10) <= 10
def near_ten(num):
if num%10<=2 :
return True
elif num%10 >=8:
return True
else:
return False