1

関数を定義する必要があります。add_info(new_info、new_list)は、人に関する情報を含む4つの要素と新しいリストを持つタプルを取ります。その人の名前がまだリストにない場合、リストは新しい人の情報で更新され、操作が成功したことを示すためにTrueが返されます。それ以外の場合は、エラーが出力され、リストは変更されず、Falseが返されます。

例えば:

>>>d = load_file(’people.csv’)
>>>d
[(John’, ’Ministry of Silly Walks’, ’5555’, ’27 October’),
(’Eric’, ’Spamalot’, ’5555’, ’29 March’)]
>>>add_info((’John’, ’Cheese Shop’, ’555’, ’5 May’), d)
John is already on the list
False
>>>d
[(John’, ’Ministry of Silly Walks’, ’5555’, ’27 October’),
(’Eric’, ’Spamalot’, ’5555’, ’29 March’)]
>>>add_info((’Michael’, ’Cheese Shop’, ’555’, ’5 May’), d)
True
>>>d
[(John’, ’Ministry of Silly Walks’, ’5555’, ’27 October’),
(’Eric’, ’Spamalot’, ’5555’, ’29 March’), 
(’Michael’, ’Cheese Shop’, ’555’, ’5 May’)]

これまでの私のコードは次のようになります。

def load_file(filename):
with open(filename, 'Ur') as f:
    return list(f)

def save_file(filename, new_list):
with open(filename, 'w') as f:
    f.write('\n'.join(new_list) + '\n')

def save_file(filename, new_list):
with open(filename, 'w') as f:
    f.write(line + '\n' for line in new_list)


def save_file(filename, new_list):
with open(filename, 'w') as f:
    for line in new_list:
        f.write(line + '\n')

def add_info(new_info, new_list):


name = new_info

for item in new_list:
    if item == name:
        print str(new_info) , "is already on the list."
        return False
else:
    new_list.append(new_info)
    return True

すでにリストにある名前を入力すると、その名前がリストに追加されるだけです。何をすべきかわからない。何か案は?

前もって感謝します!

4

2 に答える 2

0

ifステートメントは、文字列(item [0])をリスト(name)と比較しています。そのため、そのテストは常に失敗し、Trueを返すelseステートメントに移動します。

于 2013-03-23T03:29:27.270 に答える
0

私はおそらくあなたのためにあなたの宿題をしているように聞こえますが、とにかく...

def add_info(new_info, new_list):
    # Persons name is the first item of the list
    name = new_info[0]

    # Check if we already have an item with that name
    for item in new_list:
        if item[0] == name:
            print "%s is already in the list" % name
            return False

    # Insert the item into the list
    new_list.append(new_info)
    return True
于 2013-03-23T00:30:52.033 に答える