X



くだすれPython(超初心者用) その47【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/03/07(土) 00:40:52.77ID:k5ibAr7h
当スレに★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公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その46【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1577948214/
010191
垢版 |
2020/03/20(金) 12:58:10.42ID:b0uFXDo7
えーと、ごちゃごちゃ続けて済まない
要は、「正当でない」「元のクラスの改版で衝突するかも」以外に、なんか実装の仕組みとか言語の根本思想とかに関わる「やったら駄目な理由」があるんなら知りたいんだ
0103デフォルトの名無しさん
垢版 |
2020/03/20(金) 14:28:59.42ID:kntGyf5L
衝突するかもが一番の理由だろ
使い捨てスクリプトなら好きにすればいいんじゃね
0104デフォルトの名無しさん
垢版 |
2020/03/20(金) 15:00:32.24ID:TN4YnPAe
近代的なPythonプログラミングにおける一番の問題は静的型検査の能力が損なわれることだろう
VSCodeで補完できないし型チェッカー使ったらエラーになる
0105デフォルトの名無しさん
垢版 |
2020/03/20(金) 17:35:32.53ID:SlgH3d1t
型チェッカーに詳しくないけど、ダックタイプなのに拡張プロパティが付いただけでエラーになるの?
0106デフォルトの名無しさん
垢版 |
2020/03/20(金) 19:03:53.38ID:Dd0Ob2sq
そりゃ型に存在しないメンバにアクセスしようとしてんだから正真正銘エラーだよ
0107デフォルトの名無しさん
垢版 |
2020/03/21(土) 14:39:02.75ID:OHw8xLXD
凄い長いループ文の最後に取得したい値があるとして
ループの最初にp=[]するんですが最後のと距離が離れすぎてて
忘れそうor間違えて消しそうですが
p = []なしで値を集める方法ってありますか?

p = []
for v in vals:
____この間凄い長い
___p.append(s)
0108デフォルトの名無しさん
垢版 |
2020/03/21(土) 15:07:52.37ID:vy0ghyqx
p = [ hage(v) for v in vals ]

def hage(v):
____# この間すごい長い処理
____return s

これはだめなの?
0109デフォルトの名無しさん
垢版 |
2020/03/21(土) 15:35:23.73ID:GhGCMtBr
p = vals.apply(hage)
0110デフォルトの名無しさん
垢版 |
2020/03/21(土) 15:36:06.43ID:GhGCMtBr
p = list(map(hage, vals))
または
p = map(hage, vals)
0111デフォルトの名無しさん
垢版 |
2020/03/21(土) 15:38:22.43ID:GhGCMtBr
p = list(map(hage, vals))
または
p = map(hage, vals)
0115デフォルトの名無しさん
垢版 |
2020/03/21(土) 19:27:49.61ID:zSmIYZQj
C言語を触ってて今日からPythonを見始めたけど、クラスだメソッドだインスタンスだ横文字だらけで説明されてさっぱりだ🤔
0116デフォルトの名無しさん
垢版 |
2020/03/21(土) 19:55:22.12ID:dPG/PKsY
>>115
Cができるなら新たな言語を学ぶ必要はないぞ
特にオブジェクト指向は学習コストに比して実効果が割に合わないしな
0117デフォルトの名無しさん
垢版 |
2020/03/21(土) 20:07:30.13ID:9uGouKad
>>115
オブジェクト指向を覚えるのは
(Cでの構造化)プログラミングを覚えるのと
同じかそれ以上に時間かかるが
学んだだけの効果は出るはず
正しく学べればだけど
0120デフォルトの名無しさん
垢版 |
2020/03/21(土) 22:09:25.43ID:q0JXMky4
>>115
Pythonをやる前にC++をやった方が良いな
Cできる奴はすごい奴が普通だからC++はたいして難儀しないで習得できるだろ
で、C++後、Pythonをやるとあっという間に覚えられるだろ
0122デフォルトの名無しさん
垢版 |
2020/03/21(土) 22:58:28.19ID:Ex88LOVb
Javaは論外
C++はやりたければやっても良いが
おすすめは C → C# → Python
0123107
垢版 |
2020/03/22(日) 00:05:14.38ID:N8kSP/ah
皆さんありがとうございます
そもそもdefにすべきだったんですね
せいとんして頑張ってみます
0125デフォルトの名無しさん
垢版 |
2020/03/22(日) 04:34:16.29ID:MsuEDB7g
仕事で目にするPythonコードってただ一本調子でデータを加工するだけで
オブシコどころか階層化プログラミングすら怪しいのが多いわ
コピペも多いし、ぶっちゃけCOBOLレベル
0128デフォルトの名無しさん
垢版 |
2020/03/22(日) 07:02:48.03ID:ZXA28Lms
>>121
そう簡単だよ
そしてたいていの言語はC++よりは簡単

