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:名称'i'未定义
所以我无法运行代码..你可以帮我解决一下..
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的代码。
答案 0 :(得分:-1)
错误正在发生,因为没有名为j
的变量。
将j
中的a(j)
替换为in_file
。
改变这个:
a(j)
对此:
a(in_file)
如果您更喜欢使用j
,那么您需要创建/定义j
变量,如下所示:
j = open("ncl.txt", "r")
最佳做法是为变量赋予有意义的名称,就像使用in_file
一样。
答案 1 :(得分:-1)
然后你发布了一个使用某个文件的代码,也发布了一个文件。或者至少在代码本身中添加该文件的内容。你可以在开头添加类似的东西来做到这一点:
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
循环而不是递归,它们更安全,更简单。我真的不明白你想要做什么,所以这只是一个建议。
lines
和linex
是危险的名字,有一天你会误认为另一个,并会在几个小时内搜索错误。也许称之为all_lines
和lines_list
?