鱼C论坛

 找回密码
 立即注册
查看: 3245|回复: 12

不知道程序错在哪了

[复制链接]
发表于 2016-2-25 16:02:47 | 显示全部楼层 |阅读模式
1鱼币
def turn(x):
    i = 1
    n = 0
    while x // 2:
        a = x % 2
        x = x // 2
        n = a * i + n
        i = i * 10
        continue
print(n)

提示错误:NameError: name 'n' is not defined

最佳答案

查看完整内容

python里面缩进是作为语法的 根据缩进来判断语句、变量的执行区域 所以你的n实在turn()函数内的,他的作用于也只在turn里面能用 但是你的print()函数不在turn()里面,所以就不能在使用n这个变量了 你可以给print添加一个缩进,解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-25 16:02:48 | 显示全部楼层
python里面缩进是作为语法的
根据缩进来判断语句、变量的执行区域
所以你的n实在turn()函数内的,他的作用于也只在turn里面能用
但是你的print()函数不在turn()里面,所以就不能在使用n这个变量了
你可以给print添加一个缩进,解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-25 16:54:42 | 显示全部楼层
print(n)应该是缩进的,你的函数都没有返回值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-25 20:42:58 | 显示全部楼层
因为你前边定义了一个函数,而最后一句print(n)是在函数体之外的,当你运行你上边写的代码时,等于直接print(n)了,所以python会报错:NameError: name 'n' is not defined。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-26 11:48:51 | 显示全部楼层
def turn(x):
    i = 1
    n = 0 #此处的n为内部参数,在函数外部尝试访问n会报错,想要访问此处,先用global n 将n变为全局变量
    while x // 2:
        a = x % 2
        x = x // 2
        n = a * i + n
        i = i * 10
        continue

print(n)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-26 17:04:32 | 显示全部楼层
n是你函数 turn里面的内部参数
外部无法直接访问
需要加global使n变为全局变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-27 14:19:06 | 显示全部楼层
jzh823 发表于 2016-2-25 16:54
print(n)应该是缩进的,你的函数都没有返回值。

恩,就是,没注意到,蠢翻了,呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-27 14:20:46 | 显示全部楼层
shuofxz 发表于 2016-2-25 17:24
python里面缩进是作为语法的
根据缩进来判断语句、变量的执行区域
所以你的n实在turn()函数内的,他的作 ...

哦,感谢大神的耐心解答,犯得各种奇葩错误。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-27 14:23:46 | 显示全部楼层
debi999 发表于 2016-2-26 17:04
n是你函数 turn里面的内部参数
外部无法直接访问
需要加global使n变为全局变量

谢谢dcbi999,没注意到缩进的问题,才学习函数。。。有时候丢东落西的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-27 14:24:31 | 显示全部楼层
肚肚装炸弹 发表于 2016-2-26 11:48
def turn(x):
    i = 1
    n = 0 #此处的n为内部参数,在函数外部尝试访问n会报错,想要访问此处,先用 ...

感谢肚肚装炸弹,才学习函数,头尾不顾。。呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-27 14:26:17 | 显示全部楼层
安以陌 发表于 2016-2-25 20:42
因为你前边定义了一个函数,而最后一句print(n)是在函数体之外的,当你运行你上边写的代码时,等于直接prin ...

哦,谢谢安以陌,才学函数,没注意到。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-28 16:01:58 | 显示全部楼层
huaboshen 发表于 2016-2-27 14:24
感谢肚肚装炸弹,才学习函数,头尾不顾。。呵呵

嘿嘿 我也是刚开始 相互学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-22 15:11:08 | 显示全部楼层
shuofxz 发表于 2016-2-25 16:02
python里面缩进是作为语法的
根据缩进来判断语句、变量的执行区域
所以你的n实在turn()函数内的,他的作 ...

版主好吊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 20:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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