Je veux rendre mon script le plus court possible:

from turtle import *
for _ in range(10):
    lt(72)
    fd(71)
    rt(108)
    fd(71)
for _ in range(10):
    for s in [(29,90),(73,72),(73,90),(29,72)]:
        fd(s[0])
        rt(s[1])

Comme vous pouvez le voir, il existe deux boucles for: "for _ in range 10:".

Existe-t-il un moyen de fusionner les deux boucles et d'obtenir toujours le même résultat? Merci!

1
Ann Zen 19 mai 2020 à 20:05

3 réponses

Meilleure réponse

Vous pouvez tout mettre dans une liste, ce qui consommera un peu plus d'espace:

for walk, turn in [(0,-72),(71,108),(71,0)]*10+[(29,90),(73,72),(73,90),(29,72)]*10:
    fd(walk)
    rt(turn)
2
trincot 19 mai 2020 à 17:17

Cela semble un peu inutile, mais si vous voulez vraiment consolider les deux boucles, vous pouvez essayer:

from turtle import *

mode1 = True
for i in range(20):
    if mode1:
        lt(72)
        fd(71)
        rt(108)
        fd(71)
        if i == 9:
            mode1 = False
    else: 
        for s in [(29,90),(73,72),(73,90),(29,72)]:
            fd(s[0])
            rt(s[1])
-1
Ashwin 19 mai 2020 à 17:15

Si vous ne voulez qu'une seule boucle, essayez ce qui suit:

for i in range(20):
    if i < 10: 
       lt(72)
       fd(71)
       rt(108)
       fd(71)
    if i > 10: 
        for s in [(29,90),(73,72),(73,90),(29,72)]:
           fd(s[0])
           rt(s[1])
0
ananyamous 19 mai 2020 à 17:12