我目前正在做一个项目,我似乎遇到了一个逻辑错误。 我的项目是纯python的,由两个文件组成:用户界面以及阅读.py. 你知道吗
ui处理一个简单的cmd ui和一个缓存文件来保存用户设置。你知道吗
Read通过import from ui从缓存文件获取数据,以便解析某些文件(文件解析与问题无关) 以下是ui的代码:
def read_cache():
with open("cache.txt", "r+") as f:
byt = f.read()
byt = byt.split()
return byt
def write_cache(a, b):
with open("cache.txt", "w") as f:
f.write(a + "\n" + b)
def ui():
g = raw_input("Use cache file? (y/n): ")
if g == "y":
i = read_cache()
return i
elif g == "n":
zipname = raw_input("Zip file name: ")
direc = raw_input("Zip file folder directory: ")
write_cache(zipname, direc)
i = [zipname, direc]
return i
else:
print("ERROR: Please input a valid y/n \n")
ui()
下面是read的代码(仅发生错误的相关部分):
import ui
x = ui.ui()
zipname = x[0]
direc = x[1]
错误是:Traceback (most recent call last):
File "read.py", line 11, in <module>
zipname = x[0]
TypeError: 'NoneType' object has no attribute '__getitem__'
当我在y问题中输入无效的输入,而不是输入有效的输入时,似乎会发生这种情况。又名else子句出错用户界面()
有什么想法吗?我试着只从ui导入ui(),我试着在ui中运行ui并在那里分配一个var。你知道吗
事先谢谢你的帮助。你知道吗
编辑:将代码改为returnui()似乎可以解决这个问题,但我不明白怎么做。有人能解释一下吗?你知道吗
第二次编辑:我仍然不知道为什么returnui()可以工作,但是我的整个代码可以通过将所有内容更改为一个while循环并嵌套if循环来更好地构建。不需要递归。谢谢@dercz和@zondo
目前没有回答
相关问题 更多 >
编程相关推荐