关于python:如何编写可重复的raw_input?

How to write a repeatable raw_input?

因此,我正在尝试编写一个脚本,允许用户在不同类别下记下笔记,然后将这些笔记打印到输出文件。 下面看一些示例代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
def notes():
    global text
    text = raw_input("
Please enter any notes.
>>>"
)
    print"
ote added to report."

    notes_menu()

def print_note():
    new_report.write("
Notes:
%r"
% text)

我的问题分为两部分:

  • 我可以使用什么来做到这一点,以便如果再次调用notes方法(文本已经被分配给字符串),它会创建一个名为text1的新变量,并且会在调用notes方法和文本时多次这样做。分配?

  • 如何让print方法继续检查,并打印尽可能多的文本?


  • 运用

    iter(callable, sentinel) -> iterator

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

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

    自定义:

    1
    2
    3
    4
    5
    >>> list(iter(lambda: raw_input('Enter note: '), ''))
    Enter note: test
    Enter note: test 2
    Enter note:
    ['test', 'test 2']


    我想你会想要使用循环来读取多行音符,将它们添加到列表中。 这是一个如何工作的例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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


    您应该使用list s:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    texts = []
    def notes():
        global texts
        txt = raw_input("
    Please enter any notes.
    >>>"
    )
        texts.append(txt) # Add the entered text inside the list
        print"
    ote added to report."

        notes_menu()

    def print_note():
        for txt in texts:
            new_report.write("
    Notes:
    %r"
    % txt)

    我希望这就是你想要的。

    编辑:因为我很确定我得到了投票,因为我使用global,我想澄清一下:我使用global因为OP使用global,不是因为这是一个很好的解决方案。