最近我遇到一个问题:
我想计算各种数字的各种根,如下所示:
x = x ** 1/y+1
我知道的所有方法都不会产生有效的代码。
方法一:
x = 54
y = 2
x = x ** 1/y+1
print(x)
打印值为28.0,而不是3.7798
方法2:
x = 54
y = 2
x = x ** 1/(y+1)
print(x)
打印值为18.0 istead,为3.7798
方法三:
x = 216
y = 2
x = x ** (1/(y+1))
print(x)
印刷值是5.99而不是6
有没有办法让你在20岁以下的时候工作?
编辑:
另一个建议的方法:
def nth_root(val, n):
ret = int(val**(1./n))
return ret + 1 if (ret + 1) ** n == val else ret
y = 1
print(nth_root(19, (y+1)))
印刷品4
你想要的是这样的(假设你使用的是Python 3):
x = x ** (1/(y+1))
对于Python 2,以下任何一种都可以工作:
from __future__ import division
x = x ** (1/(y+1))
或者(在Python 3上也很好):
x = x ** (1.0/(y+1))
问题是您需要在正确的位置应用括号,以获得正确的操作顺序。
方法3是做浮点运算。见:https://docs.python.org/3.5/tutorial/floatingpoint.html
有关Python 2与Python 3分区的更多信息:Python 2.7中的分区。和3.3
你似乎还不理解编程语言中的操作顺序。您需要括号来确保将1添加到y,然后取倒数,然后将其用作指数。“自然”的顺序则相反。
x = x ** (1.0/(y+1))
既然其他人已经告诉你为什么你的方法3是正确的,我会坚持给你一个准确的答案。你可以阅读更多关于为什么你得不到精确的6的信息,但基本上这是因为你的计算机在计算时不能精确地表示1/3,并给出最终答案。
所以,最简单的解决方案是使用症状:
import sympy
y = 216
x = 2
x = sympy.root(y,x+1)
print(x)
在继续下去之前,我意识到一个人永远不应该这样做。这个问题纯粹是出于教育目的;我进行这个练习是为了更好地理解python的内部结构、ctype以及它们是如何工作的。 我知道在python中改变整数的值相对容易。事实上,你可以通过扰乱内部来做很多事情。从C API参考, 当前的实现为-5到256之间的所有整数保留一个整数对象数组,当您在该范围内创建一个int时,实际上只会返回对现有对象的引用。所以应该
很多刚刚学习python的朋友,都纠结于目前Python的两个版本,虽然我已经对此进行了阐述(请阅读《Python安装》),但是,能够认真阅读的人不多。很多人是一目十行,看个大概罢了,重要观点往往忽视。 这里我选取网上一文章,该文讲述了一些具体的区别。供读者参考。 文章来源:http://blog.jobbole.com/80006/ 许多Python初学者都会问:我应该学习哪个版本的Python
问题内容: boost.python如何处理Python 3?仅限Python 2吗? 问题答案: 较新版本的Boost应该可以在Python V3.x上正常工作。早在2009年成功完成Google Summer of Code项目后,我相信很早以前就已经添加了此支持。 将Python V3与Boost结合使用的方法是,通过添加以下示例来正确配置构建系统: 到您的user-config.jam文件
问题内容: 我安装了Python 3.x(除了Ubuntu上的Python 2.x),然后慢慢开始配对在Python 2.x中使用的模块。 因此,我想知道,应该为Python 2.x和Python 3.x使用pip来简化生活吗? 问题答案: 您应该采取的方法是为Python 3.2安装。 您可以通过以下方式执行此操作: 然后,您可以使用来安装适用于Python 3.2的内容,并使用来安装适用于Py
本文向大家介绍Python 2.7.x 和 3.x 版本的重要区别小结,包括了Python 2.7.x 和 3.x 版本的重要区别小结的使用技巧和注意事项,需要的朋友参考一下 许多Python初学者都会问:我应该学习哪个版本的Python。对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本。等学得差不多了,再来研究不同版本之间的差别
问题内容: 我使用IPython笔记本,并希望能够选择在IPython中创建2.x或3.x python笔记本。 我最初有Anaconda。使用Anaconda时,必须更改全局环境变量以选择所需的python版本,然后才能启动IPython。这不是我想要的,所以我卸载了Anaconda,现在使用MacPorts和PiP设置了自己的安装。看来我还是要用 在python 2.x和3.x之间切换。这并不