我正试图从元组中获得第100个整数。问题是:
实施一项功能
get_hundredth(a, b, c)
它接受3个正整数作为参数,并在相应的第100个位置返回一个数字元组。如果给定的整数小于100,则其第100个位置可以视为0.如果输入无效,则返回该整数的
None
。
get_hundredth(1234, 509, 80633)
应该返回(2, 5, 6)
并且get_hundredth(4024, 81, 2713)
应该返回(0, 0, 7)
这是我到目前为止所做的:
def get_hundredth(a, b, c):
a, b, c = str(a), str(b), str(c)
return int(a[-3:-2]), int(b[-3:-2]), int(c[-3:-2])
如果它低于100,如何将其设为0?
答案 0 :(得分:2)
由于其他答案,不解决何时返回None
...
def get_hundredth(a,b,c):
def hundreds(x):
try:
return (x // 100) % 10 if (isinstance(x, int) and x > 0) else None
except TypeError:
return None
return tuple(map(hundreds, (a,b,c)))
print(get_hundredth(1234, 509, 80633)) # (2, 5, 6)
print(get_hundredth(-89, 81.85, 'test')) # (None, None, None)
答案 1 :(得分:1)
如果您需要数百个,请使用mod
(%
)运算符,例如:
h = x // 100 % 10
因此,您的函数看起来像(为错误处理而更新):
def get_hundredth(a, b, c):
return tuple(x//100 % 10 if isinstance(x, int) and x > 0 else None for x in (a, b, c))
答案 2 :(得分:0)
这将返回一个整数的所需值:
def _get_hundreds(a):
return (a % 1000) / 100
丢弃除了最后3位数(% 1000
)之外的所有内容,然后获得hudred(/ 100
)。
对于3个整数:
def get_hundreds(a, b, c):
return map(_get_hundreds, (a, b, c))
答案 3 :(得分:0)
Python 2解决方案:
def get_hundredth(a, b, c):
return [i / 100 % 10 for i in [a, b, c]]
>>> get_hundredth(1234, 509, 80633)
[2, 5, 6]
>>> get_hundredth(4024, 81, 2713)
[0, 0, 7]
答案 4 :(得分:0)
def get_hundredth(*k):
return map(lambda x: x / 100 % 10, k)
这不会纠错,但它会让您更接近您的解决方案。由于您对所有参数执行相同的操作,因此可以将它们作为列表(k
)获取,然后将map
应用于所有参数。