質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1061閲覧

pythonで四角形をなるべく省略されたコードで書きたい

kibi

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/13 06:08

編集2021/07/13 07:22

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行よりも短くなる方法が見つかりませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/07/13 06:31

・コードは「コードの挿入」で記入してください。 > #ここまでを6行で書きたいです 何故6行で書きたいのか教えてもらえませんか?
TakaiY

2021/07/13 06:35

6行より短かくしたい理由は何ですか? このコードにどんな問題があるのでしょう? インデントが無いのでよくわかりませんが、for文のiが使われていないので、そもそもfor文は2つとも不要じゃないかな?
kibi

2021/07/13 07:05 編集

これで修正できたでしょうか?teratailを使用するのが初めてなので、他にも行った方が良いことがあれば教えてほしいです。
kibi

2021/07/13 07:06

確かにfor文でiは使用していないですね。 試してみます。
kibi

2021/07/13 07:23

すみません、コードで1とiを書き間違えていました
TakaiY

2021/07/13 07:37

なるほど。 で、短かくしたい理由は何ですか? 提示のコードのように点を沢山打って線を引く方式でなく、線を引くようにすれば短くなるとは思いますが、コードがまったく変ってしまいます。
teamikl

2021/07/14 00:34

コードが実行できませんでした。先にエラーを修正しましょう - `__int__` -> `__init__` - draw() の引数が違う - 引数の変数名が不正 self.size, self.color - 「4行に抑えたい」「ここまでを6行で」の条件が相反する。
odataiki

2021/07/17 14:44

私はプログラムが意図した動きになれば プログラムの行数は気になりませんので 4行で書く理由の提示がなければ、「意図した動きになっているからいいじゃん」って思います。
guest

回答1

0

タートル・グラフィックの元となった LOGO 言語で最初に習う方法だと、
Aの方法が定番です。

  • 方法A:「直線を引く」「90度曲がる」を「4回繰り返す」 (3行)
  • 方法B: キャンバス・ウィジェットの create_rectangle を呼び出す (1行)

インデント幅をスペース幅1にするのは、お勧めしません。
もし、ミニマリスト的にコードを短くしたいのなら、
大量に使われてる self を少なく記述する方向でコードを書いた方が、
より短いステップで読みやすいコードを期待できます。

投稿2021/07/14 00:52

teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問