gpt4 book ai didi

python - "list index out of range"异常(Python3)

转载 作者:行者123 更新时间:2023-12-01 03:42:09 26 4
gpt4 key购买 nike

当我检查列表 a 的长度时,我不断收到列表索引超出范围异常。第二个 if 语句的 ifelif 部分会弹出错误,具体取决于用户输入的内容。我知道当用户输入被分割时,列表会被正确创建,因为我将其打印出来......所以我有点迷失为什么我会收到这个错误。

if __name__ == '__main__':
for line in sys.stdin:
s = line.strip()
if not s: break
if (str(s) is "quit") == True: quit()
elif (str(s) is "quit") == False:
a = s.split()
print(a)
if (len(a) == 2) == True: first(a)
elif (len(a) == 3) == True: first(a)
else: print("Invalid Input. Please Re-enter.")

第一个方法是:(它在 if 语句中调用的方法只是打印当前的内容)

def first(self, a = list()):
word = a[0]

if word is ls:
ls(a[1])
elif word is format:
form(a[1]) # EDIT: was format
elif word is reconnect:
reconnect(a[1])
elif word is mkfile:
mkfile(a[1])
elif word is mkdir:
mkdir(a[1])
elif word is append:
append(a[1], a[2])
elif word is delfile:
delfile(a[1])
elif word is deldir:
deldir(a[1])
else:
print("Invalid Prompt. Please Re-enter.")

其他方法:

    def reconnect(one = ""):
print("Reconnect")

def ls(one = ""):
print("list")

def mkfile(one = ""):
print("make file")

def mkdir(one = ""):
print("make drive")

def append(one = "", two = ""):
print("append")

def form(one = ""):
print("format")

def delfile(one = ""):
print("delete file")

def deldir(one = ""):
print("delete directory")

def quit():
print("quit")
sys.exit(0)

最佳答案

问题似乎出在 first() 的定义上。您将其作为函数调用:

if (len(a) == 2) == True: first(a)
elif (len(a) == 3) == True: first(a)

但是你将它定义为一个方法:

def first(self, a = list()):

命令和参数的数组被放入 self 中,并且 a 始终是一个空列表,您尝试对其进行索引并失败。另外,除非您确定自己在做什么,否则不应使用 list() 这样的可变类型作为默认值。我简单地建议:

def first(a):

就您的 __main__ 代码而言,简化:

if __name__ == '__main__':

for line in sys.stdin:
string = line.strip()

if not string:
break

if string == "quit":
quit()

tokens = string.split()

length = len(tokens)

if 2 <= length <= 3:
first(tokens)
else:
print("Invalid Input. Please Re-enter.")

关于python - "list index out of range"异常(Python3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39432878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com