我试图用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(起始数字的长度)并打印最终结果。你知道吗
我不知道我的公式是怎么搞砸的。我没有看到任何逻辑错误会导致这种情况。我已经把它弄得乱七八糟好几个小时了,不能让它做任何不同的事情。好吧,一开始是我不知道从哪里得到的数字。在搞乱之后,现在它只是一遍又一遍地抛出相同的数字。我不知道这些数字是从哪里来的。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