从元组中获取第100个整数(python)

时间:2016-02-28 00:54:20

标签: python tuples

我正试图从元组中获得第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?

5 个答案:

答案 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应用于所有参数。