我用Python尝试了各种方法来求和一个数字的所有位数,有两种方法似乎适合我的需要。
sum(map(int,str(num))) #First Method
def sum_digits(n): #Second Method
total = 0
while n != 0:
total += n%10
n /= 10
return total
在Python 2中,方法1的速度更慢,这并不让我感到惊讶,但当我将相同的代码添加到Python 3中时,让我有点惊讶的是,方法2实际上变慢了。我知道在python3中改变了map,这似乎解释了第一
$ python --version
Python 2.7.15
$ type test.py
import random
while True:
a = random.uniform(0, 1)
b = a ** 2
c = a * a
if b != c:
print "a = {}".format(a)
print "a ** 2 = {}".format(b)
print "a * a = {}".format(c)
break
$ py
我使用python中的以下算法实现了一个lcm问题。我的代码如下:
# Uses python3
import sys
def gcd_efficient(a, b):
#current_gcd = 1
#for d in range(2, min(a, b) + 1):
# if a % d == 0 and b % d == 0:
# if d > current_gcd:
# current_gcd = d
#return current_gcd
remainder = max(a
从浮点型到小数型的直接转换是在python-2.7中实现的,在Decimal的构造函数和Decimal.from_float()类方法中都是如此。
相反,Python-2.6抛出了一个TypeError,建议首先转换为字符串:
TypeError: Cannot convert float to Decimal. First convert the float to a string
因此,我通常的解决方法是:
if sys.version_info < (2, 7):
Decimal.from_float = classmethod(lambda cls, x: cls(st
我是一个python新手,我刚刚开始了解格式化方法。
来自我正在读的一本学习python的书
What Python does in the format method is that it substitutes each argument
value into the place of the specification. There can be more detailed specifications
such as:
decimal (.) precision of 3 for float '0.333'
>>> '{0:.3}'.f
因此,我开发了Python2.6解释器,得到了以下内容:
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2.1
2.1000000000000001
>>> 2.2
2.20000000000000
我创建了一个新的Django (v.1.11)项目,并使用python manage.py createsuperuser创建了一个用户。我可以用这个用户帐户登录到localhost:8888/admin上的管理部分。但是,除了登录页面之外,我不能做其他任何事情:,每当我触发POST请求时,得到以下错误:
TypeError在/admin/.
slice indices must be integers or None or have an __index__ method
(“.”(例如,可以由auth/group/add/替换,但此行为是通用的,而不是特定于此请求的。
下面的跟踪显
我是python的新手,我正在读一个文件,我想为“X-DSPAM-置信度: 0.7002”提取多个不同的值,我想添加所有不同的置信度。
xfile = open('/Users/Documents/python/mbox-short.txt')
for line in xfile:
if not line.startswith("X-DSPAM-Confidence:"):
continue
xf = (line.rstrip())
## Start Counting Lines
count = 0
fo
在我的程序中,我试图找到python能给我的最小数字。当我把一个数字除以2的时候,我得到了5x10^-324 (5e-324)。我想我可以把这个除以我在python中能用到的最大数。我试图通过这样做来获得python中最大的数字:
z = 1
while True:
try:
z = z+1
except OverflowError:
z = z-1
break
这是我的完整代码:
from os import system
x = 76556758478567587
while
长话短说,我正试图用Python重写我的顾问发送给我的一段Fortran77代码,因为Python对我来说更方便。当我测试我的代码时,我意识到我的输出与Fortran代码不一样。这一切似乎都是来自于Fortran的一些四舍五入的错误。
例如,Python中的分数277./14336.返回:
print(277./14336.)
> 0.019321986607142856
^
但在Fortran77,我得到了:
program foo
implicit none
real*8 x
x=277./14336.
write(*,*) x
end pro
大约半个小时的思考“我做错了什么!”5行代码..。因为Python3在某种程度上舍入了大整数。任何人都知道为什么会出现这样的问题:
Python2:
int(6366805760909027985741435139224001 # This is 7**40.
/ 7) == 909543680129861140820205019889143 # 7**39
Python3:
int(6366805760909027985741435139224001
/ 7) == 909543680129861204865300750663680 # I have no i
我有两个存储在变量中的数字,a和b,我想看看在python中,这两个数字的比率是不是整数。然而,当我尝试
result = a./b
它给了我一个
SyntaxError: invalid syntax
但是如果我说
result = a/b
它会截断小数部分。如何获得完整的数字啤酒来测试完整性?
我本来打算用
if (not isinstance(result, (int, long))):
then do something for non-integer numbers..
谢谢,我使用的是python 2.7.1