【问题标题】:How to iterate through elements of a decimal number in Python如何在Python中遍历十进制数的元素
【发布时间】:2021-07-28 06:24:41
【问题描述】:

我想传递一个在 Python 中转换为小数的整数。然后我需要检查十进制数中的每个单个数字是奇数还是偶数。例如,如果整数是 534(尽管它可以是任何整数),转换为十进制它仍然是 534。现在如果我尝试遍历这个小数来检查 5 是奇数还是偶数,那么 3 是奇数还是偶数,然后4 是奇数还是偶数。如果所有数字都是偶数,则为 True,否则为 False。 当我尝试遍历十进制数时,出现错误“十进制不可迭代” 无论如何,我创建了一个实现此目的的程序,但我需要将 Decimal 转换为 String。由于要求是使用 Decimal,所以我认为我的解决方案可能不符合要求。

提前致谢

【问题讨论】:

  • 将一种类型转换为另一种在大多数语言中都很常见,所以我认为您的代码可以满足要求。
  • @leaf_yakitori。谢谢你的评论。我认为你是对的,这很常见。无论如何,如果不将 Decimal 转换为另一种类型,我找不到方法。
  • 你能Convert Decimal to String然后遍历元素吗?

标签: python-3.x


【解决方案1】:

这不是那么整洁,但就我能够测试它而言,它似乎有效。

一个错误修复应该从分数中删除多余的 0。

它越来越乱,但我必须假设会发生某些输入错误并将它们过滤掉。例如输入 1. 或 .1 或 1.1000,


def find_Odd_Even(m):
    try:
        n = list(str( m ))
        if n.count(".") < 2:
            if n.count(".") == 0:
                n.extend([ ".", "0" ])
            elif n.index(".") == len(n) - 1:
                n.append("0")
            b = n.index(".")
            BB = "".join( n[ b+1: ] )
            while len(BB) > 1:
                k = BB.removesuffix("0")
                if k == BB:
                    break
                else:
                    BB = k
            AA = int("".join( n[ :b ] ))
            BB = int( BB )
            if AA&1 == 1 or BB&1 == 1:
                answer = f"{m} is an odd number"
            else:
                answer = f"{m} is an even number"
        else:
            answer = "Bad input"
    except Exception as err:
        answer = str(err)
    finally:
        return answer

while 1:
    m = input("Enter an decimal number: ")
    if m == "":
        break
    else:
        print(find_Odd_Even( m ))

【讨论】:

  • @Thanks Derek 但我想用十进制数来做,而不是用整数或字符串。要求是传递一个整数,然后将其转换为十进制数,然后满足上面提到的其余要求。 Python中没有办法处理十进制数的数字吗?我在十进制数上尝试了您的解决方案,但它不起作用。
  • 让我改一下。
  • 小数有小数部分,而整数没有。我们需要传递整数。当整数在 Python 中转换为小数时(如您在我的代码中看到的小数。小数),即使在内部它是小数,数字也会看起来像整数。例如,如果有一个整数 637,将其转换为十进制。我编写了以下代码: from decimal import Decimal Decimal(637) 将返回 637。两者都是相同的。但是,当我尝试像上面对十进制数所做的那样使用循环或理解时,它就不起作用了。如果任何数字是奇数,则为 False,否则为 True。
  • 我发现了一个错误。像 24.1000 这样的数字将返回偶数。所以需要稍作修改。
猜你喜欢
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2021-03-17
  • 2018-07-29
  • 2016-11-12
  • 1970-01-01
  • 2012-12-03
相关资源
最近更新 更多