0

実装しようとしているコードの例を次に示します。

def notes():            
    print "\nPlease enter any notes:"
    global texts
    texts = []
    if not texts:
        print "no notes exist."
        write_note()
    else:
        print "this note already exists"

def write_note():
    while True:
        global txt
        txt = raw_input(">>> ")
        if not txt:
            break
        else:
            texts.append(txt)
    print "\nNote(s) added to report."
    notes_menu()

def print_note():
    new_report.write("\nNotes:")
    for txt in texts:
        new_report.write("\n-%r" % txt)
    print "Note Printed to %r. Goodbye!" % file_name
    exit(0)

ここでの私の目標は、「notes()」が 2 番目 (または無限) に呼び出された場合に、新しい入力が「texts」リストに追加され、リストを上書きしないようにすることです。「notes()」が呼び出されるたびに、リストが空であるかどうかを少なくとも判断しようとしました。しかし、前回の呼び出しで「テキスト」に作成されたアイテムの数に関係なく、毎回「メモがありません」と出力されます。

私はこの時点で途方に暮れています。辞書機能を調べましたが、このコードに組み込む方法がわかりません。アドバイスや提案はありますか?

4

3 に答える 3

0

テキストを含むクラスを作成することがより良い設計になるというコメントに同意します。ただし、現状のコードに関しては、行が一度だけ実行さtexts = []れるように、メインコードの外側にある必要があるように思えます。notes()

于 2013-03-29T02:05:21.390 に答える
0

上記のものをあまり変更せずに、単に新しいメモを要求し、そのメモを既存のリストに追加する関数を提案できますか:

>>> notes = []
>>> def write_note(notes):
...     while True:
...         new_note = raw_input('>>> ')
...         if not new_note:
...             break
...         else:
...             notes.append(new_note)

これはあなたが求めていることをしますか?

于 2013-03-29T02:13:49.147 に答える
0

texts = [] を呼び出すと、テキストを空のリストに設定し、以前に設定した項目を空白にします。その行を削除すると役立つはずです。

また、.extend() 関数を使いたいと思うかもしれません。Append は、リストの最後に項目を追加します。つまり:

>>li = [1,2,3]
>>li2 = [4,5,6]
>>li.append(li2)
li = [1,2,3,[4,5,6]]

extend() は 2 つのリストを連結します。

>>li = [1,2,3]
>>li2 = [4,5,6]
>>li.extend(li2)
li = [1,2,3,4,5,6]

これはPython へのダイブで見つけることができます

于 2013-03-29T02:29:02.123 に答える