Python 多义数 def tuplify(编号): x=str(编号) 如果len(x)

Python 多义数 def tuplify(编号): x=str(编号) 如果len(x),python,Python,你可以把它转换成一个像这样的数字元组 def tuplify(number): x = str(number) if len(x) <= 0: return 0 lst = [] for i in range(0,10): if i == x[len(x)-1]: lst.append(i) return tuple(lst) 但请注意,数字中的前导零将不会保留 除了比较字符串和数字之

你可以把它转换成一个像这样的数字元组

def tuplify(number):
    x = str(number)
    if len(x) <= 0:
        return 0
    lst = []
    for i in range(0,10):
        if i == x[len(x)-1]:
            lst.append(i)
        return tuple(lst)
但请注意,数字中的前导零将不会保留

除了比较字符串和数字之外

print tuple(map(int, str(102486)))
# (1, 0, 2, 4, 8, 6)
您总是将
i
与最后一个元素进行比较

另外,您希望返回一个元组,但如果字符串为空,则返回零

if i == x[len(x)-1]:

你可以把它转换成这样的一组数字

def tuplify(number):
    x = str(number)
    if len(x) <= 0:
        return 0
    lst = []
    for i in range(0,10):
        if i == x[len(x)-1]:
            lst.append(i)
        return tuple(lst)
但请注意,数字中的前导零将不会保留

除了比较字符串和数字之外

print tuple(map(int, str(102486)))
# (1, 0, 2, 4, 8, 6)
您总是将
i
与最后一个元素进行比较

另外,您希望返回一个元组,但如果字符串为空,则返回零

if i == x[len(x)-1]:

您的代码中有几个问题,其中之一是:

if len(x) == 0:
    return ()
因为
i
是一个整数,而
x
是一个字符串,所以这永远不会是真的<代码>1不等于
“1”

You,r
returntuple(lst)
也缩进,因此它位于for循环内,但不应该在for循环内

但是for循环也很奇怪——你在数字0到9之间循环,总是与
x
的最后一个字符进行比较,为什么?它想做什么


有几种简单的方法可以做到这一点,但我认为它们对您没有帮助。

您的代码中有几个问题,其中一个是:

if len(x) == 0:
    return ()
因为
i
是一个整数,而
x
是一个字符串,所以这永远不会是真的<代码>1不等于
“1”

You,r
returntuple(lst)
也缩进,因此它位于for循环内,但不应该在for循环内

但是for循环也很奇怪——你在数字0到9之间循环,总是与
x
的最后一个字符进行比较,为什么?它想做什么

有几种简单的方法可以做到这一点,但我认为这些方法对您没有帮助。

编辑:

 if i == x[len(x)-1]:
>>>p=123434455 >>>元组(int(i)表示str(p)中的i) (1, 2, 3, 4, 3, 4, 4, 5, 5) >>> 编辑:

 if i == x[len(x)-1]:
>>>p=123434455 >>>元组(int(i)表示str(p)中的i) (1, 2, 3, 4, 3, 4, 4, 5, 5) >>> 我会看看:

  • (地图部分)
  • 您可以将数字转换为字符串,将其拆分,然后将每个字符转换回int,我将看到:

  • (地图部分)

  • 您可以将数字转换为字符串,将其拆分,然后将每个字符转换回整数。您的代码有一些问题

    首先,您不需要检查长度,因为没有“空白”数字;因此,您需要检查的是是否发送了号码。另外,您返回的
    0
    不是元组

    其次,您不需要列表,因为您可以直接单步遍历字符串

    最后,当您需要整数的元组时,您的结果将是字符串的元组

    结合这一点,您可以得到:

    >>> p = 123434455 >>> tuple(int(i) for i in str(p)) (1, 2, 3, 4, 3, 4, 4, 5, 5) >>>
    您的代码有一些问题

    首先,您不需要检查长度,因为没有“空白”数字;因此,您需要检查的是是否发送了号码。另外,您返回的
    0
    不是元组

    其次,您不需要列表,因为您可以直接单步遍历字符串

    最后,当您需要整数的元组时,您的结果将是字符串的元组

    结合这一点,您可以得到:

    >>> p = 123434455 >>> tuple(int(i) for i in str(p)) (1, 2, 3, 4, 3, 4, 4, 5, 5) >>> 试试这个

    def tuplify(number):
        if not number:
           return ()  # this is an empty tuple
        x = str(number)
        return tuple(map(int,x))
    
    试试这个

    def tuplify(number):
        if not number:
           return ()  # this is an empty tuple
        x = str(number)
        return tuple(map(int,x))
    

    您可能应该在循环之外返回结果。另外,
    tuple(str(number))
    有什么问题吗?
    tuple(int(i)for i in str(1234))
    @FrédéricHamidi显然应该是答案。太棒了。@FrédéricHamidi一个小问题是它将返回
    ('1','2','3')
    而不是
    (1,2,3)
    @BurhanKhalid,这是绝对的,但是提问者当前的代码试图生成字符串元组,所以我使用它运行。您可能应该在循环之外返回结果。另外,
    tuple(str(number))
    有什么问题吗?
    tuple(int(i)for i in str(1234))
    @FrédéricHamidi显然应该是答案。太棒了。@FrédéricHamidi轻微的问题是它将返回
    ('1','2','3')
    而不是
    (1,2,3)
    @BurhanKhalid,绝对是这样,但是提问者当前的代码试图生成一个字符串元组,所以我用它运行。对他的问题没有帮助,甚至是错误的答案。对他的问题没有帮助,实际上,
    ()
    是一个空元组,
    (,)
    是一个语法错误。令人困惑的是,
    (1,)
    是编写单元素元组的方法。实际上,
    ()
    是一个空元组,
    (,)
    是一个语法错误。令人困惑的是,
    (1,)
    是编写单元素元组的方法。