我正在尝试定义一个带有2个参数的函数,将它们相加,如果两个参数之和以5结尾,则报告为2.如果它不以5结尾,则返回8。
有什么想法吗?
我正在考虑做一个if语句,但我很困惑我将如何检查一个数字是否以5结尾(或者是5)。
感谢您的帮助,尝试自学如何编程是如此困难但又如此有益:)
答案 0 :(得分:10)
我的回答是假设你正在检查整数(根据你的问题,这似乎很合理):
def sum_ends_with_5(a, b):
"""
Checks if sum ends with "5" digit.
"""
result = a + b
return 2 if result % 10 == 5 else 8
或更灵活(包含任意数量的参数):
def sum_ends_with_5(*args):
"""
Checks if sum ends with "5" digit.
"""
result = sum(args)
return 2 if result % 10 == 5 else 8
该功能的行为如下:
>>> sum_ends_with_5(5)
2
>>> sum_ends_with_5(3)
8
>>> sum_ends_with_5(2, 8)
8
>>> sum_ends_with_5(7, 8)
2
>>> sum_ends_with_5(10, 20, 3, 2)
2
因此,如果您想以更短更灵活的方式编写它,您可以这样做:
def sum_ends_with_5(*args):
return 2 if sum(args) % 10 == 5 else 8
答案 1 :(得分:4)
数字以5结尾,当且仅当它们可被5整除但不能被10整除时。您可以使用模运算来轻松检查这些条件。更一般地说,您可以通过将该数字的mod 10
值与该数字进行比较来检查数字是否以数字结尾。
num = 1234
isDivisibleByFive = num % 10 == 5
答案 2 :(得分:3)
将模数乘以10并检查它是否为5。
print num % 10 == 5
答案 3 :(得分:2)
一种简单的方法是获取数字并将其转换为字符串并使用索引检查最后一位数字以查看它是否为5:
如,
n = 153
str(n)[-1] == '5':
False
和
n = 155
str(155)[-1] == '5'
True
作为if
声明的一部分:
if str(n)[-1] == `5`:
print "number ends in 5"
else:
print "number did not end in 5"
如果您只想检查5的可分性(与5结尾不同),您可以使用mod操作。
但你也可以修改10并检查剩下的5来确定数字(int)是否以5结尾。我的解决方案检查任何数字的最后一位数(包括浮点数)
答案 4 :(得分:1)
我最喜欢Tadeck的解决方案,但还有另外一种方法,对于这个特定的用例,我认为不是很好,但如果您的返回值需要遵循比简单更复杂的规则,那么仍然可能有用模数运算。
def xlatVal (*nums):
# 0 1 2 3 4 5 6 7 8 9
lookupTbl = [8,8,8,8,8,2,8,8,8,8]
return lookupTbl[sum(nums) % 10]
虽然值仍然使用模数减少到一个范围,但这允许在该范围内进行任意转换。
答案 5 :(得分:0)
将其转换为字符串并检查最后一个字符:
str(num)[-1] == "5"