我需要一些帮助从这个广播节目开始

时间:2016-04-17 05:13:36

标签: python list radio

如果用户按下3,我需要帮助的是让电台换到列表中的下一个电台。

$('.box').css("background-image", "url('{{ URL::asset('icons/"+dataActivity+".png')}}')");

它从静态开始,但我想让它改变每一个,然后重新开始。我试过这样的事情:

class Radio:
def __init__(self):
    self.stations=["STATIC","97.2", "99.6", "101.7", "105.3", "108.5"]
    self.stationStart=self.stations[0]
def seekNext(self):
    self.stationsStart

我最终得到的最后一站无法弄清楚如何列出其余的站点。

3 个答案:

答案 0 :(得分:2)

有几种合理的方法可以做你想做的事。

最简单的方法是让您的类存储列表中的索引,而不是直接列表项。这样,您可以使用%模数运算符递增索引并将其包装:

class Radio:
    def __init__(self):
        self.stations=["STATIC","97.2", "99.6", "101.7", "105.3", "108.5"]
        self.station_index = 0

    def seek(self):
        print("Currently tuned to", self.stations[self.station_index])
        print("Seeking...")
        self.station_index = (self.station_index + 1) % len(self.stations)
        print("Now tuned to", self.stations[self.station_index])

“发烧友”,可能更多Pythonic解决问题的方法是使用Python标准库中cycle模块的itertools生成器。它返回一个迭代器,它从列表中生成值,从到达结尾时开始。虽然您通常只处理for循环中的迭代器,但也很容易手动使用iterator protocol。在我们的例子中,我们只想在迭代器上调用next来获取下一个值:

import itertools

class Radio:
    def __init__(self):
        self.stations = itertools.cycle(["STATIC","97.2", "99.6", "101.7", "105.3", "108.5"])
        self.current_station = next(self.stations)

    def seek(self):
        print("Currently tuned to", self.current_station)
        print("Seeking...")
        self.current_station = next(self.stations)
        print("Now tuned to", self.current_station)

答案 1 :(得分:1)

index = 0

if a=="3":
    index = (index+1)%6
    print(stations[index])

答案 2 :(得分:-2)

在init中使用实际位置“self.pos = 0”定义变量,并在需要时调用此函数

def seekNext(self):
    if(self.pos == (len(self.stations)-1)):
        self.pos = 0
    else:
        self.pos += 1
    print(self.stations[self.pos])