【问题标题】:Recursive Function Name Error递归函数名称错误
【发布时间】:2015-12-26 21:02:41
【问题描述】:
def a(j):

    lines=in_file.readlines()
    linex=[]
    for line in lines:
        line=line.strip("\n").split(" ")
        linex.append(line)
    print(linex)
    for i in linex:
        for j in i:
            if j=="":
                return 0
            elif j=="X" or j=="Y":
                return 0
            else:
                return a(j[:-1])

in_file=open("ncl.txt","r")
a(j)

这是我的代码,我的代码出现了 NameError。

NameError: name 'i' is not defined

所以我无法运行代码..你能帮我解决一下吗..

 linex = [['CATTCG', 'ACT'], ['GGTAC', 'GCATTA']] after file operations..

解释我要做什么的小代码:

def a(j):

   if j=="":
     return 0
   elif j=="X" or j=="Y":
     return 0
   else:
     return a(j[:-1])


a("GUGUUG")

我只是想概括一下列表中每个 j 的代码。

【问题讨论】:

  • in_file 应该是输入吗?
  • 当 in_file 我得到 AttributeError: 'list' object has no attribute 'readlines' .. 第 4 行 = lines=in_file.readlines() 和第 17 行 =return a(i[: -1])
  • @İlaydaCansınKoç。将函数调用方式更改为a(in_file):,将定义更改为def a(in_file):
  • 我设法打开了 :)thanx padraic

标签: python for-loop recursion error-handling


【解决方案1】:

因为没有名为j 的变量而发生错误。

a(j) 中的j 替换为in_file


改变这个:

a(j)

到这里:

a(in_file)


如果您更喜欢使用j,则需要像这样创建/定义j 变量:

j = open("ncl.txt", "r")


最佳做法是为变量指定一个有意义的名称,就像您对 in_file 所做的那样。

【讨论】:

    【解决方案2】:

    然后你发布一个使用某个文件的代码,也发布一个文件,真的。或者至少在代码本身中添加该文件的内容。您可以通过在开头添加这样的内容来做到这一点:

    my_strings = """line 1
    line 2
    line 3"""
    

    这和这样做是一样的:

    with open("somefile.txt","r") as my_file:
        my_string = my_file.read()
    

    对于包含此内容的文件:

    line 1
    line 2
    line 3
    

    关于您在该函数的主体中执行 readlines(),然后执行递归。把它放在外面,它不属于那里,它可能会在第二次调用时完成所有内容,因为如果文件已经被读取,readlines() 将不会返回任何内容。

    我建议使用for 循环而不是递归,它们更安全、更简单。我真的不明白你要做什么,所以这只是一个建议。

    lineslinex 是危险的名字,你会在一天中误认一个,并且会花几个小时寻找一个错误。或许可以称之为all_lineslines_list

    【讨论】:

      猜你喜欢
      • 2022-11-19
      • 2019-07-02
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 2018-01-04
      • 2021-11-14
      相关资源
      最近更新 更多