【问题标题】:usage of str() to convert number in int() in Python在 Python 中使用 str() 转换 int() 中的数字
【发布时间】:2015-12-15 10:19:04
【问题描述】:

谁能解释我为什么要先将数字转换为字符串,然后再将其转换为整数。下面是代码示例:

print sum(int(number) for number in str(__import__('math').factorial(520)))

【问题讨论】:

  • 那么您是要计算520! 还是520! 中数字的总和?
  • 我只想知道为什么我必须将诸如 (520) 之类的数字以及每个包含它的数字转换为字符串,以便在之后将它们转换回 int。
  • 好吧,我的意思是,如果你想计算520!,那么这不是要走的路。如果你想计算数字的总和,那么这是;)以6!为例。你想让算法输出720还是7+2+0 = 9
  • 我有单独的脚本来计算所有数字的累积和。我之所以选择这个脚本,是因为它说明了我的 str() 问题,您为我解决了这个问题,谢谢!

标签: python string int


【解决方案1】:

因为代码将阶乘结果的数字相加。为了访问每个数字,它将数字转换为字符串并循环遍历数字字符,然后将它们转换为int

>>> __import__('math').factorial(10)
3628800
>>> sum(int(number) for number in str(__import__('math').factorial(10)))
27 # == 3 + 6 + 2 + 8 + 8

还有另一种访问数字位数的方法,即除以 10 并保存余数。在这种情况下,您不必将数字转换为字符串,然后将字符串数字转换为 int。

def sum_digits(number):
    reminder = 0
    while number:
        reminder += number%10
        number = number/10
    return reminder

num = __import__('math').factorial(10)
print(sum_digits(num))
27

【讨论】:

  • 所以每次我需要访问每个要求和的项目或其他东西时,它需要先成为 str 吗?附言我不能在前 4 分钟内接受答案。所以我会在几分钟后接受它,谢谢
  • @GeorgeG。实际上,您正在将数字转换为字符串。用另一种方式比较。
  • 是的,我首先将数字转换为字符串,然后将字符串转换为int,这是让我感到困惑的部分
  • @GeorgeG.:您正在将数字转换为字符串,遍历字符串的所有数字,然后将每个数字转换为 int。
【解决方案2】:

因为您要遍历字符串中的每个字符。如果你从生成器组合中展开它,很容易分辨

sum_ = 0
for number in str(math.factorial(520)):
    sum_ += int(number)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2021-12-28
    • 2015-09-14
    • 1970-01-01
    • 2017-10-16
    • 2021-01-01
    相关资源
    最近更新 更多