[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/30 19:48 / Filesize : 277 KB / Number-of Response : 1011
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その46【Ruby禁止】



1 名前:デフォルトの名無しさん [2020/01/02(木) 15:56:54.08 ID:ZUrZA+uS.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/

641 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 18:39:18.80 ID:Ure0FzdD.net]
>>627
何を参考にコーディングしたらそれが生まれたのか純粋に知りたいw

642 名前:デフォルトの名無しさん [2020/02/13(Thu) 19:02:19 ID:qvECNN2e.net]
条件分岐の分かり易い書き方について教えてください

通常ではa=bで
c=0の時はa=zで
d=1の時はa=yというときに

if c == 0:
__a=z
elif b==1:
__a=y
else :
__a=b

になりますがほとんどの場合a=bになって
まれにa=y やa=zになるとすると
a=bが最後に来るのはわかりにくい気がするんですが
どうしてますか?

643 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 19:45:20 ID:n7qjy+CZ.net]
>>634
ありがてえ!!

644 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:12:27 ID:Ure0FzdD.net]
>>637
別に気にならないけど、前に持ってきたいなら
最初に無条件でa=bを記述
その後条件文を記述
にするかな

645 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:16:27 ID:Ure0FzdD.net]
ちなみにそんなことよりも、自分がレビューするとしたら
cが0でbが1の時は本当にa=zでいいのかとかが不安になるわ

646 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:36:32.33 ID:r7bSHOfr.net]
>>637
通常ケースと通常でないケースという認識なんであれば
3つを並列に書くんじゃなくガード節を使ったりして通常ケースとそれ以外のケースを分離する

def evaluate(b, c):
____if c == 0:
________return z
____if b == 1:
________return y
____return b

647 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:40:41.28 ID:zu6t+bqI.net]
コメントにそう書いておく。

648 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:59:00.84 ID:n7qjy+CZ.net]
pythonてSwitch文ないの?

649 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 22:08:31.25 ID:Gd0xgnoa.net]
ない



650 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 23:45:35.00 ID:l+IDZGdn.net]
まあ変数の真名と役割をコメントしてくれないと可読性の議論は出来ないよね
順番とか記述方法云々よりそっちが先

651 名前:636 [2020/02/13(木) 23:51:12.83 ID:qvECNN2e.net]
>>639
条件が変わったら上書きしていくのもアリなんですね
ありがとうございます
説明へtsくそですいません・・・

>>641
ありがとうございます
こんな方法あるんですね

>>642
コメントでの説明がへたくそすぎて
後で過去の自分を殴りたくなることが多いですorz

652 名前:デフォルトの名無しさん [2020/02/14(金) 13:14:33 ID:a5iC3cHy.net]
>>637
カルノー図を覚えろ

653 名前:デフォルトの名無しさん [2020/02/14(金) 14:54:01.70 ID:/S4vU3l9.net]
mac os 10.11.6
python 3.7.4

https://ideone.com/Mkhw9S
ターミナルから上のスクリプトを実行すると以下のようなエラーがおきます。
VScodeから実行した場合は問題なく実行されます。
Non-UTF-8 code starting with '¥xe6' in file test2.py on line 2, but no encoding declared;

https://ideone.com/D9Fkym
上のスクリプトはターミナルからも実行できます。
(リストの文字列の数のみの違いです)

以前はこんな感じのエラーは起きなかったのですが
原因がわかる方おられますか?

654 名前:647 [2020/02/14(金) 14:59:14.12 ID:/S4vU3l9.net]
自己レスです。
# coding: UTF-8を入れたらターミナルからも実行できましたが、
なぜリストの内容数とVScodeからだと問題無いのかがわかりません。

655 名前:デフォルトの名無しさん [2020/02/14(金) 15:27:13.81 ID:WtuYdkw5.net]
atomic bomb

656 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 15:34:47 ID:+9NDg3r6.net]
「python non-utf-8 code starting with ' xe6'」で検索!

どうせ、文字コードが異なるとか?
BOM 無しUTF-8 で保存すれば?

