2014-01-21 48 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

相关问题