我刚刚进入Code of Empire,我遇到了一个我根本无法理解的问题。有人可以为此做一个ELI5吗?我甚至不确定从哪里开始制作这个功能。这就是问题所在:
您将获得一个正数作为字符串以及它的基数。您的函数应将其转换为十进制形式。基数小于37且大于1.任务使用数字和字母A-Z作为字符串。
注意无法转换号码的情况。例如:" 1A"无法使用基数转换9.对于这些情况,您的函数应返回-1。
输入:两个参数。数字作为字符串,基数作为整数。
输出:转换后的数字为整数。
示例:
convert("AF", 16) == 175
convert("101", 2) == 5
convert("101", 5) == 26
convert("Z", 36) == 35
convert("AB", 10) == -1
究竟是什么要求?我对数字基础知之甚少,甚至对此都没有丝毫的掌握。
答案 0 :(得分:3)
我们的号码系统是基数10.您可以使用10个可能的数字来表示数字,0-9。到达9后,您需要一个额外的数字来表示更大的数字(10)。
其他系统当然是可能的。一些着名的:
还有高于10的基数。因为我们通常没有这些数字,所以我们用字母代替。这里最常见的是基数16(又名“十六进制”),它使用0-9后跟A-F,其中A = 10,B = 11,依此类推至F = 15。一旦达到16,你需要更多的数字(10)。
当我们说“Base N”时,“N”有基数(技术术语来自数学)。对于存在歧义的情况,您需要基数。例如,我只是向你展示了'10'可以代表的四个不同的数字,这取决于你工作的基础。(事实上,你可能已经注意到,如果你遵循我在这里的常规约定,'10'始终表示与您正在使用的基数对应的数字:2表示二进制,8表示八进制,16表示十六进制等。)
您还可以根据数字太多来做出一些推论。例如,“2”不是基数2(二进制)中的有效数字,因为唯一有效的数字是0和1.同样,“1A”不能在基数9中表示,因为必然只有有效数字为0- 8。直到你至少击中11号基地才能获得“A”。
希望有所帮助。
答案 1 :(得分:0)
您也可以使用int()来解决这个问题。看起来python有内置的将str转换为base。