Это небольшой фрагмент кода, который я пишу для программы химии ab initio. У меня проблемы с созданием списка C1pos числа, состоящего ровно из 6 цифр после запятой. Я пробовал несколько методов, таких как десятичная функция, но пока мне не повезло.
Положение - это определение, которое будет принимать матрицу (1,1,1) + (1,1,1) и давать вам (2,2,2) ноль на моем сервере.
class Position:
def __init__(self, data):
self.data = data
def __repr__(self):
return repr(self.data)
def __add__(self, other):
data = [] #start with an empty list
for j in range(len(self.data)):
data.append(self.data[j] + other.data[j])
return Position(data)
deltaa=2.000001
#Set number of steps +1
numx=2
numy=1
numz=1
Carbon=[1.070000,0.000000,0.000000]
startpos=[1.000000,1.000000,1.000000]
l=[]
top=os.getcwd()
lgeom=[]
for i in range(numx):
for j in range(numy):
for h in range(numz):
l=i, j, h
shift=list(l)
shiftdist=[ k*deltaa for k in shift]
C1pos=Position(Carbon)+Position(shiftdist)+Position(startpos)
ltempl[10]=' C1,'+str(C1pos).strip('[]').replace(' ','')
Есть предложения?
EG: Выход должен быть C1,2.123456,3.123456,4.123456 Число никогда не будет превышать 10.