Als ik momenteel 1
tot en met n
wil herhalen, zou ik waarschijnlijk de volgende methode gebruiken:
for _ in range(1, n+1):
print(_)
Is er een schonere manier om dit te bereiken zonder te hoeven verwijzen naar n + 1
?
Het lijkt vreemd dat als ik een bereik wil herhalen dat normaal begint bij 1, wat niet ongebruikelijk is, ik de toename met één twee keer moet specificeren:
- Met de
1
aan het begin van het bereik. - Met de
+ 1
aan het einde van het bereik.
Antwoord 1, autoriteit 100%
range(1, n+1)
wordt niet als duplicatie beschouwd, maar ik kan me voorstellen dat dit lastig kan worden als je 1
naar een ander nummer zou veranderen .
Dit verwijdert de duplicatie met behulp van een generator:
for _ in (number+1 for number in range(5)):
print(_)
Antwoord 2, autoriteit 96%
Uit de documentatie:
range([start], stop[, step])
De start is standaard 0, de stap kan zijn wat je wilt, behalve 0 en stop is je bovengrens, het is niet het aantal iteraties. Dus declareer n als wat uw bovengrens correct is en u hoeft er geen 1 bij op te tellen.
bijv.
>>> for i in range(1, 7, 1): print(i)
...
1
2
3
4
5
6
>>> for i in range(1, 7, 2): print(i)
...
1
3
5
Een leuke functie is dat het ook omgekeerd werkt.
>>> for i in range(7, 0, -1): print(i)
...
7
6
5
4
3
2
1
Antwoord 3, Autoriteit 23%
Geen algemeen antwoord, maar voor zeer kleine reeksen (zeg tot vijf), ik vind het veel meer leesbaar om ze in een letterlijke te spellen:
for _ in [1,2,3]:
print _
Dat is waar, zelfs als het begint met nul.
Antwoord 4, Autoriteit 23%
range(1, n+1)
Is de gebruikelijke manier om het te doen, maar als u het niet leuk vindt, kunt u uw functie maken:
def numbers(first_number, last_number, step=1):
return range(first_number, last_number+1, step)
for _ in numbers(1, 5):
print(_)
Antwoord 5, Autoriteit 8%
for i in range(n):
print(i+1)
Dit wordt uitgevoerd:
1
2
...
n