>>122
JavaはC#より開発現場で使われてるからな
言語仕様は後発のC#の方がモダンだが

C → C# → Python
その言語の中ではPythonが一番易しいから
Pythonから始めるのがオススメ
0130デフォルトの名無しさん
垢版 |
2020/03/22(日) 08:40:06.41ID:+zhuPTS1
>>129
それはその通り
でPythonはメジャーな言語の中では比較的コード自体に興味がなくて目的を達成できさえすればよいと考えるタイプの人が多い
まあ、だからこそ収入も高い傾向があるんだけどね
0131デフォルトの名無しさん
垢版 |
2020/03/22(日) 10:10:27.02ID:CQOUf5Rv
>>125
これは同感
良くも悪くもそういう用途にフィットした言語

オブジェクト指向をpythonで勉強しましたってやつにはロクなのがいない
0132デフォルトの名無しさん
垢版 |
2020/03/22(日) 10:55:10.34ID:E2r2YkBt
>>125
一本調子でデータを加工するだけの処理だからpythonでササっと書いてるのでは?
単に目的に合った選択をしているだけの様に思えるが
0133デフォルトの名無しさん
垢版 |
2020/03/22(日) 11:20:43.58ID:nmqMfNjC
コボル人(こぼるど)ばかにすんなよw
そろそろコボルのXデー近づいてるから
CやPythonに書き換えるお仕事わいてきてるはずなんだからー
0134デフォルトの名無しさん
垢版 |
2020/03/22(日) 12:29:39.70ID:F4lre3ad
matplotlib pyplot とか使うとオブジェクト指向に出来なくて(出来なくはないけど)
適当に描いてるうちにダラダラしてしまうことが多いのは事実
だが意識他界系の人なら綺麗なコードになる
0135デフォルトの名無しさん
垢版 |
2020/03/22(日) 12:30:59.32ID:F4lre3ad
あと Blender の python も気付くとダラダラしてしまってる
気を付けないとな
0136デフォルトの名無しさん
垢版 |
2020/03/22(日) 13:41:56.02ID:ZvBqcowf
バッチ処理みたいなものをわざわざオブジェクト指向丸出しで書く奴のがあほだわ。
関数型にこだわる方がまだマシ。(どっちも度が過ぎるとあほだが)
0138デフォルトの名無しさん
垢版 |
2020/03/22(日) 14:01:19.29ID:Kdd1oU3M
ITの巨大掲示板群 ttp://x0000.net
(アルファ・ラボ|学術掲示板群)
0139デフォルトの名無しさん
垢版 |
2020/03/22(日) 14:24:43.15ID:2vh8Rzak
つーかその場でササッと書いて動かしてナンボのやっすい言語で
いちいちクラス設計するのは本末転倒だわ
Pythonにはオブジェクト指向は似合わない
0142デフォルトの名無しさん
垢版 |
2020/03/22(日) 14:37:14.93ID:gZZd+KZ5
>>136
いうても関数型プログラミングのサポートしょぼいからな
結局昔ながらの手続き型がもっともPythonに合ってる
0143デフォルトの名無しさん
垢版 |
2020/03/22(日) 14:43:27.89ID:InwIdT4/
関数型って何だろうと思ってHaskellいじってみたけど、頑張って再帰関数で処理する事を考えるプレイとまでしか思えなかった
0144デフォルトの名無しさん
垢版 |
2020/03/22(日) 14:49:10.52ID:VphPQW8g
大抵の再帰処理はlispの時代に出尽くした
あとはそれの応用、というか真似るだけ

