我写了一个python程序,报错NameError: name 'i' is not defined

程序:
def min(i):
i=len(list)-1
min=list[i]
if i==0:
return min
else:
if min<list[i-1]:
min=min
else:
min=list[i-1]
return min(i-1)
list=[154,64,16,65,3,56]
min(i)

Python程序,错误NameError:名称XX未定义不是由声明引起的,需要在文件的前两行声明代码,声明方法是:

1,在文件中写一个带有中文字符的python文件,不进行编码。

2,当程序文件中有中文字符时,如果文件未声明编码格式,则会显示错误消息:文件“encode.py”,第1行#SaxaxError:文件编码中的非ASCII字符'\ xe7'。 py在第1行,但没有编码声明;有关详细信息,请参阅//..python.../dev/peps/pep-0263/。

3,根据错误提示,在python官方网站上获取以下帮助信息。

4,因此,请按照帮助文档提示和示例在Python文件中包含代码声明。

5,保存后,再次运行,运行成功。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18

你是想写递归求列表最小值的代码吧,问题太多:

def min(i): # min 是标准函数,不应定义一个同名的
    i=len(list)-1 # list是什么,引用全局变量吗? 那要用globa定义一下
    min=list[i] # min已经是函数了,再把它变成整数?
    if i==0:
        return min # 同上
    else:
        if min<list[i-1]:
            min=min
        else:
            min=list[i-1]
        return min(i-1) # 倒底是函数还是整数?
list=[154,64,16,65,3,56] # list也是关键字,不应用做变量名
min(i) # 你的报错出在这里,i是什么你还没有定义

其实python自带的min函数就是取最小值的,像你的例子两行搞定:

l = [154,64,16,65,3,56]
print min(l)

本回答被提问者和网友采纳
第2个回答  推荐于2017-09-02
1、首先除了错误要找出错误在哪里。
2、出现这种情况就是使用的“i”没有定义,而是直接拿出来用的。
3、解决方式:将i定义一下就ok了。
第3个回答  2014-12-04

单纯求列表的最小值,如果列表元素没问题的话(去除invalid item),直接给列表排序,取头尾也能拿到最大最小值。

list=[154,64,16,65,3,56]
list.sort()
print list[0]
print list[-1]

相似回答