【问题标题】:Add up all possibilities in a list, with two variables将列表中的所有可能性加起来,有两个变量
【发布时间】:2016-10-02 09:17:40
【问题描述】:

我正在尝试在 python 中制作一个程序,该程序将接受用户的输入并检查它是否是 Kaprekar 数字。 我仍然是初学者,并且遇到了很多问题,但我现在似乎无法解决的主要问题是如何将所有可能性加起来,只有两个变量。我可能没有很好地解释它,所以这里是一个例子:

我有一个包含数字的列表 ['2', '0', '2', '5']。 我如何让 python 做2 + 02520 + 25202 + 5

它将在 if else 语句中,一旦它等于用户输入的数字,它就会停止。

Here 是整个代码的样子,如果它有帮助的话——它现在说的是if 1 == 0:,它应该把它们加起来。)

【问题讨论】:

    标签: python list add


    【解决方案1】:

    假设你开始

    a = ['2', '0', '2', '5']
    

    然后就可以运行了

    >>>  [(a[: i], a[i: ]) for i in range(1, len(a))]
    [(['2'], ['0', '2', '5']), (['2', '0'], ['2', '5']), (['2', '0', '2'], ['5'])]
    

    获得所有可能的连续分割。

    如果要进一步处理,可以通过

    >>> [(int(''.join(a[: i])), int(''.join(a[i: ]))) for i in range(1, len(a))]
    [(2, 25), (20, 25), (202, 5)]
    

    或者加起来

    >>> [int(''.join(a[: i])) + int(''.join(a[i: ])) for i in range(1, len(a))]
    [27, 45, 207]
    

    【讨论】:

    • 非常感谢,成功了!
    【解决方案2】:

    不是直接回答您的问题,但您可以编写一个表达式来更简洁地确定数字 N 是否是 Krapekar 数。

    >>> N=45
    >>> digits=str(N**2)
    >>> Krapekar=any([N==int(digits[:_])+int(digits[_:]) for _ in range(1,len(digits))])
    >>> Krapekar
    True
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多