正規表現だって人類に必要なやつの80%はperlの時代に出尽くした
あとは考える必要はない、探して真似るだけ
0145デフォルトの名無しさん
垢版 |
2020/03/22(日) 15:25:09.14ID:jnVmWLvn
>>143
変に複雑に考えんでも、参照透過性、副作用させないってことを意識したプログラムって
考えればええわ。(そもそも lisp, erlang, haskell, その他色々でも捉え方は違うし)
それによってデバッグしやすくなったりパイプライン処理やブロードキャスト処理が
しやすくなるってことくらい押さえとけばよし。
0146デフォルトの名無しさん
垢版 |
2020/03/22(日) 17:42:34.15ID:uitKMHee
すごくアホな質問だとおもうのですが

def df=input_data()
def df1=analyze1(df)
def df2=analyze2(df1)
.
.
.
def df10=analyze10(df9)

def draw_graph(df10)

みたいにテキストファイルからdfにデータ読み込み
10個ぐらい解析処理
df10でグラフを描写

みたいなプログラムを書きました。
0147デフォルトの名無しさん
垢版 |
2020/03/22(日) 17:45:46.53ID:VphPQW8g
df0からdf10まで11個あるんだろ
次はdf100までちゃんと書くんだぞ
コピペすれば早く終わるからな
0149デフォルトの名無しさん
垢版 |
2020/03/22(日) 17:59:05.59ID:uitKMHee
すごくアホな質問だとおもうのですが

df=input_data()
df1=analyze1(df)
df2=analyze2(df1)
.
.
.
df10=analyze10(df9)

draw_graph(df10)

みたいにテキストファイルからdfにデータ読み込み
10個ぐらい解析処理
df10でグラフを描写

みたいなプログラムを書きました。
ここまではうまく行ったのですが、
データ決定→グラフ描写
を1回だけでなく2回行い並べて表示させたくなりました。
0150デフォルトの名無しさん
垢版 |
2020/03/22(日) 18:01:57.87ID:uitKMHee
この場合先程の
analyze1〜analyze10
までを一つのクラスProcessDataにして2つのインスタンスABを生成して実行すればいいかと考えたのですが、

process_dataA=ProcessData
dfA=process_dataA.input_data()
.
.
.
df10A=process_dataA.analyze10(df9A)
process_dataA.draw_graph(df10A)

process_dataB=ProcessData
dfB=process_dataB.input_data()
.
.
.
df10B=process_dataB.analyze10(df9B)
process_dataA.draw_graph(df10B)

とインスタンスAとインスタンスBに対して全く同じ処理を行うルーチンを2度書くのがあまりに冗長な気がするのですが、なにか良い方法ないでしょうか?
0152デフォルトの名無しさん
垢版 |
2020/03/22(日) 18:28:56.90ID:I5Su+SV6
>>150
途中のdfが不要なら上書きしていけばいい
Pandas使うときはよくやる

df = input_data()
df = analyze1(df)
df = analyze2(df)


それを関数に抽出
def analyze_data(df):
____df = analyze1(df)
____df = analyze2(df)

____return df

df = analyze_data(input_data())
draw_graph(df)

関数のリストを作ってそれを適用する方法もいろいろとあるけど
今の段階なら上の方法からやるのがいいかと
0153デフォルトの名無しさん
垢版 |
2020/03/22(日) 18:51:28.48ID:I5Su+SV6
>>152
>途中のdfが不要なら上書きしていけばいい

自分で書いといてなんだが
df = df.apply(analyze1)とかでapplyできる形でなく
全く異なる別のDataFrameを生成してるんであれば変数名は変えたほうがいいかも
0154デフォルトの名無しさん
垢版 |
2020/03/22(日) 19:17:25.89ID:bt+rsTJI
Categories > Tech > Languages (Python)
https://duckduckgo.com/bang?c=Tech&;sc=Languages+(Python)

