Python 有没有办法通过在文本框中输入索引来删除列表中的元素
我正在尝试输入命令“remove”,后跟索引,以便删除“to-do”列表中的特定字符串,有没有任何方法可以做到这一点而不会混淆编译器和将整数误认为字符串。(我得到TypeError:字符串索引必须是整数error,因为命令的一半是字符串,而另一半是数字) p、 s.-id假设使用.split标记以便传递参数,但是,我已经有了一个解析命令的函数Python 有没有办法通过在文本框中输入索引来删除列表中的元素,python,Python,我正在尝试输入命令“remove”,后跟索引,以便删除“to-do”列表中的特定字符串,有没有任何方法可以做到这一点而不会混淆编译器和将整数误认为字符串。(我得到TypeError:字符串索引必须是整数error,因为命令的一半是字符串,而另一半是数字) p、 s.-id假设使用.split标记以便传递参数,但是,我已经有了一个解析命令的函数 todo_list = [] def parse_command(cmd): arg = cmd.split() if arg[0] =
todo_list = []
def parse_command(cmd):
arg = cmd.split()
if arg[0] == 'add':
add_item(arg[1])
elif arg[0] == 'remove':
remove_item(arg[1])
elif arg[0] == 'move':
move_item(arg[1], arg[2])
elif arg[0] == 'list':
list_items()
else:
print("not a valid command")
def add_item(item):
for i in range(0, 1):
tasks = item
todo_list.append(tasks)
print("Your to-do list so far: ", todo_list)
def remove_item(idx):
for idx in todo_list:
if cmd == idx[cmd]:
todo_list.pop(int(cmd))
def move_item(idx1, idx2):
return("This function moves! ")
def list_items():
for x in range(len(todo_list)):
return todo_list[x]
while(True):
cmd = input("Please input command: ")
parse_command(cmd)
#input: Please input command: add hello
#Your to-do list so far: ['hello']
#Please input command: add stack_overflow!
#Your to-do list so far: ['hello', 'stack_overflow!']
#Please input command: remove 1
#after inputting "remove 1" it spits this message out:
TypeError Traceback (most recent call last)
<ipython-input-78-9b3707886f99> in <module>
37
38 cmd = input("Please input command: ")
---> 39 parse_command(cmd)
40
41
<ipython-input-78-9b3707886f99> in parse_command(cmd)
6 add_item(arg[1])
7 elif arg[0] == 'remove':
----> 8 remove_item(arg[1])
9 elif arg[0] == 'move':
10 move_item(arg[1], arg[2])
<ipython-input-78-9b3707886f99> in remove_item(idx)
23 def remove_item(idx):
24 for idx in todo_list:
---> 25 if cmd == idx[cmd]:
26 todo_list.pop(idx)
27
TypeError: string indices must be integers```
待办事项列表=[]
def parse_命令(cmd):
arg=cmd.split()
如果arg[0]=“添加”:
添加项目(参数[1])
elif arg[0]=“删除”:
删除_项(参数[1])
elif arg[0]=“移动”:
移动项目(参数[1],参数[2])
elif arg[0]=“列表”:
列出项目()
其他:
打印(“不是有效的命令”)
def添加_项目(项目):
对于范围(0,1)中的i:
任务=项目
待办事项列表。追加(任务)
打印(“到目前为止您的待办事项列表:”,待办事项列表)
def移除_项(idx):
对于待办事项列表中的idx:
如果cmd==idx[cmd]:
todo_list.pop(int(cmd))
def移动_项(idx1、idx2):
return(“此函数移动!”)
def列表_项():
对于范围内的x(len(待办事项列表)):
返回待办事项列表[x]
虽然(正确):
cmd=input(“请输入命令:”)
parse_命令(cmd)
#输入:请输入命令:添加hello
#到目前为止你的待办事项清单:[“你好”]
#请输入命令:添加堆栈溢出!
#到目前为止,您的待办事项列表:[“你好”,“堆栈溢出!”]
#请输入命令:删除1
#输入“删除1”后,会弹出以下消息:
TypeError回溯(最近一次调用上次)
在里面
37
38 cmd=input(“请输入命令:”)
--->39 parse_命令(cmd)
40
41
在parse_命令(cmd)中
6添加项目(参数[1])
7 elif arg[0]=“删除”:
---->8删除项目(参数[1])
9 elif arg[0]=“移动”:
10移动项目(参数[1],参数[2])
在删除项(idx)中
23 def移除_项目(idx):
24对于待办事项列表中的idx:
--->25如果cmd==idx[cmd]:
26待办事项列表.pop(idx)
27
TypeError:字符串索引必须是整数```
这是通过
idx
索引值从列表中删除项目的方法:
def remove_item(idx):
print("idx {} cmd {}".format(idx, cmd)) # cmd = remove 1
#remove by index
todo_list.pop(int(idx))
出现类型错误的原因是因为以下行:
如果cmd==idx[cmd]:
这对我来说有点不清楚
但是,上面的函数运行良好欢迎使用SO,如果您能提供示例输入和预期输出,请查看它是否会有所帮助。我不理解您的问题的主体,但从标题判断,答案是
list.pop(int(input())
。为了更好地理解,更新了帖子,使其包含所有代码,抱歉!编译器没有混淆,也没有出错input()
接受一个字符串,因此如果要将该字符串的一部分用作数字,则必须将其转换