我编写了一个代码,用于将数字从基数10转换为另一个基数。这是代码,其中n是要转换的数字,l是转换为的基础:
<div class="container">
<section class="left">
<div class="item">1</div>
</section>
<section class="right">
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</section>
</div>
因为在第一个else语句中,我通过将m除以l来改变我想要转换的数字的值,我必须指定m = n并使用m而不是n。有没有办法绕过这个并只使用变量?
答案 0 :(得分:1)
我没有足够的声誉来添加评论,但我正在添加答案作为解决方法。请查看Python中的Math库。
如果这样的话可能会有所帮助,请告诉我。
log(x)/log(base)
math.log(x [,base])使用一个参数,返回自然对数 x(以e为基础。)
使用两个参数,将x的对数返回给定的基数, 计算为log(x)/ log(base)。
答案 1 :(得分:0)
不确定你想要完成什么,但是你不想使用内置函数,因为NellMartinez指出我认为添加另一个函数可能就是你要从中删除一个变量。
def set_count(n, l):
count = 0
if n >= 2:
while n >= l:
n = n / l
count += 1
return count
def convert_from_base_10(n, l):
string = ""
counter = set_count(n, l)
while counter >= 0:
z = math.floor(n / (l ** counter))
string = string + str(z)
n = n - z * (l ** counter)
counter = counter - 1
return string
答案 2 :(得分:0)
您可以选择使用字典或列表。
您可以选择使用列表n
,而不是将m
分配给list_name = [n, n]
,并使用两个变量。现在你可以将list_name [0]保持为常量并改变list_name [1]。
使用字典,您可以执行类似dict_name = {"original": n, "variable": n}
的操作。
答案 3 :(得分:0)
我建议你像这样重写你的代码(这是相同的代码,只是更具可读性和更好的格式。有些名称仍然供你选择)
如果它是一个字符串,你应该总是返回一个连贯的结果,总是返回一个字符串
如果您以后需要,我不会在保存var内容时发现问题。 请注意,number是一个本地函数参数,因此您不会改变原始(在您的情况下实际上也是不可变的)但是您想要 稍后更改本地值,因此可以将其复制到m。
还有其他方法可以进行转换,但我想您想要对算法进行编码而不是简单的解决方案。
import math
def convert_base10_to(number, base):
counter = 0
m = number # choose a proper name to m: what is m?
# That will be the best name for m
z = 0 # same for z
result = ""
if number < 2:
return str(number)
else:
while m >= base:
m = m / base
counter += 1
while counter >= 0:
z = math.floor(number / (base ** counter))
result = result + str(z)
number = number - z *(base ** counter)
counter = counter - 1
return result
print(convert_base10_to(7, 2))