漏れは、Windows 10, VSCode で、Ruby, JavaScript などを使うけど、
すべてのファイルを、BOM 無しUTF-8 だけにしている!

657 名前:647 [2020/02/14(金) 15:39:07 ID:/S4vU3l9.net]
>>651
上下とも同じエンコーディング(BOM 無しUTF-8 )で保存しています。
リスト内の文字列は全て同じ文字列の繰り返しで、2種類のスクリプトは要素数のみの違いです。

658 名前:デフォルトの名無しさん [2020/02/14(金) 15:40:45 ID:WtuYdkw5.net]
# coding: UTF-8 書いてなかったんだろ

659 名前:デフォルトの名無しさん [2020/02/14(金) 15:42:19 ID:WtuYdkw5.net]
>>6



660 名前:647 [2020/02/14(金) 15:52:33 ID:/S4vU3l9.net]
>>653
>>649で書いたように、# coding: UTF-8は入れてなかったのですが、
知りたいのは、以下の2点の理由です。
1.VScodeだと問題なく実行できる
2.リスト要素数の違いによるエラーの有無

661 名前:デフォルトの名無しさん [2020/02/14(金) 15:57:16 ID:WtuYdkw5.net]
sys.getdefaultencoding() みろ

662 名前:647 [2020/02/14(金) 16:01:14 ID:/S4vU3l9.net]
>>> sys.getdefaultencoding()
'utf-8'

663 名前:デフォルトの名無しさん [2020/02/14(金) 16:01:50 ID:WtuYdkw5.net]
お前は言われたことしかできないんか?
https://qiita.com/methane/items/6e294ef5a1fad4afa843

664 名前:647 [2020/02/14(金) 16:07:55 ID:/S4vU3l9.net]
>>658
単にマウント取りたいだけなら返信不要です

665 名前:650 mailto:sage [2020/02/14(金) 17:08:51 ID:+9NDg3r6.net]
>>655
VSCode では、Microsoft がPython の拡張機能も作っているし、
設定ファイルにでも、UTF-8 で起動するように書いてあるのだろう

一般的には、IDE などの統合開発環境は、親切

666 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 17:19:37 ID:EOtBZfN8.net]
>>655
原因はバグ
対処は改行して1行のバイト数を減らすか
明示的にencoding指定をファイルの先頭に記述するか
https://bugs.python.org/issue34979

VSCodeで実行できるのは>>660の書いてる通り何か設定してるからだと思われる
俺の環境ではVSCodeでも同じエラーが出る

667 名前:647 [2020/02/14(金) 17:21:58 ID:/S4vU3l9.net]
>>660
>>661
ありがとうございます。すっきりしました。
バグですか。確かに配列内容を分割しただけでエラーが消えたりしてたので悩みました。

668 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:07:56 ID:+2T2g9zy.net]
要領悪いやつ
大人しくutf8宣言しときゃ動くんだからそうしろよ
お前なんかがvscodeのバグ発見したからって何になるんだ
時間のムダ

669 名前:デフォルトの名無しさん [2020/02/14(金) 19:13:36.39 ID:x4GfXJj6.net]
単に知的好奇心だろ
おまえみたいなIT土方にはわからんか



670 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:39:14 ID:+2T2g9zy.net]
全く知的ではない
ただの"何でvscodeだと上手くいかないのムキー"でしかない
その証拠にバグと分かったらもう投げ出してる

671 名前:デフォルトの名無しさん [2020/02/14(金) 19:44:06 ID:x4GfXJj6.net]
それがなんで証拠なんやろうか
バクについてまでは興味ないってだけやろうに
土方が偉そうに評価するな

672 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 19:56:12 ID:+2T2g9zy.net]
バグだったら仕方ない、
自分のせいじゃない、
よかったよかったあースッキリ。

どこに知的要素が存在するのか

673 名前:デフォルトの名無しさん [2020/02/14(金) 20:00:15 ID:x4GfXJj6.net]
知的好奇心のない奴は動けばいいやでuft8宣言して終わりだろうな

