2016-07-18 5 views
-2
numbers=[i**3 for i in range (10) if i**3%3==1] 
print(numbers) 
#gets 1,64,343 

Warum ist 1, 64, 343 die Antwort?Ich muss wissen, warum dies der Ausgang für diese Python-Bedingung ist

+1

Weißt du was '**' tut? Weißt du was '%' tut? Wenn nicht, haben Sie [die Dokumentation] (https: // docs.python.org/3/reference/expressions.html)? – BrenBarn

+0

** 3 bedeutet, dass Sie die gleiche Zahl 3 mal multiplizieren müssen wie 3x3x3 –

+0

Weil 1, 64 und 343 die einzigen Würfel der Zahlen von 0 bis 9 sind, die ebenfalls eins größer als ein Vielfaches von drei sind. –

Antwort

2

Dies entspricht den Code:

for i in range(10): 
    if (i*i*i) % 3 == 1: 
     numbers.append(i*i*i) 
print (numbers) 

Sie überprüft werden, wenn der Rest erhalten wird, wenn die dritte Potenz einer Zahl von 1 bis 10 geteilt durch 3 ist gleich 1 ist Wenn ja, sind Sie Hinzufügen zu einer Liste und Drucken.

+0

Er hat i * i * i an die Liste angehängt, während ich i an die Liste angehängt habe. Das habe ich jetzt geändert. –

1

ersten i ist in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
dann, wenn (i*i*i) rem 3 zu 1
gleich ist es wählt (i*i*i)
und für [1,4,7]: (1*1*1)%3==1, (4*4*4)%3==1 und (7*7*7)%3==1:
1 * 1 * 1 = 1 und 1/3 = 0: Rest = 1
4 * 4 * 4 = 64 und 64/3 = 21: Rest = 1
7 * 7 * 7 = 343 und 343/3 = 114: Rest = 1

so ist der Ausgang:
[1 * 1 * 1, 4 * 4 * 4, 7 * 7 * 7], die [1, 64, 343]

Code:

numbers=[i**3 for i in range (10) if i**3%3==1] 
print(numbers) 

und dieser Code:

numbers=[] 
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]: 
    if (i*i*i) % 3 == 1: 
     numbers.append(i*i*i) 
print(numbers) 

Ausgang dieses:

[1, 64, 343] 
1
  1. Die Bedeutung von ** ex: 2**3 = 2*2*2#this means 2 to the power 3 = 8
  2. Die Bedeutung von % ex: 5%2 = 1#the sign means module, that means the remaining value after divide 5 by 2, it is one.

im Weg, der richtige Weg ist, die für jeden zu schreiben

for i in range(0,10): 
    value = i**3 
    if(value%3 == 1): 
     print("the value is {0}".format(value)) 

so das Ergebnis ist:

the value is 1 
the value is 64 
the value is 343 

Bit Erklärung in der for-Schleife

  • zuerst die i = 0 erhalten, an diesem Punkt value = 0*0*0 = 0, dann value%3=0
  • dann die i=1 erhalten, an diesem Punkt value = 1*1*1 = 1, der 'Wert% 3' bedeutet 1%3 = 1, so die Antwort i 1

.... so sehen Sie über andere Bedingungen auch. hoffe, das wird dir helfen.

+0

Ich denke, das ist die Antwort ich suche nach Anuradh. Danke. Ich gehe zurück zu deinem Exzimpel in ein bisschen –

+0

ok, und Sie sind willkommen –