如何编写可重复的raw_input?

时间:2013-03-28 00:21:34

标签: python raw-input

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

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的新变量,并且会像笔记一样多次这样做调用方法并分配文本?

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

3 个答案:

答案 0 :(得分: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']

答案 1 :(得分: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

答案 2 :(得分:0)

您应该使用list

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使用了global,而不是因为这是好的溶液