所以我正在尝试编写一个脚本,允许用户在不同的类别下记下笔记,然后将这些笔记打印到输出文件中。下面看一些示例代码。
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)
我的问题分为两部分:
我可以使用什么来做到这一点,以便如果再次调用notes方法(文本已经被分配给字符串),它会创建一个名为text1的新变量,并且会像笔记一样多次这样做调用方法并分配文本?
如何让print方法继续检查,并打印尽可能多的文本?
答案 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
,而不是因为这是好的溶液