ドキュメントの探し方
https://news.mynavi.jp/itsearch/article/devsoft/4859

>任意の機能を持った対話システムを自分で開発する場合にはどうしたらよいのでしょうか。
当然ながら、必要なモジュールは自分で探す必要があります。しかし、プログラミングを始めて間もない方の多くは、
どうやって調べたらいいかわからないのではないでしょうか?

そこで今回は、「カレンダーを表示する対話システム」の開発を想定し、
カレンダー機能の実装方法を調べていくプロセスを紹介したいと思います。
0156デフォルトの名無しさん
垢版 |
2020/03/22(日) 20:06:07.25ID:uitKMHee
>>152
なるほど
クラスにするとインスタンス生成して、ポインタ指定しなければいけないから、冗長になるけど、
あえてクラスにしないで関数にするとシンプルになりますね。

オブジェクト指向でクラスにしなければいけないと思ってたけどあまり黄にしなくていいのかなぁ。
0157デフォルトの名無しさん
垢版 |
2020/03/22(日) 20:14:11.05ID:V1WguA+k
df自体がDataflameオブジェクトのインスタンスなんだけどそんなこともわかってないのかな
0159デフォルトの名無しさん
垢版 |
2020/03/22(日) 21:23:41.12ID:ZXA28Lms
>>146
「df10」みたいに
変数名や関数名、クラス名などに
数字がつく時点で間違ってる

Pythonのまともな本の
サンプルコードでは
まずそうなってないはず
0160デフォルトの名無しさん
垢版 |
2020/03/23(月) 07:00:21.83ID:jGS2rL5b
>>156
Ruby では普通は、モジュール内にはクラスを定義するけど、
単にモジュール関数も定義できる。
例えば、my_utility.rb 内に、モジュールを定義する

module MyUtility
def my_func( 引数 )
end

module_function :my_func # 外部へ公開する
end

別のファイルで、上のモジュールを読み込んで、関数を呼び出す

require_relative "my_utility.rb"

MyUtility.my_func( 引数 )
0162デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:22:42.49ID:Wiq2xD8N
Pythonって文字列部分にダブルクオートを使わずに
シングルクオートを使って書かれてるコードの方が多い気がするんですけど何か意味あるんですか?
シングルクオートのキーボードの位置って結構押しづらい位置にあるからあんまり使いたくないんですけど
0163デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:26:12.90ID:1jGdZOlI
>>159
すいません。
実際の名前を書くと長くなりすぎるかと思って適当な名前をつけてしまいました。

ちなみに実験条件1、実験条件2データを
experimental_condition1
experimental_condition2
というのもあまり良くないのでしょうか?
0164デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:28:16.86ID:1jGdZOlI
>>161
状態を管理するってどういう意味でしょうか?
本とかでゲームを題材に敵を量産するためにクラスを作るのはわかりやすいのですが、
数値計算とかだと、どこでクラスを使うべきかよくわからなくなります
0166デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:36:28.36ID:1jGdZOlI
>>158
なるほど
関数型プログラミングとは聞いたことがありましたが、こちらの方が数値計算とかだとしっくりくるような気がしますね
0167デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:36:49.58ID:AJbCMuHR
>>164
単純な数値計算は関数だけでもいい
むしろその方がスッキリする
三角関数とかに状態とかないから

