2013-04-30 40 views
2

我正在開發一個互動小說遊戲,到現在我也睡行就像這樣:如何在打印之前做單行字符串睡眠?

def pn(n): print(n); time.sleep(2) #print narrative 


n1 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer" 
n2 = "quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac" 
n3 = "justo lacinia fringilla." 


pn(n1); pn(n2); pn(n3) 

我想作一個字符串,如:

nX = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer 
quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac 
justo lacinia fringilla.""" 

和睡眠2秒每一行,有沒有辦法做到這一點?我搜索了Python 3.3文檔,找不到任何有用的東西。

+0

你是什麼在你的最後一個例子線是什麼意思?將它拆分成你的意思?或者你在字符串中嵌入換行符(在'Integer'和'ac'後面)? – 2013-04-30 18:26:10

+3

就我個人而言,我發現打印每行之間睡覺兩秒的中頻遊戲確實令人沮喪。如果你想做一個Infocom-esque遊戲,看看[Inform](http://en.wikipedia.org/wiki/Inform) - 這比從零開始編寫所有這些要簡單得多。 – Aya 2013-04-30 18:29:27

+0

@Aya謝謝你的建議,我會看看。 – 2013-04-30 18:43:22

回答

3

你需要的文本分成行打印。如果你已經換行文本,分裂與str.splitlines()

for line in nX.splitlines(): 
    pn(line) 

.splitlines()就行分隔符拆分文本,它可以根據平臺的不同而不同。

否則,您需要找到將文本拆分爲句子的位置。使用正則表達式將會給你的最大收益:

import re 

sentence_end = re.compile(r'(?<=[.?!])\s+') 

for sentence in sentence_end.split(nX): 
    pn(sentence) 

它使用一個向後看斷言,以確保文本在由最終的句子標點符號前面的空格分割(.?!)。上句

分裂,否則將忽略換行符:

>>> import re 
>>> sentence_end = re.compile(r'(?<=[.?!])\s+') 
>>> sentence_end.split(nX) 
['Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 'Integer\nquis purus eu lorem lobortis aliquam.', 'Nunc imperdiet orci ac\njusto lacinia fringilla.'] 
+0

使用我自己定義的功能的完美答案,它將被接受。 – 2013-04-30 18:36:01

2

只需將您的字符串轉換爲多個字符串,迭代它們並在每次迭代中添加一些延遲。

>>> nX = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer 
... quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac 
... justo lacinia fringilla.""" 
>>> nX.splitlines() 
['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer', 'quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac', 'justo lacinia fringilla.'] 
>>> for line in nX.splitlines(): 
...  print(line) 
...  time.sleep(2) 
... 
 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer 
pause 
quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac 
pause 
justo lacinia fringilla. 
pause 
+0

工作就像一個魅力。 – 2013-04-30 18:32:28