使用用户输入(python)查找和替换列表

时间:2014-10-20 01:40:11

标签: python list

我需要帮助我的作业额外的学分。目标是制作一个列表,然后允许用户输入他们自己的数据(在这种情况下是鸟类)然后它排序并返回鸟类。额外的信用部分是允许用户在之后编辑任何信息。我不知道如何找到/替换用户提供的内容。

代码:

def sorted_list():
    bird_list.sort()
    for i in bird_list:
        print(i)
    print()
    print('There are', len(bird_list), 'birds in the list.')
    #end for
#end def

cond = 'y'

while cond == 'y':
    bird = input('Type the name of another bird (RETURN when finished): ')
    if bird in bird_list:
        print(bird, 'is already in the list.')
    else:
        bird_list.append(bird)
        print(bird, 'has been added to the list.')
    if bird == '':
        cond = 'n'
        sorted_list()
    #end if
#end while

edit = input('Edit? (y/n) ')

print()
if edit == 'y':
    change = input('Which bird would you like to change? ')
    if change == bird_list[0]:
        i = input('Enter correction ' )
    else:
        print('Entry not found in list')

编辑:

使用此

解决了编辑问题
if edit == 'y':
    change = input('Which bird would you like to change? ')
    if change in bird_list:
        loc = bird_list.index(change)
        bird_list.remove(change)
        correction = input('Enter correction ' )
        bird_list.insert(loc, correction)
    else:
        print('Entry not found in list')

2 个答案:

答案 0 :(得分:1)

看起来你打算根据他们的名字找到任意鸟的位置。要在python列表中查找具有特定值的项,请使用list.indexstdtypes documentation

答案 1 :(得分:1)

首先,您可以使用.index在列表中查找项目的位置。

但是你的代码还有另外一个问题,这就是当你输入一个名字时你得到'Entry not found on list'输出的原因,这个名字在列表的索引0处,即第一次您输入一个空白字符串(输入Enter键而不输入任何内容),在bird_list附加一个空白字符串鸟名称,并且您的sorted_list方法将空字符串{{ 1}}在列表的第一位,这里:

''

正确的逻辑应该是:

if bird in bird_list:
    print(bird, 'is already in the list.')
# if bird is ''(first time), it will be appended to the list, too
else:
    bird_list.append(bird)
    print(bird, 'has been added to the list.')
if bird == '':
    cond = 'n'
    # and this will sort '' in the 0 index of the list
    sorted_list()