NameError:名称'last'未定义(虽然它实际上已定义)

时间:2018-02-07 03:52:19

标签: python nameerror

我在python上遇到这个奇怪的错误:我定义了一个名字(在这种情况下, last ),但是它说它还没有定义。

代码:

name = input("Insert name here: \n")
list = list(name)
last = list[len(list)-1]    ### here is when it's defined

print("--\n")

while not len(list) == 1:

    if last == " ":    ### here is when it's first required
        del(last)

    print(("".join(list)))
    del(last)

print(("".join(list)))

错误回复:

Traceback (most recent call last):
  File "C:/Users/ocari/OneDrive/Documents/Python things/Decompor.py", line 9, in <module>
    if last == " ":
NameError: name 'last' is not defined

我怎么解决?

(顺便说一句,如果我在其所需的每一行中交换名称'last'作为其所需的定义(当前'list [len(list)-1]'),那么代码就可以工作。这证明了问题不是它的定义,而是另一种问题)

2 个答案:

答案 0 :(得分:1)

一旦del last,就不再定义它了。您可以在循环中的两个点执行此操作。然后下一次循环,再次尝试del last。由于不再定义,这是一个错误。

答案 1 :(得分:0)

当您的列表超过1个项目时 你的'last'将超过1次(因为它在循环中)
如果你想删除列表中的最后一项
你可以用pop 试试吧

name = input("Insert name here: \n")
list = list(name)
last = list[len(list)-1]    ### here is when it's defined

print("--\n")

while not len(list) == 1:
    if list[-1] == ' ' :
      list.pop()
    if len(list) == 1 :
        break
    list.pop()
    print(("".join(list)))