我有这个代码抛出math domain error异常:
v = -1.0
for i in range (201):
print acos (v)
v += 0.01
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其更改为此,它的工作原理如下:
v = -100
for i in range (201):
print acos (v / 100.0)
v += 1
Run Code Online (Sandbox Code Playgroud)
这是因为四舍五入吗?
如何在Python中最好地解决这个问题?或者我应该像上一个例子那样做?
我试图找到一个1896阵列的crusor位置(在2D中成为整个控制台,79*24).为此我取了位置并将它除以79.
MOV AX, [Y-16H]
DEC AX
MOV BX, 79
DIV BX
MOV Z, DL
ADD Z, DH
MOV DL, Z
MOV Z, AL
ADD Z, AH
MOV DH, Z
Run Code Online (Sandbox Code Playgroud)
我收到溢出错误.你能告诉我,我做错了吗?也许建议解决方案?
在申请之前__slots__,我可以这样做:
class C(object):
def __init__(self):
self.m_A = 1
def __getattr__(self, name):
if name in ("A"):
return self.__dict__["m_%s" % name]
raise AttributeError(name)
a = C()
a.A
Run Code Online (Sandbox Code Playgroud)
现在,我想用__slots__; 但是,这会禁用__dict__导致我的代码中断.
所以,我的问题是:
有没有其他方法可以做到这一点?(除外property)
我在使用Python时如何访问对象属性__slots__?
使用numpy作为一个例子,我似乎无法实现什么做这样一个进口的好处将做到:
import numpy.lib
Run Code Online (Sandbox Code Playgroud)
导入完成后,numpy可以作为名称使用,相当于直接导入它:
import numpy
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您lib只能使用虚线访问来访问子模块:
>>> numpy.lib
<module 'numpy.lib' from ....>
Run Code Online (Sandbox Code Playgroud)
是否存在做import numpy.lib有益的情况?
我正在尝试计算到非常大的数字的最接近的2 ^ n(<= 10 ^ 19)
我试图使用math.log(number,2)。但这对于很大的数字给出了错误的结果。我应该如何在不使用其他库的情况下执行此操作?
a = 9843649374639837463 # a is any num between 1 and 10^9
number = int(math.log(a,2))
Run Code Online (Sandbox Code Playgroud) 我是使用Python的初学者,我一直在尝试编写一个扫雷游戏.基本上,我有点迷失在如何设置我的类,以便它使用列表列表创建一个5x5网格的单元格,然后随机地在这个网格上放置3个地雷,并计算每个单元格邻域中的地雷数量.
我想我会使用一种__init__方法来调用另外两种方法:一种用于放置地雷,另一种用于计算每个小区的邻域.
虽然有任何建议,但我对如何设置它们有点迷茫?
作为一个年轻的程序员,我总是试图寻找我的技能的应用程序.
无论如何,我现在正在接受trig并且我们正在研究单位圆,从度数转换为坐标的公式是(sinθ,cosθ)(据我所知).
但是,我遇到的困难是我需要将值保持为分数.
基本上,我计划的算法是:
i = 0
while i < 360:
print(i, "=", calc(i))
i += 15
Run Code Online (Sandbox Code Playgroud)
现在,calc可以给出任何名称,并且将是一个函数,它返回x和y的坐标(可能是一个元组)给定x =sinθ和y =cosθ.
我遇到的问题是Python中的sin会返回介于-1和1之间的浮点,但是,我需要找到一种方法让它返回一个分数.例如,在该图中 ,坐标是有理数.
我该怎么办?我应该编写自己的正弦函数和余弦函数吗?如果是,我应该怎么做?
基本上这开始于我在尝试查找索引是否存在于dict中时遇到的问题:
if collection[ key ]: # if exist
#do this
else: # if no exist
#do this
Run Code Online (Sandbox Code Playgroud)
但是当索引确实不存在时,它会抛出一个KeyError.所以,阅读Python文档.如果定义了missing(),则不会抛出KeyError.
collection = {}
def collection.__missing__():
return false
Run Code Online (Sandbox Code Playgroud)
终端上面的代码给了我:
ghelo@ghelo-Ubuntu:~/Music$ python __arrange__.py
File "__arrange__.py", line 16
def allArts.__missing__():
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
那么,如何正确地做到这一点?顺便说一下,我需要在这上面使用Python 2.7.在Python 3上运行时有区别吗?
我写了一个非常简单的程序来子类化字典.我想__missing__在python中尝试该方法.经过一些研究后我发现在Python 2中可用defaultdict.(在python 3中我们使用collections.UserDict虽然..)如果找不到密钥,则__getitem__负责调用该__missing__方法.
当我__getitem__在下面的程序中实现时,我得到一个关键错误,但是当我没有它实现时,我得到了所需的值.
import collections
class DictSubclass(collections.defaultdict):
def __init__(self,dic):
if dic is None:
self.data = None
else:
self.data = dic
def __setitem__(self,key,value):
self.data[key] = value
########################
def __getitem__(self,key):
return self.data[key]
########################
def __missing__(self,key):
self.data[key] = None
dic = {'a':4,'b':10}
d1 = DictSubclass(dic)
d2 = DictSubclass(None)
print d1[2]
Run Code Online (Sandbox Code Playgroud)
我认为我需要实施,__getitem__因为它负责呼叫__missing__.据我所知,defaultdict的类定义有一个__getitem__方法.但即便如此,说我想写自己的__getitem__,我该怎么做?
我有q = [[7,2,3],[4,5,6]]和r=[[6,1,2],[3,4,5]].我需要用r中的相应元素来划分q.(即[[7/6,2/1,3/2],[4/3,5/4,6/5]])
所需产出B = [[1.16,2,1.5],[1.33,1.25,1.2]]
码:
B= [[float(j)/float(i) for j in q] for i in r].
但是,我一直收到错误:TypeError:float()参数必须是字符串或数字.我从未来进口部门.有什么建议?
python ×9
list ×2
math ×2
algorithm ×1
assembly ×1
dictionary ×1
division ×1
fractions ×1
function ×1
import ×1
logarithm ×1
minesweeper ×1
optimization ×1
packages ×1
precision ×1
python-2.7 ×1
python-2.x ×1
python-3.x ×1
trigonometry ×1
x86 ×1