我的Python代码中出现了一个数学域错误,不知道应该修改什么

2024-09-27 19:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着为约瑟夫的问题编写一些代码,但我总是遇到一个奇怪的错误。我的代码如下所示:

import math
power = 2
originalnumber = int(input("how many to start?"))
powerof2 = math.log(originalnumber,power)
if type(powerof2) == int:
    powerof2tf = True
    winningseat = 1
else:
    powerof2tf = False
    newnumber = originalnumber
    while True:
        newnumber = newnumber - 1
        variabletest = type(math.log(newnumber,power))
        if variabletest == int:
            break
        else:
            pass
    winningseat = 1+2*(originalnumber-newnumber)

print("the winning seat is", winningseat)

当我尝试运行它时,它会给我以下错误:

ValueError回溯(最近一次调用)

在()

 12         import math

 13         newnumber = newnumber - 1

--->;14 variabletest=类型(math.log(newnumber,power))

 15         if variabletest == int:

 16             break

ValueError:数学域错误

有什么想法吗?我不知道怎么解决这个问题


Tags: 代码importlogiftype错误mathint
1条回答
网友
1楼 · 发布于 2024-09-27 19:22:07

您得到错误是因为math.log(0, 2)undefinedHere's一个很好的网站,可以更新你关于log如何在普通数学中工作的知识

log 0 is undefined. It's not a real number, because you can never get zero by raising anything to the power of anything else. You can never reach zero, you can only approach it using an infinitely large and negative power.

你需要修改你的代码来处理newnumber归零的问题,然后这个问题就会消失

相关问题 更多 >

    热门问题