如果用户按下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
我最终得到的最后一站无法弄清楚如何列出其余的站点。
答案 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])