0

そのため、ユーザーがさまざまなカテゴリでメモを書き留めて、それらのメモを出力ファイルに出力できるようにするスクリプトを作成しようとしています。いくつかのサンプルコードを見てみましょう。

def notes():
    global text
    text = raw_input("\nPlease enter any notes.\n>>> ")
    print "\Note added to report."
    notes_menu()

def print_note():
    new_report.write("\nNotes: \n%r" % text)

私の質問は2つの部分に分かれています:

  1. notes メソッドが再度呼び出された場合 (既にテキストが文字列に割り当てられている場合)、text1 という新しい変数を作成し、notes メソッドが呼び出されて text が呼び出されるのと同じ回数だけこれを行うにはどうすればよいですか?割り当てられた?

  2. print メソッドを取得して、チェックを続け、存在する text^nths をできるだけ多く印刷するにはどうすればよいですか?

4

3 に答える 3

2

使用する

iter(callable, sentinel) -> イテレータ

>>> list(iter(raw_input, ''))
apple
1 2 3
foo bar

['apple', '1 2 3', 'foo bar']

カスタマイズ:

>>> list(iter(lambda: raw_input('Enter note: '), ''))
Enter note: test
Enter note: test 2
Enter note: 
['test', 'test 2']
于 2013-03-28T07:07:20.110 に答える
1

ループを使用して複数行のメモを読み取り、それらをリストに追加することをお勧めします。これがどのように機能するかの例を次に示します。

def notes():
    lines = []
    print "Please enter any notes. (Enter a blank line to end.)"
    while True: # loop until breaking
        line = raw_input(">>> ")
        if not line:
            break
        lines.append(line)

    return lines
于 2013-03-28T00:30:53.537 に答える
0

listそのためには s を使用する必要があります。

texts = []
def notes():
    global texts
    txt = raw_input("\nPlease enter any notes.\n>>> ")
    texts.append(txt) # Add the entered text inside the list
    print "\Note added to report."
    notes_menu()

def print_note():
    for txt in texts:
        new_report.write("\nNotes: \n%r" % txt)

それがあなたの望むものであることを願っています。

編集: を使用したために反対票を投じられたと確信しているのでglobal、明確にしたいと思います: globalOPが を使用globalしたため使用しましたが、それが良い解決策であるからではありません。

于 2013-03-28T00:27:39.493 に答える