我正在编写一个程序,用Python将任何base转换为base10。程序代码如下所示。在
print("Enter the number you want to convert to base 10: ")
number = input()
"""length of the digit entered"""
length = len(number)
print("Enter the base of the number: ")
base = input()
for i in range(len(number)):
length = length - 1
"""Computes the sum for each digit"""
s = number[i] * (int(base) ^ length)
s += s
print(s)
问题是我输入的任何数字的答案总是1111。欢迎就如何解决这个问题提出任何建议。在
要找到任何数字的值,您不仅需要知道它的位置和基数,还需要知道可能数字的集合和顺序。在准则中:
我看不到从数字
number[i]
的字符表示到数值的转换。后面的那一行更奇怪,因为您只需加倍s
,而不是收集一个值的总和。在(另请注意,Python的
int
类型已经处理了从2到36的基数。)只是因为这个练习很有趣,这里有一个稍微不同的方法:
^{pr2}$^
是bitwise XOR operator,不是幂运算符。在Python中,power operator is ^{还有其他错误;
^{pr2}$s += s
只是s *= 2
,你在那里把数字翻了一番。您可能需要从s = 0
开始,然后将循环求和为:但是您还没有将
number[i]
转换为实际的数值。在您需要从“数字”到数值的映射:
这将创建一个从字符串数字到数值的字典映射,因此}映射到15,等等,这样就可以得到一个一直到基36的映射。在
'7'
映射到7
,而{现在可以使用
digits
将字符串数字映射为数值:我在这里颠倒了对数字的处理;从小到大更容易。}。我把}都是{}的意思。在
enumerate()
为我们提供了一个索引计数,您可以直接在number
上循环以生成字符,而不是使用range()
和索引到{number
小写,这样a
和{然后可以将其转换为函数中的一个线性函数:
相关问题 更多 >
编程相关推荐