Python str()未在我的函数中返回字符串
所以我定义了一个递归函数numToBaseB,它将以10为基数的给定数字转换成2到10之间的任何其他基数。所需的输出是一个字符串,但由于某种原因,我一直得到一个intPython str()未在我的函数中返回字符串,python,string,int,Python,String,Int,所以我定义了一个递归函数numToBaseB,它将以10为基数的给定数字转换成2到10之间的任何其他基数。所需的输出是一个字符串,但由于某种原因,我一直得到一个int def numToBaseB(num, b): if num == 0: return '' elif b > 10 or b < 2: return "The base has to be between 2 and 10" else: retu
def numToBaseB(num, b):
if num == 0:
return ''
elif b > 10 or b < 2:
return "The base has to be between 2 and 10"
else:
return numToBaseB(num // b, b ) + str(num % b)
def numToBaseB(num,b):
如果num==0:
返回“”
如果b>10或b<2:
return“基数必须在2到10之间”
其他:
返回numToBaseB(num//b,b)+str(num%b)
所以对我来说:
numToBaseB(4,2)
将返回
一百
而不是期望的输出:
“100”
您的程序正在按设计工作:
>>> numToBaseB(1024,2)
'10000000000'
>>> numToBaseB(4,2)
'100'
当然,如果执行
打印(numToBaseB(4,2))
,则不会显示引号。如果希望使用引号,则始终可以执行以下操作:
print (" ' "+numToBase(4,2)+" ' ")
但在程序中,若您无论如何使用str(),它将被视为字符串
:)
编辑:在电话上键入,很抱歉出现这种疯狂:(这是不可能的。如果你要打印出结果,那么这就是你想要的行为,因为引号只显示在控制台中,以帮助你看到变量是什么。是的,蒂姆·皮茨克指出了同样的事情,谢谢!我不确定最初的设计是否包含将
0
转换为基的功能n空字符串而不是“0”
。它按编码方式工作,但它们总是这样:-这是它的一部分,感谢您确保!您可以使用repr()
,它在字符串周围添加引号:)@mnunberg woah!完全忘记了那个O.O