2015-08-08 81 views
3

我目前正在學習Python,並開始了一個項目,爲2000-2005 MLB對決牌遊戲創建一個棒球模擬器。這些程序包含棒球比賽的事件,作爲單獨代碼中間的打印語句(「傑夫命中一個單一」,「博比命中一個飛球」等)。如果我想一次運行很多遊戲,我經常會拿出打印報表。出於可行性原因,我的目標是告訴Python不要打印某些語句(比如說,在特定的行範圍內),即使代碼顯示爲「」。這可能嗎?Python - >用打印語句告訴程序「不打印」

例如:

while numberofgames < 1000: 
    [do not print any statements here] 
    ---baseball games--- 
end of while loop 

THEN:打印仿真結果

+0

難道你不能僅僅評論打印行嗎? – Pikamander2

+0

所有可能發生的不同事件都有很多打印行。我想知道是否有一個簡單的方法來告訴它停止打印行,然後單獨進行並將它們評論出來。 –

+3

使用'logging'模塊而不是'print'語句來控制何時何地產生輸出。 – chepner

回答

2

是的,你可以把所有的打印語句到if結構如..

if printStuff: 
    print 'I dont like baseball' 
    print 'I love it!' 

然後,它僅僅是一個如果您想打印,請將printStuff設置爲True,如果您不打印,則設置爲False

1

您可以使用全部替換來替換print(#print(

當您準備再次打印時,您可以做相反的事情:將#print(替換爲print(

4

您可以創建一個全局變量,您可以檢查以確定要打印多少?通過這樣做,您可以根據需要控制日誌記錄的數量。

if printLevel > 3: 
     print("Bobby hits a fly ball for an out") 
+0

謝謝!我打算使用這種方法,因爲它提供了用於顯示打印語句的最大靈活性。每個人的評論和回答都很有幫助,所以大家都謝謝大家! –

0

一個黑客,當然,但爲什麼不重寫一段時間的打印功能?

#the line below needs to be the first in the file 
#and is required on Python 2.7 
from __future__ import print_function 

def to_null(*args, **kwds): 
    pass 

def test1(x): 
    print ("test1(%s)" % (x)) 


#override the print 
old_print = __builtins__.print 
__builtins__.print = to_null 

test1("this wont print") 

#restore it 
__builtins__.print = old_print 

test1("this will print") 

輸出:

test1(this will print) 

也參見Is it possible to mock Python's built in print function?

最後,建議使用記錄模塊是斑點上。儘管該模塊使用起來可能會非常棘手。