我的天!!!为什么老是没有defined
背景:函数的课后作业,尝试定义一个函数使之模仿bin的十进制转二进制作业问题:明明定义了一个变量等于一个列表,return这个列表,返回了一个地址,等我想要访问这个列表时,它说这个变量没有defined。。。。。。line1到底是怎么回事????
代码如下:
def bin(x):
y = x
a = x // 2
b = y % 2
z = []
while a >= 1:
x = a
y = b
a = x // 2
b = y % 2
z.append(b)
z = reversed(z)
return z
shell:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
z
NameError: name 'z' is not defined 你只是定义了函数,没有运行,而且定义在函数内的临时变量外面是访问不了的,下面应该加一行z = bin(5)就有值了 枫还 发表于 2019-2-7 16:32
你只是定义了函数,没有运行,而且定义在函数内的临时变量外面是访问不了的,下面应该加一行z = bin(5)就有 ...
运行......是什么(捂脸)
还有z为什么要等于bin(5) 你在函数外部调用z,当然显示没定义,因为z是属于函数bin(x)的。
就像别人的东西,你硬说是大家的,当然不行。
解决办法就是把这个函数实例化,再调用这个函数即可。 傻瓜小白菜 发表于 2019-2-7 16:42
运行......是什么(捂脸)
还有z为什么要等于bin(5)
运行就是调用函数,你只是告诉python有这么一个函数,但是没有使用它, z = reversed(z)这一行是错误的,你想做的应该是z.reversed()这样,将列表顺序颠倒,bin(5)只是一个比喻,bin()括号里面填数字就行,就是在定义了一个bin之后,用z = bin(4)去调用它(数字不关键)此时外面的z就是用来接收bin()这个函数的返回值的 还有你第一次的b没有添加,这会丢失数据!数组可以用字符串来代替,最后用个int强制转换就可以得到101这种数据了 heidern0612 发表于 2019-2-7 16:48
你在函数外部调用z,当然显示没定义,因为z是属于函数bin(x)的。
就像别人的东西,你硬说是大家的,当然 ...
并不知道什么是实例化的我,翻了翻书,决定把它变成全局变量 枫还 发表于 2019-2-7 17:27
还有你第一次的b没有添加,这会丢失数据!数组可以用字符串来代替,最后用个int强制转换就可以得到101这种 ...
对哦!
不过为啥要取整数,用来代替地板除? 傻瓜小白菜 发表于 2019-2-7 17:50
对哦!
不过为啥要取整数,用来代替地板除?
emm,只是为了方便表示成类似 101010 这样的二进制形式
页:
[1]