Laten we aannemen dat deze serie
1+2+3+....+n
in cmet for loopkunnen we dit gemakkelijk doen
for(i=1;i<=n;i++)
{
sum += i;
}
in pythonkan ik dit doen met behulp van while loop
while(num <= n):
sum += num
num = num+1
maar ik kan het niet doen met python for loop
Antwoord 1, autoriteit 100%
Python-syntaxis is een beetje anders dan c. In het bijzonder gebruiken we meestal de functie range
om de waarden voor de iteratorvariabele te maken (dit stond in de opmerking van Stephen Rauch). Het eerste argument voor range
is de startwaarde, het tweede is de uiteindelijke waarde (niet-inclusief) en de derde waarde is de stapgrootte (standaard 1). Als u slechts één waarde opgeeft (bijv. range(5)
), dan is de beginwaarde 0 en is de opgegeven waarde de eindwaarde (gelijk aan range(0, 5)
).
Zo kun je doen
for i in range(1, n + 1):
om een for-lus te maken waarin i
dezelfde waarden aanneemt als in uw c-lus. Een volledige versie van uw code kan zijn:
summation = 0
for i in range(1, n + 1):
summation += i # shorthand for summation = summation + i
Omdat het optellen van dingen echter zo gewoon is, is er een ingebouwde functie sum
die dit voor je kan doen, geen lus vereist. Je geeft het gewoon een iterable door (bijvoorbeeld een lijst, een tuple, …) en het geeft de som van alle items terug. Vandaar dat de bovenstaande for-lus gelijk is aan de veel kortere
summation = sum(range(1, n + 1))
Merk op dat omdat sum
de naam is van een ingebouwde functie, je deze niet als variabelenaam moet gebruiken; daarom heb ik hier summation
gebruikt.
Omdat je dit in de toekomst misschien handig vindt met Python, is het ook fijn dat je de elementen van een iterable direct kunt doorlopen. Als ik bijvoorbeeld een lijst met namen heb en voor elke persoon een begroeting wil afdrukken, kan ik dit op de “traditionele” manier doen:
names = ["Samuel", "Rachel"]
for i in range(len(names)): # len returns the length of the list
print("Hello", names[i])
of op een meer beknopte, “pythonische” manier:
for name in names:
print("Hello", name)
Antwoord 2, autoriteit 67%
Voor een serie, bouw je lijst op en voeg ze allemaal samen als
n = 10
sum(range(n+1))
55
Voor 1/n hebben we
n = 5
sum([1/i for i in range(1,n+1)])
2.28333
Voor 1/n^2 hebben we
n = 5
sum([1/i**2 for i in range(1,n+1)])
1.463611
Antwoord 3, autoriteit 17%
Dit werkte voor mij in Python
def summation(num):
sumX = 0
for i in range(1, num + 1):
sumX = sumX + i
return sumX
summation(3) #You place the num you need here
En ik nam het van deze oefening: Schrijf een programma dat de optelling vindt van elk getal van 1 tot num. Het getal is altijd een positief geheel getal groter dan 0.
Naast dit:
def summation(num):
return sum(range(1, num+1))