pythonで四角をなるべく省略されたコードで書きたい
次は四角形を書くプログラムです。
wakuクラスのdrawメゾットを、6行で書いてあるところを4行に抑えたいです。
分かりやすいように#で囲ってあります。
発生している問題・エラーメッセージ
特になし
該当のソースコード
python3
1import turtle as t 2import time 3 4class dots: 5 def __int__(self.size,self.color): 6 self.size=size 7 self.color=color 8 def draw(self): 9 t.goto(x,y) 10 t.dot(self.size,self.color) 11 12class waku: 13 def __int__(self,dot,x,y,lx,ly): 14 self.dot=dot 15 self.x=x 16 self.y=y 17 self.lx=lx 18 self.ly=ly 19 def draw(self): #ここから 20 for i in range(0,self.lx,1): 21 self.dot.draw(self.x+i,self.y) 22 self.dot.draw(self.x+i,self.y+self.ly) 23 for i in range(0,self.ly,1): 24 self.dot.draw(self.x,self.y+i) 25 self.dot.draw(self.x+self.xl,self.y+i) #ここまでを6行で書きたいです 26 27 28t.tracer(t.tracer(),0) 29t.speed 30 31t.ht() 32t.up() 33 34p=dots(2,blue) 35r=waku(p,200,100,100,50) 36r.draw() 37
試したこと
線を同じ方向で2本づつ、2回引かなくてはならないので、色々考えましたが6行よりも短くなる方法が見つかりませんでした
・コードは「コードの挿入」で記入してください。
> #ここまでを6行で書きたいです
何故6行で書きたいのか教えてもらえませんか?
6行より短かくしたい理由は何ですか?
このコードにどんな問題があるのでしょう?
インデントが無いのでよくわかりませんが、for文のiが使われていないので、そもそもfor文は2つとも不要じゃないかな?
これで修正できたでしょうか?teratailを使用するのが初めてなので、他にも行った方が良いことがあれば教えてほしいです。
確かにfor文でiは使用していないですね。
試してみます。
すみません、コードで1とiを書き間違えていました
なるほど。 で、短かくしたい理由は何ですか?
提示のコードのように点を沢山打って線を引く方式でなく、線を引くようにすれば短くなるとは思いますが、コードがまったく変ってしまいます。
コードが実行できませんでした。先にエラーを修正しましょう
- `__int__` -> `__init__`
- draw() の引数が違う
- 引数の変数名が不正 self.size, self.color
- 「4行に抑えたい」「ここまでを6行で」の条件が相反する。
私はプログラムが意図した動きになれば
プログラムの行数は気になりませんので
4行で書く理由の提示がなければ、「意図した動きになっているからいいじゃん」って思います。