674 名前:650 mailto:sage [2020/02/14(金) 20:19:25 ID:+9NDg3r6.net]
プログラマーが日本語のバグで時間を使うのは、馬鹿らしい。
Python は、日本語対応をやってない

Ruby なら、Cookpad・マネーフォワード・Ruby 開発とか、
日本人のメンテナーが、一杯いる

675 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 20:23:20 ID:+2T2g9zy.net]
>>668
だからそれで終わりでよい
知的な意味もなく自己満足のためにムダな時間費やす無能よりも幾らか使えると言っているのだ

676 名前:デフォルトの名無しさん [2020/02/14(金) 20:26:32 ID:x4GfXJj6.net]
IT土方は動けばいいだけだもんな

677 名前:デフォルトの名無しさん [2020/02/15(土) 00:24:05 ID:GcRD3KfQ.net]
True=1,False=0じゃなくて
IFで何行も書かなくても
Trueの時は1をかけて、Falseの時はマイナス1を掛ける方法ってありますか?

678 名前:デフォルトの名無しさん [2020/02/15(土) 00:33:48 ID:NYbvjz3Y.net]
普通は
*(1 if hoge else 0)
だろうな
hoge*1でもできるっぽいけど

679 名前:デフォルトの名無しさん [2020/02/15(土) 00:50:26 ID:GcRD3KfQ.net]
>>673
*(1 if hoge else -1)
で行けるんですね
ありがとうございます!



680 名前:デフォルトの名無しさん [2020/02/15(土) 00:52:40 ID:NYbvjz3Y.net]
よく読んでなくてすまん

681 名前:デフォルトの名無しさん [2020/02/15(土) 04:34:54 ID:CrxoAXqf.net]
>>672
hoge*2-1

682 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 07:03:08.25 ID:1M8DJTak.net]
>>676
Basicは三項演算子なかったからその手のコードよく見かけたな
Trueが-1だから-2*hoge-1とかにしないと駄目だけど

683 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 07:39:54.28 ID:cl/r4jK1.net]
*[-1,1][hoge]とか

684 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 08:44:35.96 ID:lCqRUL4P.net]
>>671
その通り
コマはコマらしく動いていればよい

685 名前:デフォルトの名無しさん [2020/02/15(土) 12:23:37 ID:GcRD3KfQ.net]
みなさん色々ありがとうございます
>>678
*[-1,1][hoge]なら短いし
1か−1を掛けてるのが一目でわかっていいですね。

686 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 12:33:06.53 ID:Od0WFVIs.net]
>>680
横からですまんが
この*は何?掛け算記号じゃないよな

687 名前:デフォルトの名無しさん [2020/02/15(土) 12:54:17.21 ID:OeWG4QMt.net]
どーでもよくて草

688 名前:デフォルトの名無しさん [2020/02/15(土) 13:02:49.71 ID:GcRD3KfQ.net]
>>681
>>672で-1か1を掛けたいと質問したので
*マークをつけてくれたんだと思います

689 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:09:52.19 ID:a5tEBtfb.net]
それはわたしの肛門だ



690 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:29:58.94 ID:J1bovO5o.net]
糞みたいな小手先のテクニック使うくらいなら潔く if else で書けや

691 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 14:48:11.69 ID:cTwFsuY/.net]
x * [-1, 1][hoge]ってことだと思うが
流石にこれはない

評価する変数にboolしか入らない状況なら
x * (hoge or -1) でいいんじゃないかと思うが
これだと何のためにやってるかわかりにくいので
通常のif else使って関数化したほうがいい気もする

692 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 22:11:51.52 ID:L3zGf310.net]
>>685-686
俺もそう思う。
元質問をしたPythonでの三項演算の表記を知らないレベルの人は
x * [-1, 1][hoge]やx * (hoge or -1) を嬉々として・どや顔して
使いそうだが

693 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 22:40:28.65 ID:cl/r4jK1.net]
[-1, 1][hoge]は0,1以外弾くから結構間違いが入り込みにくい実装なんだけどね。

