在python中如何使用堆栈将十进制数转换为二进制数

2024-10-08 22:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码。在

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)

Tags: self密码sizereturnstackdefitemsitem
1条回答
网友
1楼 · 发布于 2024-10-08 22:31:30

首先,您粘贴的上面的代码有很多缩进问题,下次您应该尝试修复这些缩进问题并再次运行您的程序,然后再发布到这里。在

其次,你的逻辑也是错误的,你不应该检查-

while newNum == 1:

在开始时,您正在设置newNum=decNum,除非您输入1,否则您的程序不会进入while循环。你需要的条件是-

^{pr2}$

第二,第二个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()

相关问题 更多 >

    热门问题