fre1228 2022-10-17 14:47 采纳率: 83.3%
浏览 53
已结题

1.编写一个Python程序,需要用栈结构,将十进制数42,188,30,22,200转换为相应的二,八,十六进制数。

class Stack:
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def peek(self):
        return self.items[len(self.items)-1]
    def size(self):
        return len(self.items)

def divideBy2(decNumber):
    remstack=Stack()
    while decNumber>0:
        rem=decNumber%2
        remstack.push(rem)
        decNumber=decNumber//2
    binString=""
    while not remstack.isEmpty():
        binString=binString+str(remstack.pop())
    return binString
        
def baseConverter(num,base):
    label="0123456789ABCDEF"
    s=Stack()
    while num>0:
        re=num%base#不断取余基块
        s.push(re)
        num=num//base
    #出栈
    string=""
    while not s.isEmpty():
        string+=label[s.pop()]
    return string
if __name__=='__main__':
    num1=int(input("please input number:"))
    print(str(num1),"对应的二进制是:",divideBy2(num1))
    base=2
    print(str(num1)+"对应的"+str(base)+"进制是:", baseConverter(num1,base))
    base = 8
    print(str(num1) + "对应的" + str(base) + "进制是:", baseConverter(num1, base))
    base = 16
    print(str(num1) +"对应的" + str(base) + "进制是:", baseConverter(num1, base))

img

img


这个代码不知道哪里出错了,为什么只能转化一位数,多位数的输进去就报错**


```

```**

  • 写回答

3条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2022-10-17 15:28
    关注

    input是只能一次输一个整数呀,你输那么多肯定报错,多次输入的话,修改一下代码就行。可以split方法切割一下,然后用map方法转换成整形,最后转成列表。
    已修改代码并贴出程序运行图,希望记得采纳一下哦!😘

    class Stack:
        def __init__(self):
            self.items = []
    
        def isEmpty(self):
            return self.items == []
    
        def push(self, item):
            self.items.append(item)
    
        def pop(self):
            return self.items.pop()
    
        def peek(self):
            return self.items[len(self.items) - 1]
    
        def size(self):
            return len(self.items)
    
    
    def divideBy2(decNumber):
        remstack = Stack()
        while decNumber > 0:
            rem = decNumber % 2
            remstack.push(rem)
            decNumber = decNumber // 2
        binString = ""
        while not remstack.isEmpty():
            binString = binString + str(remstack.pop())
        return binString
    
    
    def baseConverter(num, base):
        label = "0123456789ABCDEF"
        s = Stack()
        while num > 0:
            re = num % base  # 不断取余基块
            s.push(re)
            num = num // base
        # 出栈
        string = ""
        while not s.isEmpty():
            string += label[s.pop()]
        return string
    
    
    if __name__ == '__main__':
        nums = list(map(int,input("please input some number:").split(",")))
        for num in nums:
            base = 2
            print(str(num) + "对应的" + str(base) + "进制是:", baseConverter(num, base))
            base = 8
            print(str(num) + "对应的" + str(base) + "进制是:", baseConverter(num, base))
            base = 16
            print(str(num) + "对应的" + str(base) + "进制是:", baseConverter(num, base))
            print("----------")
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月19日
  • 已采纳回答 10月17日
  • 赞助了问题酬金15元 10月17日
  • 赞助了问题酬金1元 10月17日
  • 展开全部

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c