まぁ、普通は三項演算子使うだろうな。

694 名前:デフォルトの名無しさん [2020/02/15(土) 23:35:32.08 ID:GcRD3KfQ.net]
質問ですが
def内で使う変数名を考えるのが面倒だし
後でどれがどれか分かるように
引数と同じ変数名にしてますが
問題ないですか???

グローバル変数はほぼ使ってないです。

695 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 23:49:52.90 ID:robjZmR7.net]
def addnumbers(a, b):
return a+b

a=10
b=5
print(addnumbers(a, b))

みたいな話?
なら別に問題はないけど。

引数じゃなくて関数内で宣言するローカル変数の話なら、頭に_をつけたりして外の環境をマスクしないようにしたほうがお行儀がいいけど。

696 名前:デフォルトの名無しさん [2020/02/16(日) 00:44:18.75 ID:S0ZkinLG.net]
>>690
そんな感じです
ありがとうございます
解説とかだと大抵名前変えてあるので
変えた方がいいのかと思い込んでいました

697 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 02:28:25 ID:Q6srCXr2.net]
>>691
動くか動かないという意味では動くから、同じであっても問題はない、というだけだぞ。
意味的に分かりやすく適切な名前をつけるべき。

698 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 09:01:43 ID:17VZ7Cpd.net]
>>691
> 変数名を考えるのが面倒
これは2年後にタイムマシンで過去の自分をブン殴りたくなるまでなおらんとおもうが
なおせるものなら早めになおしとけ

> 後でどれがどれか分かるように
この発想はただしい。
で、どうしたらいいのかについては>>692が書いてくれてる

つまり

考えるのが面倒だから、って理由で
引数の名前をaだのbだのにしておくのはやめておけ

699 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 09:35:32 ID:xJ91WGrf.net]
名前を考える時間がもったいない
スクリプト言語はいかに早く作り早く動かすかが命
一度動けば後は野となれ山となれ



700 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 10:19:55 ID:1yJgvEz2.net]
どうしても名前を考えるのがめんどくさいならば
注釈で変数の意味を書いておくという方法もある
典型的な変数の値も書いておくとなおよい

701 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 10:26:00.98 ID:6foDUZHe.net]
関数の分割と命名が適切ならローカル変数なんて全部一文字でいいよ
そんなことで読めなくなるような長い関数を書くな

702 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:27:23 ID:17VZ7Cpd.net]
>>696
2行目には禿同

>ローカル変数なんて全部一文字でいい
ここまでがんばる必要はない

703 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:28:24 ID:17VZ7Cpd.net]
>>694
そう思っていた時期もありました
まだならこれからなるか、或いはクビになるでせう

704 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:33:53.98 ID:vdOGaRiC.net]
Goはむしろ一文字変数と引数を推奨してるね
コードが十分に構造化されていれば、長い変数名はノイズになって逆に読みにくいってのは一理ある

705 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:08:56.63 ID:KXHJAKTO.net]
bad know howの固まりのようなスレだな

706 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:24:10 ID:5YcuBhUR.net]
689だけど無次元数を扱う場合はa,bとかm,nとかを使うな
ファイルディスクリプタならfd
ループインデックスはi,j,kとかix,iy
それ以外は英単語2〜3個を繋いで変数名にして
PandasのDataFrameやNumpy Arrayみたいに実質型のないものはアプリケーションハンガリアン
ローカル変数だと頭にアンダースコアをつける感じだな

707 名前:デフォルトの名無しさん [2020/02/16(日) 12:26:02 ID:uPTaqoVN.net]
雑魚はせめてリーダブルコードでも読んでからコメントして

708 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:37:40 ID:KXHJAKTO.net]
>>702
それな

709 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:00:47 ID:17VZ7Cpd.net]
「最善の名前とは読み手が誤解を招かないこと」って書いてないか?



710 名前:688 [2020/02/16(日) 13:04:49 ID:S0ZkinLG.net]
ローカル変数名ですけど

