记录day2

 

房间里的空调吵的不行...不知是干什么了,但是现在在重新签房租的敏感时期,我也不太敢和房东说,唉。

先记录今天遇到的一个的问题:

def print70(s):
    len = len(s)
    spaces = 70 - len
    print(spaces+s)    
print70('xuetao')

代码运行结果:

这个报错我其实有些不太理解,我用len做变量名,难道是覆盖了函数名?

假设是这样的,我来做个测试:

在main函数的环境下,其实这个赋值语句是能正常运行的,而且是正常的结果。

但是仔细想想啊,python会把函数定义这部分代码先运行,运行完这部分代码时,其实len这个变量已经不是一个函数了。

修改一下原先的代码,测试一下

 

def print70(s):
    len = len(s)
    spaces = 70 - len
    print(spaces+s)    
# print70('xuetao')
print(type(len))

结果还是不算特别清晰,这时候len是一个函数或方法,但是和在之前在main环境下直接看len已经不一样了?

继续修改代码,直接来个狠的。

print(type(len))
def print70(s):
    len = len(s)
    spaces = 70 - len
    print(spaces+s)    
# print70('xuetao')
print(type(len))
print(len)

我有些凌乱了...

如果把注释去掉,调用print70函数,又是那个报错

无法理解,暂且记着吧。

--------------

更新

联系3.3不知道大家有没有好办法,我的代码写的好蠢,求优化

def drawSonLine1():
    print('- - - - +', end=' ')
    
def drawSonLine2():
    print(' '*8 + '|', end=' ')


def drawLine1():
    print('+', end=' ')
    drawSonLine1()
    drawSonLine1()
    drawSonLine1()
    drawSonLine1()
    print() # 换行
    print() # 空出一行
    

    
def drawLine2():
    print('|', end=' ')
    drawSonLine2()
    drawSonLine2()
    drawSonLine2()
    drawSonLine2()
    print() #换行
    print() #空出一行
    
    

def draw():
    drawLine1()
    drawLine2()
    drawLine2()
    drawLine2()
    drawLine2()
    
    drawLine1()
    drawLine2()
    drawLine2()
    drawLine2()
    drawLine2()
    
    drawLine1()
    drawLine2()
    drawLine2()
    drawLine2()
    drawLine2()
    
    drawLine1()
    drawLine2()
    drawLine2()
    drawLine2()
    drawLine2()
    
    drawLine1()
    
draw()

 

posted @ 2017-06-13 23:20  onhacker  阅读(92)  评论(0)    收藏  举报