Seriesamentelling met for-lus in python

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 rangeom de waarden voor de iteratorvariabele te maken (dit stond in de opmerking van Stephen Rauch). Het eerste argument voor rangeis 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 idezelfde 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 sumdie 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 sumde naam is van een ingebouwde functie, je deze niet als variabelenaam moet gebruiken; daarom heb ik hier summationgebruikt.

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))

Other episodes