鱼C论坛

 找回密码
 立即注册
查看: 2285|回复: 8

[已解决]我的天!!!为什么老是没有defined

[复制链接]
发表于 2019-2-7 16:25:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
背景:函数的课后作业,尝试定义一个函数使之模仿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
最佳答案
2019-2-7 17:02:30
傻瓜小白菜 发表于 2019-2-7 16:42
运行......是什么(捂脸)
还有z为什么要等于bin(5)

运行就是调用函数,你只是告诉python有这么一个函数,但是没有使用它, z = reversed(z)这一行是错误的,你想做的应该是z.reversed()这样,将列表顺序颠倒,bin(5)只是一个比喻,bin()括号里面填数字就行,就是在定义了一个bin之后,用z = bin(4)去调用它(数字不关键)此时外面的z就是用来接收bin()这个函数的返回值的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-7 16:32:31 | 显示全部楼层
你只是定义了函数,没有运行,而且定义在函数内的临时变量外面是访问不了的,下面应该加一行z = bin(5)就有值了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-7 16:42:50 | 显示全部楼层
枫还 发表于 2019-2-7 16:32
你只是定义了函数,没有运行,而且定义在函数内的临时变量外面是访问不了的,下面应该加一行z = bin(5)就有 ...

运行......是什么(捂脸)
还有z为什么要等于bin(5)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-7 16:48:04 | 显示全部楼层
你在函数外部调用z,当然显示没定义,因为z是属于函数bin(x)的。

就像别人的东西,你硬说是大家的,当然不行。

解决办法就是把这个函数实例化,再调用这个函数即可。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-7 17:02:30 | 显示全部楼层    本楼为最佳答案   
傻瓜小白菜 发表于 2019-2-7 16:42
运行......是什么(捂脸)
还有z为什么要等于bin(5)

运行就是调用函数,你只是告诉python有这么一个函数,但是没有使用它, z = reversed(z)这一行是错误的,你想做的应该是z.reversed()这样,将列表顺序颠倒,bin(5)只是一个比喻,bin()括号里面填数字就行,就是在定义了一个bin之后,用z = bin(4)去调用它(数字不关键)此时外面的z就是用来接收bin()这个函数的返回值的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-7 17:27:21 | 显示全部楼层
还有你第一次的b没有添加,这会丢失数据!数组可以用字符串来代替,最后用个int强制转换就可以得到101这种数据了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-7 17:34:46 | 显示全部楼层
heidern0612 发表于 2019-2-7 16:48
你在函数外部调用z,当然显示没定义,因为z是属于函数bin(x)的。

就像别人的东西,你硬说是大家的,当然 ...

并不知道什么是实例化的我,翻了翻书,决定把它变成全局变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-7 17:50:17 | 显示全部楼层
枫还 发表于 2019-2-7 17:27
还有你第一次的b没有添加,这会丢失数据!数组可以用字符串来代替,最后用个int强制转换就可以得到101这种 ...

对哦!
不过为啥要取整数,用来代替地板除?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-7 18:09:39 | 显示全部楼层
傻瓜小白菜 发表于 2019-2-7 17:50
对哦!
不过为啥要取整数,用来代替地板除?

emm,只是为了方便表示成类似 101010 这样的二进制形式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 15:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表