ゲームの場合は状態遷移の塊で
状態を保存しておきたいから
クラスを作りインスタンスを生成する
0168デフォルトの名無しさん
垢版 |
2020/03/23(月) 08:48:04.30ID:Wiq2xD8N
>>165
ありがとうございます
そういう理由なんですね
0169デフォルトの名無しさん
垢版 |
2020/03/23(月) 14:16:09.84ID:QFUl7nfE
>>162
US-ASCII キーボード使え
0170デフォルトの名無しさん
垢版 |
2020/03/23(月) 14:18:54.80ID:QFUl7nfE
>>163
dfA とか dfB とか dfZ とか使ってる人もいる
どっちにしろ素人丸出しコードになるのでお薦めはしない
0172デフォルトの名無しさん
垢版 |
2020/03/23(月) 15:32:39.96ID:GoZ/zzdR
"..." より '...' の方が見やすいから
0174デフォルトの名無しさん
垢版 |
2020/03/23(月) 16:16:46.89ID:8qspM6DN
"""hogehoge"""
↓よりも見易いのは
↓こっちやろ
'''hogehoge'''
0176デフォルトの名無しさん
垢版 |
2020/03/23(月) 16:52:05.42ID:AJbCMuHR
>>163
(とくに二桁以上に増える可能性があるものは)
後で複雑化して大変になるから
たとえば配列を使ったりして
番号を振らないで済むようにする方が推奨できる
0181デフォルトの名無しさん
垢版 |
2020/03/23(月) 19:06:21.87ID:6kgKLG+2
>>163
テストが2つしかないと明確に決まってるなら〜one,〜twoでいいと思うけど
それがいくつになるのか解らない、もしくは多いのならリストを使って
〜[x]としたほうがスマートというか扱いやすい

変数名、関数名、クラス名に数字を使わないというのは
プログラムの作法(?)として言語を問わず普通というか当たり前
0182デフォルトの名無しさん
垢版 |
2020/03/23(月) 19:12:01.32ID:6kgKLG+2
あと、なんか知らんけどこのスレ、プログラミング自体が初めてな
感じの奴多い気がするんだけど、学生なのかね?

なんかpython選択しちゃってどうしたらいいか解らない的な
質問が多い気がする
0184デフォルトの名無しさん
垢版 |
2020/03/23(月) 19:38:36.51ID:7lDoSnDw
超初心者ってのはプログラミング自体初めてっていうヤツのことなんじゃないの
初心者に輪を掛けて超がついてんだよ
それ以外に何かいるの
0188デフォルトの名無しさん
垢版 |
2020/03/23(月) 21:28:47.12ID:qQ8i/Woj
わいRuby厨、いまからプログラミング始める学生に勧めるならもうRubyよりPythonかなって思ってたけど、お前らは最初の言語は何がいいと思ってんの?
0191デフォルトの名無しさん
垢版 |
2020/03/23(月) 21:42:04.82ID:oBNr3evO
最初ならアセンブリ。冗談じゃなく。
ほんのちょっと齧っておくだけでいい。
0195デフォルトの名無しさん
垢版 |
2020/03/23(月) 22:38:57.44ID:FCRLK915
供給過多で単価が下がるのはプロパー的にはありがたい
Pythonはコーディングスタイルを統制しやすいから低スキル層を束にして使うには向いてる
0197デフォルトの名無しさん
垢版 |
2020/03/23(月) 23:43:21.26ID:1jGdZOlI
>>167
なるほどわかりやすいです
自分はゲームとか作ることはないので、
クラスにする必要性はなかったのか・・・
C#の初心者本とか見てるとクラスにしないといけないような脅迫観念があった
0198デフォルトの名無しさん
垢版 |
2020/03/23(月) 23:50:51.99ID:1jGdZOlI
>>181
配列は自分も考えたのですが、
今回は2つまでなの確定なんですよね

before, afterの頭文字とって
DF_B, DF_A
とかしたら訳わかんなくなるんだろうな
名前決めるのって難しい
0199デフォルトの名無しさん
垢版 |
2020/03/24(火) 00:02:33.99ID:IXy5V4dp
plt.plotで2つのグラフを順番に表示させると、
1名目のグラフのウインドウを閉じないと、2枚目のグラフのウインドウが表示されないのですが、
同時に表示させる方法ってないでしょうか?
0200デフォルトの名無しさん
垢版 |
2020/03/24(火) 00:45:33.00ID:LPFDXKjv
>>195
>低スキル層
で、超ゆとり教育を激受けて脳が未発達で実質知的障碍者に近いレベルの奴が
たむろしているのが俺らのこのスレだからな。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況