Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不受其他系统干扰的情况下将数字系统转换为十进制系统_Python_Numbers - Fatal编程技术网

Python 如何在不受其他系统干扰的情况下将数字系统转换为十进制系统

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)*

我的意思是,我怎样才能从任何数字系统转换到十进制系统,摆脱这个系统中的数字系统! 此代码是三重系统的一个示例:

请注意,第二个计数器中不计算数字001,因为它是二进制

此代码可以在小型系统之间转换,但不能转换数字超过100的系统 我试图让他做那件事,但失败了

谁能帮我

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 ? : ")))