2017-10-26 1 views
0

Ich arbeite an meinem Code, während ich die Liste der IDs erzeuge, die von 361 bis 375 beginnen, damit ich die Strings in die Schaltflächenobjekte eingeben kann. Ich möchte die zwei gleichen Zeichenketten in die 2 verschiedenen Knopfgegenstände unter Verwendung mit zwei verschiedenen ids eingeben. HierSo geben Sie die gleichen Strings nach 7 Objekten ein

ist zum Beispiel:

>>> 361 >>>> 101 BBC One South East 
>>> 362 >>>> 102 BBC Two 
>>> 363 >>>> 103 ITV 
>>> 364 >>>> 104 Channel 4 
>>> 365 >>>> 105 Channel 5 
>>> 366 >>>> 106 Sky One 
>>> 367 >>>> 107 Sky Living 
>>> 368 >>>> 101 BBC One South East 
>>> 369 >>>> 102 BBC Two 
>>> 370 >>>> 103 ITV 
>>> 371 >>>> 104 Channel 4 
>>> 372 >>>> 105 Channel 5 
>>> 373 >>>> 106 Sky One 
>>> 374 >>>> 107 Sky Living 

Hier ist der Code:

channel_index = 0 

#set the channels text in the label 
for program_id in range(361, 375): 
    self.parent.getControl(int(program_id)).setLabel(channels_list[channel_index]) 
    channel_index += 1 

Hier ist die Liste für channels_list:

['102 BBC Two', '103 ITV', '104 Channel 4', '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic'] 

Was der Code tun, ist sie Geben Sie nur die 7 Zeichenfolgen in 7 Tasten ein, so dass Sie nicht die gleiche Zeichenfolge über die nächsten 7 Tasten eingeben Es wird mir einen Fehler geben: IndexError: Index außerhalb des Bereichs auflisten.

Was ich zu tun erwarte, ist die Eingabe der Strings in den ersten 7 Tasten, also in den nächsten 7 Tasten möchte ich die gleichen Strings eingeben. Kannst du mir bitte zeigen, wie ich das mit meinem aktuellen Code machen kann?

EDIT: Wenn ich das versuchen:

for program_id in range(361, 375): 
    print channels_list[channel_index] 

Es wird die Ausgabe für den channels_list geben Sie mir:

102 BBC Two 
103 ITV 
104 Channel 4 
105 Channel 5 
106 Sky One 
107 Sky Living 
108 Sky Atlantic 

Hier ist, was ich erreichen will:

102 BBC Two 
103 ITV 
104 Channel 4 
105 Channel 5 
106 Sky One 
107 Sky Living 
108 Sky Atlantic 
102 BBC Two 
103 ITV 
104 Channel 4 
105 Channel 5 
106 Sky One 
107 Sky Living 
108 Sky Atlantic 

Hier ist, was ich verwende, um die Kanäle in der Liste zu speichern:

for channels in self.channel: 
    if(channel == channels or len(channels_list)) > 0: #check to see if it equals any or we already found it 
     channels_list.append(channels) #add chanel to list 

     if len(channels_list) == 7: 
      break 
+0

Es ist ein wenig verwirrend ... Was ist die endgültige Ausgabe, die Sie überprüfen? Basierend auf welcher Eingabe? –

+0

@DamianLattenero Ich habe es aktualisiert, bitte in meiner Update-Frage zu sehen. –

+0

[itertools.cycle] (https://docs.python.org/2/library/itertools.html#itertools.cycle) ?? – f5r5e5d

Antwort

2

Sie tun Möchten Sie die Schaltfläche nur zweimal zur Liste hinzufügen?

for channels in self.channel: 
    if(channel == channels or len(channels_list)) > 0: #check to see if it equals any or we already found it 
     channels_list.append(channels) #add channel to list 
     channels_list.append(channels) #add channel to list again 

Oder fügen Sie es in der Reihenfolge hinzu? Schreiben Sie dann die for-Schleife oder haben Sie eine for-Schleife außerhalb der for-Schleife und lassen Sie es zweimal laufen:

+1

das ist eine Option, ja, plus eins hier –

0

Wenn ich auch Ihre Frage verstanden, man muss nur nach den Index 7 erhalten von vorn beginnen, wie folgt aus:

channels_list = ['102 BBC Two', '103 ITV', '104 Channel 4', '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic'] 

channel_index = 0 

#set the channels text in the label 
for program_id in range(361, 375): 
    print(channels_list[channel_index]) 
    channel_index += 1 
    if(channel_index == 7): 
     channel_index = 0 

der Ausgang sein:

102 BBC Two 
103 ITV 
104 Channel 4 
105 Channel 5 
106 Sky One 
107 Sky Living 
108 Sky Atlantic 
102 BBC Two 
103 ITV 
104 Channel 4 
105 Channel 5 
106 Sky One 
107 Sky Living 
108 Sky Atlantic 
Verwandte Themen