Python 如何在不受其他系统干扰的情况下将数字系统转换为十进制系统
我的意思是,我怎样才能从任何数字系统转换到十进制系统,摆脱这个系统中的数字系统! 此代码是三重系统的一个示例: 请注意,第二个计数器中不计算数字001,因为它是二进制 此代码可以在小型系统之间转换,但不能转换数字超过100的系统 我试图让他做那件事,但失败了 谁能帮我Python 如何在不受其他系统干扰的情况下将数字系统转换为十进制系统,python,numbers,Python,Numbers,我的意思是,我怎样才能从任何数字系统转换到十进制系统,摆脱这个系统中的数字系统! 此代码是三重系统的一个示例: 请注意,第二个计数器中不计算数字001,因为它是二进制 此代码可以在小型系统之间转换,但不能转换数字超过100的系统 我试图让他做那件事,但失败了 谁能帮我 def To_decimal(num_str): dec_num = 0 f = len(num_str)-1 for num in num_str: dec_num +=int(num)*
def To_decimal(num_str):
dec_num = 0
f = len(num_str)-1
for num in num_str:
dec_num +=int(num)*(3**f)
f-=1
return dec_num
def Find(i,txt):
for v in txt:
if v == i:
return False
return True
def Number_system_of(num):
txt = ""
for i in num:
if Find(i,txt):
txt += i
return len(txt)
t = 0
r=["0","1","2"]
k=[" "," "," "]
x = 0
while x!= 3:
k[0] = r[x]
x+=1
x1 = 0
while x1 != 3:
k[1] = r[x1]
x1+=1
x2 = 0
while x2 != 3:
k[2] = r[x2]
x2+=1
s=""
s = k[0]+k[1]+k[2]
if Number_system_of(s) == 3:
t+=1
print(s,t,To_decimal(s))
输出:
这很有效。。但是它非常慢:<
def Switch(keyl):
key = keyl
L = key[len(key)-1]
R = key[len(key)-2]
key[len(key)-1] = R
key[len(key)-2] = L
return key
def Zero(y,n,f):
keyf = f
for x in range(y,n):
keyf[x]= 0
return keyf
def inkey(ke,r):
for x in ke:
if x == r:
return False
return True
def Getnum(f,li,n):
nl = []
for x in range(0,f):
nl.append(li[x])
i = li[f]
while i != n-1:
i+=1
if inkey(nl,i):
return i
def clear(f,key1,n):
key0 = key1
key0f =[]
for x in range(0,f):
key0f.append(key0[x])
notinkey =[]
for x in range(n):
if inkey(key0f,x):
notinkey.append(x)
key0 = Zero(f,n,key0)
keyl = []
for x in range(len(key0)-len(notinkey)):
keyl.append(key0[x])
for x in notinkey:
keyl.append(x)
return keyl
def plus(kee,f,n,stop):
if kee == stop:
return kee
if f == 0:
kee[0]+=1
kee = clear(1,kee,n)
return kee
if kee[f] == n-1 :
return plus(kee,f-1,n,stop)
k = Getnum(f,kee,n)
if k == None:
return plus(kee,f-1,n,stop)
kee[f]=k
kee = clear(f+1,kee,n)
return kee
def main(n):
key = []
for x in range(n):
key.append(x)
stop = []
for x in range(n-1,-1,-1):
stop.append(x)
o = 1
t = 0
while key != stop :
st = ""
for x in key:
st+=str(x)
print(st,t)
if o == 1 :
key = Switch(key)
if o == 2 :
key = plus(key,n-3,n,stop)
o = 0
t+=1
o+=1
st = ""
for x in stop:
st+=str(x)
print(st,t)
while True:
main(int(input("base ? : ")))
你能和我分享一下发生的错误吗?如果您得到的输出与您期望的不同,共享这两个部分。要使用此代码从大数字系统(如包含150)转换,您需要编写150,而这不能是偶数,如果可能,它将非常慢。是否要将数字从基数10转换为基数3?我希望在不干预的情况下从任意基数转换为基数10!阅读我上面写的内容,以便更好地理解我
def Switch(keyl):
key = keyl
L = key[len(key)-1]
R = key[len(key)-2]
key[len(key)-1] = R
key[len(key)-2] = L
return key
def Zero(y,n,f):
keyf = f
for x in range(y,n):
keyf[x]= 0
return keyf
def inkey(ke,r):
for x in ke:
if x == r:
return False
return True
def Getnum(f,li,n):
nl = []
for x in range(0,f):
nl.append(li[x])
i = li[f]
while i != n-1:
i+=1
if inkey(nl,i):
return i
def clear(f,key1,n):
key0 = key1
key0f =[]
for x in range(0,f):
key0f.append(key0[x])
notinkey =[]
for x in range(n):
if inkey(key0f,x):
notinkey.append(x)
key0 = Zero(f,n,key0)
keyl = []
for x in range(len(key0)-len(notinkey)):
keyl.append(key0[x])
for x in notinkey:
keyl.append(x)
return keyl
def plus(kee,f,n,stop):
if kee == stop:
return kee
if f == 0:
kee[0]+=1
kee = clear(1,kee,n)
return kee
if kee[f] == n-1 :
return plus(kee,f-1,n,stop)
k = Getnum(f,kee,n)
if k == None:
return plus(kee,f-1,n,stop)
kee[f]=k
kee = clear(f+1,kee,n)
return kee
def main(n):
key = []
for x in range(n):
key.append(x)
stop = []
for x in range(n-1,-1,-1):
stop.append(x)
o = 1
t = 0
while key != stop :
st = ""
for x in key:
st+=str(x)
print(st,t)
if o == 1 :
key = Switch(key)
if o == 2 :
key = plus(key,n-3,n,stop)
o = 0
t+=1
o+=1
st = ""
for x in stop:
st+=str(x)
print(st,t)
while True:
main(int(input("base ? : ")))