例えば名古屋から広島の距離を計算するとして

def kyori(nagoya,hirosima)
___length = nagoya-hirosima
___return length


#東京からの距離
tokyo = 0
nagoya = 350
kyoto = 457
hirosima = 768

length = kyori()

っていう感じですけど
意味があって分かり易いだと
一文字だと長さはまだlで分かり易いと思うんですが
defが増えていくったときに
それぞれのdef内でもまだ個性的な名前を付けた方がいいのですか???

length_kyoto_hirosimaとか???

711 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:13:22.41 ID:xJ91WGrf.net]
>>705
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ

712 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:19:18.43 ID:vdOGaRiC.net]
>>705
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる

713 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:24:20.27 ID:17VZ7Cpd.net]
>>705
そのdefのはっそうは、正直よろしくないとおもう。

使いまわせないだろw

def kyori(from, to):
にすれば、使いまわせるだろw

でもって、
引数のあとの「:」を忘れるな

(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。

714 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:26:21.56 ID:17VZ7Cpd.net]
>>708修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか

715 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:30:21.73 ID:iNVxJNOu.net]
関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?

>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。

716 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:33:43.62 ID:E60C1LrQ.net]
namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます?

717 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:46:40.85 ID:Rlzwkt+8.net]
>>710
pythonスレならまあわかるでしょ
ってレベルかと

718 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:03:54.06 ID:17VZ7Cpd.net]
>>710
なるほど
函数定義って言えばいいのか
なるほどなっとく

口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。

719 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:08:15 ID:17VZ7Cpd.net]
>>711
綴りちがっとる
×tupple
〇tuple

from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当)



720 名前:688 [2020/02/16(日) 16:38:20.27 ID:S0ZkinLG.net]
>>706
趣味でやってるんですが
ほぼほぼ作ったのが後々改造できなくて
投げ捨てるはめになってるので
何とかしたくてって感じです

>>707
趣味なので自然と身につかないのです・・・

>>708
具体例ありがとうございます
気を付けます

721 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:53:49.03 ID:17VZ7Cpd.net]
>>715
> ほぼほぼ作ったのが後々改造できなくて
> 投げ捨てるはめになってる
www
わかるwwwww始めたばっかりの頃のあるあるwwwwwわかるwwwww


オライリーの
リーダブルコード
  ISBN-10: 4873115655
  ISBN-13: 978-4873115658
(あるいは
ビューティフルコード
  ISBN-10: 4873113636
  ISBN-13: 978-4873113630 )

買って読んでみたらー
中古でも安くなってないだけのことはあるでよー

722 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:07:16 ID:05WBirzM.net]
オブジェクトがコピーなのか現物なのか、調べるにはどうすればよいですか。または全て現物で渡すには?

1. クラスの初期化時に引数として渡してselfに格納
2.クラスのgetterメソッド返り値としてselfの値を返却する
3.手順2で得られた値を演算したものをクラスのsetterメソッド引数として渡してselfに再格納

1〜3まで全て現物でいてほしいのですが、どこかでコピーになってしまうようで同期しません。

723 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:11:30.05 ID:05WBirzM.net]
716、自分でも分かりにくいので追記です、

e = 1
a = Class1(e)
b = Class2(e)

tmp = a.getE()
tmp += 1
a.setE(tmp)

b.print()

このprintの結果が、2となって欲しいのです。

724 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:18:43.25 ID:17VZ7Cpd.net]
>>717-718
書き込む前に>>1

>オブジェクトがコピーなのか現物なのか、調べるには
id(オブジェクト)
↑これがオリジナルとコピーでは異なるので確認汁

725 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:44:48.94 ID:05WBirzM.net]
>>719
ありがとうございます。
原因わかりました。
716で書いてるeが実際はイミュータブルだったので、書き換える際にreplace呼んでid変わってたみたいです。
eを自作クラスに変えたら動きました。ありがとう

726 名前:デフォルトの名無しさん [2020/02/16(日) 19:45:43.91 ID:w90VPIvZ.net]
リーダブルコードでググったら英語版はタダで見れるのか
苦Cみたいなもんか?

