我的python代码将一个数字转换成以10为基数,不管我说什么,它总是输出1665

2024-10-01 19:21:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python编写一个函数,将数字转换成不同的基。我创建了一个while循环,可以将任何数字转换成以10为基数的数字。我的计划是把第一个数字转换成基数10,然后再转换成目标基数。我这样做是因为所有的算术都必须以10为基数。你知道吗

我画了一个流程图,把代码放进去,但结果总是一样,我不知道为什么。你知道吗

这是我的密码:

def fconbase(cnum, cbase1, cbase2):
    #resets variables used in calculations
    exp=0
    result=0
    decimalResult=0
    currentDigit="blank"
    cnumlen=len(str(cnum)) #finds length of cnum, stays constant
    digitNum=cnumlen #sets starting placement
    while exp<cnumlen:
        currentDigit=str(cnum)[digitNum-1:digitNum]
        #the following converts letters into their corresponding integers
        if currentDigit=="a" or "A":
            currentDigit="10"
        if currentDigit=="b" or "B":
            currentDigit="11"
        if currentDigit=="c" or "C":
            currentDigit="12"
        if currentDigit=="d" or "D":
            currentDigit="13"
        if currentDigit=="e" or "E":
            currentdigit="14"
        if currentDigit=="f" or "F":
            currentDigit="15"
        result=int(currentDigit)
        decimalResult=decimalResult+result*(10**exp)
        exp=exp+1
        digitNum=digitNum-1
    print(decimalResult)

它的工作原理如下:

首先,它找出原始数字中有多少个数字。用于确定循环应继续多少次。你知道吗

然后它用它来找出最后一个数字。接下来,它将所有字母转换为相应的数字(如果数字是以11为基数或更高的数字,则使用此选项)。它把它变成一个整数,再乘以10^exp。exp从0开始,所以10^exp应该变成1。你知道吗

然后,它将结果与小数结果相加(以10为基数的结果)。然后它将exp(onent)增加1,这样10**exp现在将变成10,并从'currentDigit'中减去1,以找出倒数第二个数字。你知道吗

然后循环并继续此模式,直到exp等于cnumlen(起始数字的长度)并打印最终结果。你知道吗

我不知道我的公式是怎么搞砸的。我没有看到任何逻辑错误会导致这种情况。我已经把它弄得乱七八糟好几个小时了,不能让它做任何不同的事情。好吧,一开始是我不知道从哪里得到的数字。在搞乱之后,现在它只是一遍又一遍地抛出相同的数字。我不知道这些数字是从哪里来的。你知道吗


Tags: or函数if数字result计划基数while

热门问题