从元组中获取第一百个整数(python)
我想从元组中得到第一百个整数。问题是: 实现一个函数从元组中获取第一百个整数(python),python,tuples,Python,Tuples,我想从元组中得到第一百个整数。问题是: 实现一个函数get\u第一百(a,b,c) 它接受3个正整数作为参数,并在相应的第一百位返回一个数字元组 如果给定的整数小于100,则其第一百个位置可视为0。如果输入无效,则为该整数返回None get\u第一百(123450980633)应该返回(2,5,6) 而get\u第一百个(4024,812713)应该返回(0,0,7) 这就是我到目前为止所做的: def get_hundredth(a, b, c): a, b, c = str(a)
get\u第一百(a,b,c)
它接受3个正整数作为参数,并在相应的第一百位返回一个数字元组
如果给定的整数小于100,则其第一百个位置可视为0。如果输入无效,则为该整数返回None
get\u第一百(123450980633)
应该返回(2,5,6)
而get\u第一百个(4024,812713)
应该返回(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?这将返回一个整数的所需值:
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))
如果需要数百,请使用
mod
(%
)运算符,例如:
h = x // 100 % 10
因此,对于您的函数,它看起来像(为错误处理而更新):
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]
这不会纠正错误,但会使您更接近解决方案。由于您对所有参数都执行相同的操作,因此可以将它们作为列表(
k
)获取,然后将map
应用于所有参数。由于其他答案,请不要解决何时返回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)
我认为你把“百分之一百”和“百分之一百”混淆了。如果a是“boo”,你将返回“b”。这真的可以吗?如果其中任何一个是无效的,例如不能被100整除呢?最后一个示例在值为81时返回0。你想到了什么值?这假设整数除法(实际上应该使用
/
强制除法,在python3中是正确的),如果i<100,x//100等于0,如果>100,则只删除任何小数部分。应该返回一个元组
@Alexander例如:当a=“boo”时。啊。该问题已被编辑。它将引发异常TypeError
@Alexander,尽管“无效”输入也可能是负数。我已经做了适当的编辑,谢谢(虽然它似乎暗示整数中的错误可能是负数)。那么所有其他非整数的数值类型呢?它们是有效的还是无效的(你假设有效)。好的,对我来说(并且也接受OP)。它仍然无误地接受浮点。@AChampion我是一个完成列表,所以我认为这是最后一次编辑:)
def get_hundredth(*k):
return map(lambda x: x / 100 % 10, k)
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)