727 名前:688 [2020/02/16(日) 19:51:59.66 ID:S0ZkinLG.net]
>>716
調べてみます
ありがとうございます

728 名前:デフォルトの名無しさん [2020/02/16(日) 20:00:33.27 ID:S0ZkinLG.net]
このクラスの########から########の間を
書き換えて別の子クラスを作る方法を教えてもらえませんか?
リターンはなくて条件によってどんどんpを書き換えていく感じの内容です

class coner:
__def __init__(self):
____self.angle = 0.0
____self.width = 0.0
#以下self.が沢山

__def tijimi(self):
#####################################
____if 0 <= self.angle < math.pi/3:
______#計算式色々
______p = l

____if self.angle == 0 :
______#計算式色々
______p=l
____#以下ifでangleを調べてpを上書きしていくif分沢山
#####################################################

____if self.width == 50:
______#計算式色々
______p=l
____if self.width == 80:
______#計算式色々
______p=l

729 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 20:56:22.89 ID:05WBirzM.net]
class tijimi(coner)作ってsuperのinit呼んだ後にif文羅列じゃ駄目なの?



730 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 21:14:42.57 ID:iNVxJNOu.net]
>>723
>書き換えて別の子クラスを作る方法
継承してオーバーライドすること言ってるのかな?

それと
条件によってpをどんどん書き換えていくような仕様は
一般的にはものすごく悪い設計
バグりやすいしテストもしにくいので避けたほうがいい

731 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 21:47:49 ID:17VZ7Cpd.net]
>>721
>英語版はタダで見れる
なん・・・だと・・・・

まあいいや
日本語版書籍には訳者によるおまけがついてるらしいから・・・

732 名前:722 [2020/02/16(日) 22:05:37 ID:S0ZkinLG.net]
>>725
たぶん、継承オーバーライドの事だと思います
よくわかってなくてすいません
pを書き換えていくのを直します
ありがとうございます

>>724
ありがとうございます
やってみます

733 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 22:59:10 ID:5EL9p8ON.net]
Ruby なら、B はA から派生したクラスで、
派生クラスで、親クラスの同名のメソッドを上書きする(override)。
@ はインスタンス変数

class A
def f( ) @x = 1 end
end

class B < A
def f( ) @x = 2 end
end

p A.new.f #=> 1
p B.new.f #=> 2

734 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:33:34.29 ID:VGvKWI+b.net]
リーダブルコードもコードコンプリートも読んだ上で700書いてるけどねえ
PEP8とかもそうだけど、知恵とルールを混同してしまう人が結構いる

735 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 02:53:30.28 ID:DyKTwZyk.net]
お前にはその両方が足りていない

736 名前:デフォルトの名無しさん [2020/02/17(月) 05:56:39.51 ID:9Byn+CCQ.net]
アンカも打てないのかよ
いちいち自分で辿らせるとかどんだけ構って欲しいんだ

737 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 07:12:48 ID:a4xzah5x.net]
>>728
endとか90年代かよダッサ無駄な記述乙

738 名前:デフォルトの名無しさん [2020/02/17(月) 07:47:39.40 ID:wxeqwMT5.net]
裏表紙のない本
ドアのないトイレ
キャップのないペットボトル

739 名前:デフォルトの名無しさん [2020/02/17(月) 11:57:31.26 ID:xV6ZEvHF.net]
Macなんですが元々入ってるPython2系をpython2で呼び出して
Python3系をpythonコマンドで呼び出す方法ってありませんか?
alias python="python3"
を設定してもpython2が使えなくなる代替案を探してる最中です



740 名前:デフォルトの名無しさん [2020/02/17(月) 12:37:38.00 ID:m/x7HUx7.net]
>>730
読んであれならヤバイ級だよなあ

741 名前:デフォルトの名無しさん [2020/02/17(月) 12:38:09.76 ID:m/x7HUx7.net]
エイリアスにフルパス入れちまえよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef