fre1228 2022-10-17 14:47 采纳率: 84.4%
浏览 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 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)