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)

我的问题分为两部分:

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

  2. 如何让打印方法继续检查并打印尽可能多的文本^ 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

你应该使用lists :

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,所以我想澄清一下:我使用global是因为 OP used global,而不是因为这是一个好的解决方案。

于 2013-03-28T00:27:39.493 回答