2014-01-21 85 views
2

對於我的作業,我們必須編寫一個程序來模擬交通燈。我有程序工作唯一的問題是代碼有點混亂,因爲我不知道如何正確使用類。而文檔只是混淆了我(有點小菜鳥)。打印字符串並在類中執行函數[Python]

所以我只是複製了我想多次更改一個變量的函數,並且手動更改了變量。我知道可以用類來完成這個任務,並且只需用正確的變量創建這個類的一個實例,但我似乎可以讓它工作。這是我想要實現的「僞代碼」中的一個小例子。

這段代碼是一個計時器,用於計算交通信號燈的運行時間。我想創建一個可以接受邊的類(leftright,front,back)並打印此字符串,因此我不必複製代碼並手動輸入邊。但我可以在一個方面做一個實例。

import time 

class trafficlight_timer: 
    def __init__(self, side1): 
     self.side = side1 

    def trafficlight(self, side1): 
     s = 0 
     b = 5 
     t_max = 10 
     print self.side, "is green" 
     if b > t_max: 
      b = t_max 
     while s <= 60: 
      time.sleep(1) 
      s += 1 
      if s == b: 
       print self.side, "is red" 
       print self.side, "was green for %d seconds." % s 
       print "" 
       s = 65 
    trafficlight() 

instance_left = trafficlight_timer('left') 

如果有人能指出我這個應該怎麼做,我將非常感激。提前謝謝了!

回答

2

你有什麼問題?我沒有嘗試去運行它,但是對我來說,這看起來基本沒問題,除了你通常不會在類內部調用trafficlight()(可能甚至不是合法的語法,我不確定)。

import time 

class trafficlight_timer: 
    def __init__(self, side1): 
     self.side = side1 

    def trafficlight(self): 
     s = 0 
     b = 5 
     t_max = 10 
     print self.side, "is green" 
     if b > t_max: 
      b = t_max 
     while s <= 60: 
      time.sleep(1) 
      s += 1 
      if s == b: 
       print self.side, "is red" 
       print self.side, "was green for %d seconds." % s 
       print "" 
       s = 65 

instance_left = trafficlight_timer('left') 
instance_left.trafficlight() 

我所做的唯一變化是從類體刪除trafficlight(),請從trafficlight功能冗餘和未使用side1參數,並在instance_left實例調用trafficlight()。輸出看起來是這樣的:

left is green 
left is red 
left was green for 5 seconds. 

如果這不是你想要的,更詳細地描述你所期望的產出和非期望產出你得到。

+0

非常感謝我想要的!很遺憾我忘記了如何正確執行它。 – user3157264

相關問題