你好,我是Python的初学者。我编写了以下代码将数字转换为一个旁数。我用T计算这个数字可以减少两倍的次数。剩余的R在内循环中再次使用,但是我必须将T设置为0,如果我这样做,我会进入无限循环....有人可以帮助我吗?
import math
T=0 # timer to count homany times the given number can be divided by 2
G= int(input("nummer "))
A=G # save G in A, we need G later
R=G # the remainder also initialized with G
while R>1:
print(T)
while A>1:
A=int(A/2)
T=T+1
print(T)
print(A)
R=int(G-math.pow(2,T))
A=R #use the remainder agin in the inner loop
T=0 #set T to O, here it goes wrong, ill get an infinite loop!!! why
答案 0 :(得分:0)
你只需要一个循环。此外,您可以使用模运算符(%)。
它的一般要点是......你想继续将数字除以2,直到达到0.当你去的时候,你想要在你去的时候添加REMAINDER(由%运算符计算)。 / p>
我不用python编程。 (不确定缩进,附加到列表,int(输入(“nummer”)),我假设是你要转换的数字。)
listToStoreAnswerInReverse = []
theNumberToConvert = int(input("nummer "))
while(theNumberToConvert != 0)
remainder = theNumberToConvert % 2
listToStoreAnswerInReverse.append([remainder])
theNumberToConvert = theNumberToConvert / 2
listToStoreAnswerInReverse现在应该有二进制答案。请记住,这个答案将是相反的。因此列表中的第一个索引将包含二进制的最后一个值。
这是解决此问题的几种方法之一。您可以按建议使用内置或使用2的降序功能并减去。但是如果没有更多的研究,我不知道该怎么做。