如何在python中使用堆栈将十进制数转换为二进制数
这是我的密码如何在python中使用堆栈将十进制数转换为二进制数,python,python-2.7,Python,Python 2.7,这是我的密码 class Stack (): def __init__(self): self.items=[] def push (self,item): self.items.append(item) def pop (self): return self.items.pop() def size(self): return len(self.items) s1= Stack()
class Stack ():
def __init__(self):
self.items=[]
def push (self,item):
self.items.append(item)
def pop (self):
return self.items.pop()
def size(self):
return len(self.items)
s1= Stack()
decNum= int(input("Enter the decimal num : "))
newNum=decNum
while newNum==1:
newNum= decNum%2
decNum = decNum//2
s1.push(newNum)
while s1.size() is not Null:
a=s1.pop()
print(a)
首先,您粘贴的上述代码有很多缩进问题,下次您应该尝试修复这些缩进问题并再次运行程序,然后再将其发布到此处 其次,你的逻辑也是错误的,你不应该检查-
while newNum == 1:
在开始时,设置newNum=decNum,除非输入1,否则程序不会进入while循环。你需要的条件是-
while decNum != 0:
其次,第二个while循环不应该在第一个while循环的内部,它应该在外部,以便在所有计算完成后打印出堆栈。此外,在循环开始之前,您甚至不需要第一个newNum=decNum
我修复了所有缩进问题和逻辑问题,代码是-
import sys
class Stack ():
def __init__(self):
self.items=[]
def push (self,item):
self.items.append(item)
def pop (self):
return self.items.pop()
def size(self):
return len(self.items)
s1= Stack()
decNum= int(raw_input("Enter the decimal num : "))
while decNum!=0:
newNum= decNum%2
decNum = decNum//2
s1.push(newNum)
while s1.size() != 0:
a=s1.pop()
sys.stdout.write(str(a))
sys.stdout.flush()
它正在工作-D非常感谢-D:-DYou是受欢迎的,如果可能的话,请记住接受答案(点击勾号),这样对其他人和社区都有帮助。