-2

我想让我的脚本尽可能短:

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

如您所见,有两个 for 循环是“for _ in range 10:”。

有没有办法可以合并两个循环,并且仍然得到相同的结果?

4

3 回答 3

3

您可以将所有内容放在一个列表中,这将占用更多空间:

for walk, turn in [(0,-72),(71,108),(71,0)]*10+[(29,90),(73,72),(73,90),(29,72)]*10:
    fd(walk)
    rt(turn)
于 2020-05-19T17:17:22.097 回答
0

如果您只想要一个循环,请尝试以下操作:

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])
于 2020-05-19T17:12:58.337 回答
-1

这看起来有点不必要,但如果你真的很想合并这两个循环,你可以尝试:

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])
于 2020-05-19T17:15:59.700 回答