【发布时间】:2016-07-26 21:51:13
【问题描述】:
我必须编写一个单输入模块,可以将小数转换为 Bukiyip(一种计数基数为 3 或 4 的古代语言)。为了分配的目的,我们只需要使用 base 3。
我已经编写了一些执行此操作的代码,但它返回了我的 Bukiyip 编号和引号,给我留下了一个答案,例如 '110' 表示 12。
请帮助我了解如何解决此问题?我是 Python 新手,渴望学习,因此非常感谢您的解释。
def bukiyip_to_decimal(num):
convert_to_string = "012"
if num < 3:
return convert_to_string[num]
else:
return bukiyip_to_decimal(num//3) + convert_to_string[num%3]
我也尝试了以下方法,但出现错误。
else:
result = bukiyip_to_decimal(num//3) + convert_to_string[num%3]
print(int(result))
【问题讨论】:
-
这些是引号,而不是撇号。你的意思是你的函数返回一个字符串,而不是一个整数?
-
请注意,
110将是一个 十进制 值,即 110。您正在用另一种表示法创建表示,为什么这里的字符串不够好?你是如何打印输出的?换句话说,您能在所有人都跳进来告诉您使用int(result)之前在这里告诉我们您的更大问题吗? -
嗨@MartijnPieters,是的,我认为这就是我弄错了。
-
如果您只使用
print()将结果写入您的控制台,您不会得到包含这些引号的,因为这样会写出实际的字符串值。所以print(bukiyip_to_decimal(12))不会显示引号(这是字符串文字表示的一部分,对调试很有用)。 -
@MartijnPieters 你已经回答了!我知道在哪里修复错误 - 非常感谢。
标签: python python-3.x return quotes base