项目场景:
最近刚刚学完了python以及爬虫,数据可视化等几个专题的练习,接受老师建议开始学习python结构数据预算,结果第一章一个栈就差点把我送走。
问题描述:
利用栈实现进制转换出现报错。
from pythonds.basic.stack import Stackdef divideby2(decNumber):remstack=Stack()while decNumber>0:rem=decNumber%2remstack.push(rem)decNumber=decNumber//2binString=""while not remstack.isEmpty():binString=binString+str(remstack.pop())return binString
print(divideby2(42))
出现报错
原因分析:
经过分析是就是第一行栈模块导入有问题,但是这个课程中说有相应的模块供下载,我也没找到在哪里,如果有同学在学习一样的课程,希望可以多多交流。
这是我所学习的课程。
解决方案:
其实只要自己写一个类形成导包就可以
from pythonds.basic.stack import Stack
通过观察这一行导入代码,博主找到了方法。
在写好的进制转换的.py文件下创建pythonds文件夹
进去在创建一个basic文件夹。
进入在创建一个 stack.py文件。
然后在输入创建栈类的代码。为了和课程吻合,我使用了可课程中给的代码。
class Stack(object):def __init__(self):# 创建一个空的栈self.item = []def push(self,item):# 添加新元素到栈顶self.item.append(item)def pop(self):# 弹出栈顶元素return self.item.pop()def peek(self):# 返回栈顶元素return self.item[len(self.item)-1]def isEmpty(self):# 检验是否为空return self.item == []def size(self):# 返回栈的个数return len(self.item)
保存之后就可以运行利用栈实现的进制转换了。
对于一个小白来说,一个导入折腾了一个多小时,希望能帮助到以后的小白。