首页 > 解决方案 > 从列表中删除带有数字的项目

问题描述

在这里会很感激一些帮助,因为我没有任何想法。

我有一个单词列表,每个单词都打印在一个新行上,前面有数字。我想要求用户输入一个数字并从列表中删除该行(使用 del 函数)。我无法弄清楚如何匹配行前的索引和数字,并避免它超出范围。

linesList = []

def a():
    while True:
        line = input("Add a line: ")
        linesList.append(line)
        if line == "#":
            linesList.pop()
            counter = 0
            for i in linesList:
                print("{}: {}".format(counter + 1, linesList[counter]))
                counter += 1
            print(" ")
            break


def d():        
    while True:
        number = int(input("Line Number: "))
        length = len(linesList)
        if number in range(length):
            del linesList[number]
            counter = 0
            for i in linesList:
                print("{}: {}".format(counter + 1, linesList[counter]))
                counter += 1
            print(" ")
            break
        else:
            continue

预期结果:

Add a line: Monday
Add a line: Tuesday
Add a line: Wednesday
Add a line: Thursday
Add a line: Friday
Add a line: #
1: Monday
2: Tuesday
3: Wednesday
4: Thursday
5: Friday

Line number: 5
1: Monday
2: Tuesday
3: Wednesday
4: Thursday

标签: python

解决方案


在删除功能中,用户给出的数字比索引大一,因此您需要为此调整代码

def d():        
    while True:
        number = int(input("Line Number: "))
        length = len(linesList)
        if (number-1) in range(length):
            del linesList[number-1]
            counter = 0
            for i in linesList:
                print("{}: {}".format(counter + 1, linesList[counter]))
                counter += 1
            print(" ")
            break
        else:
            continue

随着变化:

Add a line: Monday
Add a line: Tuesday
Add a line: Wednesday
Add a line: Thursday
Add a line: Friday
Add a line: #
1: Monday
2: Tuesday
3: Wednesday
4: Thursday
5: Friday

Line Number: 5
1: Monday
2: Tuesday
3: Wednesday
4: Thursday

推荐阅读