2016-06-22 3 views
0
lines = [[str(i * j) for i in xrange(1, 13)] for j in xrange(1, 13)] 

for line in lines: 
    for num in line: 
     if line.index(num): 
      print ' ' * (3 - len(num)) + num, 
     else: 
      print ' ' * (2 - len(num)) + num, 
    print 

ich zu verstehen versuchen, warum die else Anweisung in die ersten Zeile bezieht und die line.index(num) betrifft restliche Zeilen.Python 2.7 line.index if-Anweisung für eine Multiplikationstabelle

+0

können Sie den Beitrag bearbeiten und den Code formatiert, so können wir lesen und helfen – Hani

+1

Bitte erklären Sie jedes Problem, das Sie bekommen, klar. – bhansa

+0

@Bhansa. Es ist keine gute Idee, die Codeformatierung so zu bearbeiten, insbesondere bei Python-basierten Fragen. Die Formatierung könnte die Ursache des Problems sein. – SiHa

Antwort

0

Da Ihre if-Anweisung die Rückgabe von line.index(num) nicht mit irgendetwas vergleicht, wird die Rückgabe eines Werts ungleich Null die Bedingung erfüllen, und die Rückgabe eines Werts von 0 führt zur -Anweisung.

line.index(num) liefert 0, wenn num ist der erste Eintrag in line und so wirkt nur auf den ersten Eintrag von jeder line in lines.

+0

@hollom danke, das ist was ich vermisst habe. –