◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:Pythonのお勉強 Part69 YouTube動画>3本 ->画像>14枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1669293584/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
!extend:default:vvvvv:1000:1024 ↑スレ立てる毎に減るので、減ってたら3つに補充すること。 ・当スレにRubyのソースコード類を書くことを禁ず ・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止 ・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨 ・エラーを解決したいときは、かならず エラー文(勝手に省略orスクショうp等の横着禁止)と おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。 ★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、 ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止) https://techiedelight.com/compiler/ Run Code機能あり。 http://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 http://pastebin.com/ まずまずシンプル。 http://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Pythonオフィシャルサイト http://www.python.org/ ◇Pythonドキュメント https://docs.python.org/ja/3/ ◇まとめwiki http://python.rdy.jp/ ●関連スレ● 自称初心者は↓へ 【まず1嫁】くだすれPython(超初心者用) その58 http://2chb.net/r/tech/1662514433/ 〇前スレ〇 Pythonのお勉強 Part68 http://2chb.net/r/tech/1663235546/ 次スレの建立は>>985 が挑戦する。(980通過して24h後も落ちなくなった) ### END of TEMPLATE ### ? VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured LSTMで全部で1000あるデータの、1001期目の予測値を得るにはどうすれば良いですか どのサイトを見ても検証期間中の予測値は得られても、それより先の予測を得る手段がいまいち分かりません
Twitterのエゴサをpythonでできないかなと思って seleniumでやってみたけど画面上は表示されてるのに ソースには「JavaScriptを使用できません。」と出る どうすりゃいいんや…
>>11 せめて日本語が読めるようになってから手を出せ。あほ
実行して立ち上がったブラウザではTwitterが表示されている つまりJavaScriptは実行されている にもかかわらずpython内では実行されていないソースコードが表示される JavaScriptが実行された後のソースコードを取得するにはどうするといいでしょうか?
webdriverのインスタンスを作るときにjavascriptをenableにしてないとか ページの生成が終わるのを待たずにhtml読んでしまっているとか
>>14 ありがとうございます。
オプションに「options.add_argument('--enable-javascript')」を追加したり
time.sleep(15)も追加しましたが駄目でした。
JavaScriptが反映されていないのが原因だと思うので そのあたりをもう少し調べてみます。
こういうの見て思うんだけど、スクレイピングの参考書ってAPIへの誘導ってないの? プログラミングもWebの知識もない人間にスクレイピングだけでやらせようとするのってだいぶ罪深いと思う それに、Webの勉強するのにスクレイピングやブラウザでアクセスしながらって相当な悪手だろ 普通簡単なWebサイト作りながらとか構築する側の立場で進めた方が効率いいし、それでもボリューム的に片手間で済むようなもんでもないでしょ
Webプログラミングと言えば 情報を発信するか集めるか、まあどっちかだしな
>>19 全くもっておっしゃるとおりだと思うけど、静的なサイトだとBeautifulsoupとかで見よう見まねでできちゃったりするから素人さんにもキャッチーなのよね
http通信とは?とかWebサーバーの仕組みとは?から入ると素人は力尽きちゃう
>>19 APIはAPIで辛くない?認証不要APIとかだったらいいけど、大体お作法を調べるのに時間かかる。
スクレイピングは、HTML/CSSやったことあるならわかる感じがする。RPAみたいなものかなと。
いや逆にRPAこそGUIの知識いるしAPI整備してもらってやったらいいじゃんと思うんだけど、API整備の予算が付かないんだろうね…
スクレイピングって、ウェブブラウザの振る舞いを模倣すればいいのと違うん?
>>24 今どきのブラウザは巨大アプリの筆頭みたいなもんなので簡単にエミュレートできないのさ
なのでjavascriptで自分を書き換えたりするサイトをスクレイピングするにはブラウザそのものを立ち上げて外部からブラウザに今どう表示してんのと聞くほうがいいわけ、それがSeleniumという仕組み
アホがいきなり動的生成サイトにwhile無限アタックをしかけるまである 悪いのは無責任な企業系入門サイトと、ライブラリ豊富なpython
>>25 おまけにブラウザごとに挙動が大きく変わるから、ややこしい!
初級者がスクレイピングやるなら、先にネット倫理から勉強してほしいところ
初級者が考えるような事は調べりゃ出てくる 初級者は検索して自己解決に導けないならあきらめた方が良い
Twitterなら、API利用から始めると楽だと思う
>>25 単純化すると
ウェブブラウザみたいに、サイト開いてAPI叩いてデータ(JSONが主流になったね)拾って、
これをパースして個別データとして取り込んで、ってことだよね
これってウェブブラウザの振る舞いを模倣していることにならないのかな?
たいてい、スクレイピングの本には、図書館へスクレイピングして、 サーバーを落とした香具師が、業務妨害で逮捕された事件も書いてある。 だから必ず、契約してAPI を使うように書いてある あくまで練習用に、自分のPC 内のウェブサーバーへアクセスして試すべき。 VSCode の拡張機能・Live Server で、簡単にサーバーを起動できる そこに対して、curl, wget, Selenium Webdriver などで試す 基本的に、ほとんどのサイトは、5ch みたいに先にHTML を送っておいて、 その中で、Ajax(JavaScript)によって内容をサーバーへ取りに行くので、 Selenium で実際のブラウザを使って、wait しないと内容を取れないはず
>>33 落としたことにされた人には、図書館も開発元の三菱情報システムも、謝罪しているけどね
山浦 清透 【作業工程フル公開】エンジニアが30万円案件の制作過程を公開 VIDEO これは、PHP だけど、 Udemy の山浦ぐらいの相当プロでも、1:5:42 の所で、 マイナビ求人をスクレイピング攻撃しているだろw プロでも間違うから、なおさら素人なら、無限ループで攻撃し放題。 業務妨害で逮捕されるだけ データベースに保存するなら、普通はPHPじゃなくて、Ruby on Rails を使う
ウィキペディアにも経緯が詳しく書かれているから見るといい
https://ja.wikipedia.org/wiki/ 岡崎市立中央図書館事件
このような場合はJPCERT/CCに相談して欲しかった
この障害は岡崎だけでなく、全国の図書館でも発生していたそうだ 朝一でサーバー再起動が業務となっていたところもあるそうだ 悪質なのは、この障害、原因を開発元が承知していたことと、 システム更新(もちろん有料)の口実にされていたこと ハードの買換をさせられた図書館もある 詐欺事件とされてもおかしくはない
まぁ我々は困らないし 当事者が気を付ければ済む話 過去の事件ループはもう良いから それで終わりにしろ
twitterなんて「規約読め」「API利用しろ」で終了だろ 図書館事件は特殊条件踏みすぎててミスリードすぎる
>>32 逆に、人がAPIで提供されるjsonのデータ読めって言われてもきついでしょ
それと同じで人が読みやすいように作られてるWebのUIをソフトウェアにやらせるのは筋違いなんだよ
seleniumにしたって元々はJavaScriptのテストを走らせるために作られていて、誰かが作った仕様のはっきりしないWebサービスのUIを解析するためには作られてないと思うよ
今もそうだかは使ったことないからはっきりとはいえないけど
元々、Selenium Webdriver, Capybara などは、 Ruby on Rails の開発で、システムテストで実際のブラウザを自動操作して、 画面の動作を確認するためのツール
API使いたくないからスクレイピングするんだろ 何言ってんだか
>>32 おっしゃる範囲では模倣してることになるよ
しかしPythonのライブラリでブラウザの全部の機能を模倣するのは難しいので、Javascriptをゴリゴリ使うようなサイトではブラウザを模倣するんじゃなくてブラウザにレンダリングを外注するのよ
辞書でキーが値でもある場合とか、リストからユニークなもののみ抽出したいときとか、たまに使う
>>48 集合ってセット型のこと言ってるよね?
どんな職種かにもよるけれど
俺の働いてる環境だとfor文と同じ頻度で使う感じかな
集合ってすごく便利でさ
重複削除するのも排他的な処理にも使えるのでめちゃめちゃコスパいいんだよ
>>48 何を言っているかと言うと
for文はイテレータとして機能するんだけど
set型はフィルタリングとして使えるんだ
>>48 更に何を言っているかというと
FizzBuzz問題も一行で解くこともできて便利なんだよって話ね
重複を削除したい、というタイミングで集合に入れて戻す とかならそういう関数だとみなせるので必要が生じたら使う、でいい ではなくて、最初からずっと集合で持ち続けるような用途があるかどうか
>>55 普通にある。
アンケートの選択肢の一覧がわかっていないときに選択肢集合を取り出すのに使ったり、
スケジュールを調整するときに、日程集合aと日程集合bの積集合が空かどうかでスケジュールが被っていないかを確認したりなど、
入れるときから集合にしておいた方がいいケースはいくらでもあるよ。
重複してたら集合に追加する時にはじかれる訳だけど、 それに関してはケアしなくていいの? 無視されてしまったスケジュールの人が発生しそうだけど 勝手に重複が削除される仕組みはどう考えても危険で、 うまく使える局面が思いつかない
初心者スレ行ったほうがいいんじゃないか? s1 = {"2022-12-01", "2022-12-02"} // Aさんの希望日 s2 = {"2022-12-02", "2022-12-03"} // Bさんの希望日 print(s1 & s2) // -> {"2022-12-02"}
s1 = ["2022-12-01", "2022-12-02"] s2 = ["2022-12-02", "2022-12-03"] print(set(s1) & set(s2)) これでも同じなんだよな &演算が強力だから使いたいだけで、集合で保持しておくメリットが無い
s1 = ["2022-12-01", "2022-12-02"] s2 = ["2022-12-02", "2022-12-03"] for x in s1: for y in s2: if x == y: print(x) オラァ!
Listが標準、Setがライブラリ拡張で不利だとしても ドキュメンテーション重視でSetつかうことあるし 視野がせまいとしか
>>59 それどう見てもリストで保持するメリットの方がないだろ...
すぐにあれこれ思いつかないけど、予め予約語や予約番号を突っ込んでおいてユーザがそれらを入力したら弾くとか、処理済みのファイル名を覚えておくとか
履歴はURLだけでなくアクセスした日時も覚えておく必要あるからSetだけだと難しい
>>57 それをケアしたいならin演算子を使えばいいだけであって、setの根本的問題ではない。
そして、in演算子はlistとsetならどう考えてもsetのほうが速い。
もちろん、重複を許さないリストのバリデーションなんかにも使えるよね。
リストで持っておけばいいじゃん、必要なときにsetに変換して処理するから、という人は、計算量なんかを考えてみるといいよ 計算量無視するなら62のコードでいいじゃんってことになっちゃうしね。 まあ、Python遅いから計算量を減らすようなコードを書くことに説得力がないというのはそうなんだけど、 結局普段からそういう練習していないと高速化したくてC++に一部実装を変更したときに速いコード書けないから。 もちろん、リストで作っておいてsetに変換する方がいいケースもあるよ。 PandasのDataFrame,Seriesのインデックスのところで演算するのなんかも、集合的な演算で行なっているのだし、慣れておいて損はないと思うが。(実態はboolのSeriesだけど)
セットを学ぶ時間と意義はあるってことな セットは慣れたら便利 速度もメモリにも優しくて安心 セット知らないってなんかダサいw よってこれはPythonistaの総意です
perlで、値として何でも1を入れて有無だけ判定するような使い方してた 配列でできれば良かったんだけど
と書いてから気付いた これsetの有効な用途だな 一度処理した対象は二度と処理しないように処理済みの一覧を作りたい それを管理する為にsetはうってつけ
辞書でも可能だけどいかにも頭悪いので辞書でやるべきではない
過剰なものを使いたくない気持ちを持っていたほうがいい
合理的でないとコードの意図が伝わりにくくなるやん 門外不出の書き捨てならどうでもいいけど
なに使おうがココ見てる奴は誰も困らんので 各々好きなように活用すればいい
モチベーションのためにpythonで awsのサーバーレスいじってる 別に何かを作るつもりはないけど あー、こうやってユーザーの入力を受け取るのね、 とかデータベースへの書き込みをいじってる
pandasで思ったのですが import pandas as pd df=pd.DataFrame({"A":range(0,10,1),"B":range(10,20,1),"C":range(20,30,1)}) df["A+B"]=df["A"]+df["B"] df["A+C"]=df["A"]+df["C"] print(df) これってA+BとA+Cで計算量はO(2n)になっちゃいます?よね だったら df["A+B"]=0 df["A+C"]=0 for i in range(len(df)): df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i] df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i] こうすればO(n)だと思うのです?がこういう風に書かないのは視認性を優先しているからでしょうか?
>>84 どっちもO(n)だし実際に実行してみると後者の方が遅いと思うよ
>>86 なるほどそうなんですね
前者だと、len(df)の回数だけループしてdf[""]に結果が代入される、をdf[""]=の行だけ繰り返すようなイメージで
例えばlen(df)が10万あったとしたら、10万ループ後にまた10万ループ…、みたいなことかと思ってました
実測してみました(合っているかどうかわかりませんが
かなり遅くなりましたね
import pandas as pd
import time
df=pd.DataFrame({"A":range(0,10000,1),"B":range(10000,20000,1),"C":range(20000,30000,1)})
start=time.time()
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
end=time.time()
print(end-start)
start=time.time()
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
end=time.time()
print(end-start)
#0.0027747154235839844
#5.960754871368408
>>88 C/C++言語で似たような処理をうまく実装すれば、基本的にはどっちの書き方でもそんなに違わないのだけどね。
結局は行数×2の足し算をしなければいけないのは、どうループを回そうが同じ
(厳密にはCPUのキャッシュに載る書き方をするかどうかとかで性能は違うかもだけど)
Pandasの場合、DataFrameは、実は列ごとのデータであるSeriesをくっつけてるだけで、
列と列を足して新しいSeriesを作るような演算は、Series同士の演算ということで専用のCのコードが走ってロスが少ない。
一方1行ごとにPythonのforループで値を取り出して出すと、Pythonの遅いループのせいで遅くなる。
NumPyでもPandasでも、ブロードキャストせず値を一個一個取り出すような処理はめちゃくちゃ遅くなるからどうしようもない場合以外避けるべき。
外部モジュール使わない場合でも、 本当にループを書くより、同等の処理が一行で書ける系の書き方の方が速い
iでループするとiというPyObjectにいちいちアクセスするから無駄が増える
計算よりもコードの解釈10000回に掛かる時間が長いのよ
実はこっそりコンパイルしてるだろと思っても本当にインタプリタなんだよな 変数名とか間違ってても到達しなければエラーにならない
今時JITもない純粋なインタプリタだしな どう考えても速くはならない
>>84 O記法に使われるのは極限の値だからO(n)もO(2n)も大差がない一次関数的オーダーとみなされる
スクリプトなのを逆手に取ったトリッキーな事も出来るけどね 変数名を辞書のキーに使ってウィジェットを管理することでeval関数で自動同期できたりとか
perlはコンパイルしてから動くのに、evalで動的なことできるんだよな あいつが一番気持ち悪い
>>84 後者も毎回2行の処理があるから2nだよね
Oが下がってもループそのものをpythonで描いてる限り速くならんって話だろ
ChatGPTがやばい たとえばネットで公開されてるプログラムのソースコードを渡したらめちゃくちゃ詳細に教えてくれる 自分はpython初心者だけど、理解できるレベルに噛み砕いて説明してもらえる ここまですごいと「プログラム勉強する意味とは?」と不安になってくる 本当に「AIにやらせりゃいい」の時代が来る これから人類は、仕事の価値が安すぎてロボットやAIにやらせないような、隙間の部分を仕事にしていくしかないかも 金銭的な資産がない状態から、技術を通して一定の財産を築いていくことは難しくなっていって 資産がある人間は苦労もせずさらに財産を増やせる、という社会構造だけが残ってしまうのでは
>>101 自分はtkinterをクラス化して使ってるんだけど
ウィジェットを管理するクラスと、1つの変数に対応した複数のウィジェット持つフレームクラス(ラベル、インプット、ボタン)の2種類があって
管理クラスにウィジェットのタイプと変数名を渡せば、ウインドウ内に配置して、変数との同期を自動でやってくれるって感じにしてる
管理クラスは辞書で変数名をキーに、フレームオブジェクトを値として持っていて
updateを呼び出すとevalとexecをループで回して同期を行う感じ
色を変えたり、タイトルを変えたりするときは変数名をハンドル代わりにしてアクセスする
変数には共有のモジュール変数を使う必要があるけどね
>>98 それrubyもpythonもphpも同じだぞ
rubyは知らんけど、phpはどう考えてもコンパイルしとらんだろ
コンパイルというのが機械語という意味なら むしろPHPはJITなので1番してる Rubyは最近YJITというのが入ってデフォルトでオフだが オンにするとJITが走る pythonはJITはしてないがVMの中間言語にコンパイルして実行している perlもJITなしのVM中間言語にコンパイル
つまりどの言語も何かしらの中間言語にコンパイルはしている その後JITするかは処理系の実装次第 これはV8やJSCでも同じ
そら、ソースファイルを実行できんし 全ての言語がプロセッサが実行できる形式に変換はしとるわ 言ってるのはそういうことではない
お前らのバカさかげんには 開いた口が塞がらない笑笑 コンパイラ作ったことないのか? なにがJITだバカw
JITはJIT(just in time)コンパイラの略なんだが...
今時の実用言語で純粋にインタプリタ形式なのはシェルスクリプトぐらいじゃないかな
>>104 時間の問題でしょ
アメリカでは自律のタクシーが稼働しているぐらいだし
時間の問題で労働人口は大幅に減る
その前に役所系の手続きをなんとかして欲しいけど
引っ越した時のナンバープレート交換とか
1番並んで、10番並んで、15番並んでと、、延々と指示されたところに行って並んで
書類提出して待つってことを朝からやり続けてプレート付けて帰るまで1日かかったけど
中国人が途中でキレて「お前いくらもらってるんだ?すぐ出来ないのか!」とか怒鳴ってたけど
もうあり得ない
スレチの話するや釣って安価すら間違うから始末に負えない
別の時空間と重ね合わせが起きているせいじゃないか? どうも間違えていると言う認識を持ってなさそうだし
pythonから初めた人が、一番ビックリするのはどの言語だろう。 異質というか書き方、考え方がまったく異なるのは
一般的なのはALGOL系言語ばかりだから その範囲で見るかどうか
びっくりの方向性だよな そんな原始的なのという驚きか、そんなに進歩してるのなのか
Lisp、Prolog、Haskell 近いようで遠いRubyやJavaScriptも少し潜れば驚くかも
>>117 意識はあるけど、初めて書き込むので
話題が変わるまで、様子を見ようと思って、、、
しばらくして、、いきなり違うIDで連投に近い形で2レス入って、、
またしばらく空く感じか、、、
よくあるパターンだったな
>>102 ヤバいな。もう人間のコーダーいらん未来が見えてくる。
そんな未来は前から見えていたけど、予想よりも早く来た 技術の進歩は加速度的に進むことをいつも忘れていて、 この感じで行けば、でつい推測してしまって、もうできたのかと驚く AIは特にそう
ChatGPT実際使ってみたら分かるけど ニッチな要求にはまるで駄目 所詮は自然言語処理AIでしかないよ そう考えたときに必要なくなるのはプログラマーではなく"文系"だということが分かる
>>130 自分の書いたコード貼って、評価してって言ったら
目的からやりたいこと、改善策までペラペラ解説してくれたぞ。
まだまだ伸び代があるよ。
>>131 さすが文系様、スレ違いを延々とご苦労様
理系は論文書いて博士号取って 研究者として、 悠々自適の人生だからね。 たまにFラン理系のバカのクスがIT関連の 仕事してるそうだが 恥ずかしいから理系と言わないで欲しいよね。 IT関連の仕事は文系の仕事だから笑笑
そういう国もあるだろうけど、日本では研究職は目指さない 修士まで取ってメーカーに入る 就職活動とかしなくてもリストから選んで入れる その後は、学部卒よりは少し高い給料からスタートする普通の会社員
日本で研究者やろうとすると悠々自適にはなれない そうありたい奴は海外に行くけど結局成果が必要になるから結局悠々自適からかけ離れていく
プログラミングとかやりたい人は 自分の書いたコードで世界を変えたかったり ビジネスたちあげてバリバリ稼いだり したい人達だと思ってたから かなりショックだわ
ただの道具だよ じどうしゃとか運転する人は世界中を駆け回ると思ってた的な
仕事がなくなるのは、理系文系というより、事象を抽象化してモデリングする能力のない人という気がするけどな。 適切な抽象化は現実世界の理解なしには成り立たないから、現実世界にエージェントを持たないChatGPTではなかなか出来ないことだと思う。 もしできるようになったらそれこそシンギュラリティだと思う。
この作業はマニュアル書けば他の人に依頼できるな と思えるような仕事はみんなAIでもできる 日本の雇用はわざわざ高度な能力が要求される仕事を減らして、 誰でもできるタスクにブレイクダウンしてしまったので、今後一気に空洞化する
>>141 お役所は、はんこ文化とかで
自分の職だけは守り抜きそう
>>141 実は仕事を作り出す仕事ってAIが苦手とするところでね
DeepMindが開発したAIの「AlphaCode」がプログラミングコンテストで「平均」評価を獲得 gigazine.net/news/20221212-competition-level-code-generation-alphacode/
AIに囲碁ができると驚いていた時代が既にのどかだな
一番やばいのは単純コーダーよりもむしろ、自分ではプロダクト作れない自称AIエンジニアやデータサイエンティストの類だと思うけどね ある意味一番汎用AIの影響を直接受けるわけだし、もともとアウトプットの品質に直接的に責任を持たずにプロダクトサイドに丸投げだから問題なくAIで代替できてしまう コンサルできない奴は早晩詰むよ
そうか? 単純に下から順番にAIに置き換わっていくと思うけど 修行が必要な仕事が機械化されていく 修行でそれぞれが同じテクニックやノウハウを体に叩き込むプロセスが不要になる
直近でヤバいのがテスターとかだと思うわ 未だにexcelで工程表書いてるSierがやってるやつ
l = ['x', 1, 2, 3, 'x', 4, 5, 'x'] ll = [[1, 2, 3], [4, 5], []] みたいに、区切り文字間でリスト分割ってどうやったらいいですか?
more_itertools.split_at とか?ほかでも書けそうだけどmore_itertools推しなので
人間はデータ集め 0から1を作り出す作業でも 蓄積されたデータがあれば機械学習でも出来るようになる 人間はやってることをデータ化して蓄積するのが仕事
>>149 最後に[]付くなら先頭にも付かないと
[]は勝手に削除してくれる方が嬉しい
>>150 あら~
>>153 すいません書きミス
[[], [***], [***], []]で合ってます
ちな最終的にほしいのは
[[***], [***]]だけです
区切り文字区間かつ有要素リストです
values =[]
temp = []
for i in l:
でゴリゴリは書けます
l = ['x',1,2,3,'x',4,5,'x'] ll = ''.join(map(str, l)) ll = ll.split('x') ll = list(filter(None, ll))
l = ['x',1,2,3,'x',4,5,'x'] ll = ''.join(map(str, l)) ll = ll.split('x') ll = [x for x in ll if x]
ずっと前に似たような話題があったな splitのlist版が欲しいという話 結局、numpyにそんな機能があったけど、itertoolsにあったのか
itertools.groupby more_itertools.split_at じいおぼえた
理解するのに結構かかった groupbyで書けるというのはかなりトリッキーでないかい
>>160 トリッキーと思うなら愚直な方法でいいんじゃないかな。
バカにしてるわけではなく、どこまでがリーダブルと思うかっていう個人の線引きの問題かなと思うから
でも、標準ライブラリに〇〇型限定ならあるのに、というものは大体itertoolsとかmore_itertoolsとかtoolzにある印象
区間抽出だからグルーピングで実現すると直感的ではないわね llist = [list(y) for x, y in itertools.groupby(_list, lambda x: x == 'x')] llist = list(more_itertools.split_at(_list, lambda x: x == 'x')) よい
みんなのPythonの参考プログラムで、作者の趣味を押し付けることの危険性を再認識した キメぇとかそういうのもあるがそれ以上に 長年好きだった職場の女の子に振り向いてもらえないまま知らん奴と結婚されたのと、ももクロメンバーの結婚が重なるとかさ(´;ω;`)
コード探せなかったんだけど numpy.isnan()てどうやってnan判定しとるの? というか(nan == nan) is False ってコンピウター的にはどういう実装?なん? nan?
>>164 nanにもいろいろあるからなのかな
ちゃんと読める人がいたら僕も教えてもらいたい
https://ja.m.wikipedia.org/wiki/IEEE_754 > NaNにも符号や仮数があるが、分析以外の目的では使えない。fraction の先頭ビットで 「signaling NaN」と「quiet NaN」を区別する。
> NaNと無限大はexponentフィールドが全て1である。
ある価格範囲でpriceとsizeが(d=0.25)ずつ変化します
それぞれの数値を計算したいのですが
こんなにコードが長くなってしまいました・・
https://ideone.com/c2v5Zn ・価格priceが上がればサイズsizeがは下がる
・各価格のsizeの合計はsize=10を超えない
と言った感じです
もうちょっとすっきり書けないでしょうか
訂正 >・価格priceが上がればサイズsizeがは下がる ・価格が上がれば、サイズも上がる でした
l = [(0, 1), (1, 2),,,] l1, l2 = [x, y for x, y in l] みたいなことがやりたいです。どうにかなりませんか 配列がじゅうぶん長いときに l1 = [x for x, y in l] l2 = [y for x, y in l] より高速だとうれしいです
>>168 速いかどうかはともかく、Pythonなら
l1, l2 = zip(*l)
が定番じゃないかな
1,東京,abc 2,名古屋,def 3,大阪,ghi 上記csvファイルを読み込んで、レコード毎に変数no,data1,data2に読み込むにはどうすれば良いでしょうか?
>>171 何がしたいのかわからんけど、その系はpandasを使うのがオススメ。
>>171 import csv
with open("a.csv") as csvfile:
csvreader = csv.reader(csvfile)
[no, data1, data2] = zip(*csvreader)
print(no, data1, data2, sep="\n")
# ('1', '2', '3')
# ('東京', '名古屋', '大阪')
# ('abc', 'def', 'ghi')
>>171 import pandas as pd
df=pd.DataFrame({
"ctiy":["東京","名古屋","大阪"],
"tag":["abc","def","ghi"]
})
df.to_csv("sample.csv")
import pandas as pd
df=pd.read_csv("sample.csv",index_col=0)
df.reset_index(inplace= True)
df=df.rename(columns={"index":"no","ctiy":"data1","tag":"data2"})
df
元のcsvが文字通り
>>171 ,,
1,東京,abc
2,名古屋,def
3,大阪,ghi
なら
import pandas as pd
df=pd.read_csv("sample.csv")
df.columns=["no","data1","data2"]
だけ
pandasのコードのサンプルってデータの定義部分も書いてあったりするけど、 実際にはファイルからしか読まないんだよな
>>173 no, data1, data2 = [row for row in zip(*csvreader)]
ファイルから読み込もうがデータを受信しようが 実際にはそのまま使うことなんてほぼ無いからな 扱いやすいデータ構造に変形して管理した方が良い
>>177 ん? ああ、左辺を [] で囲む必要ないんだ
その内包表記は何のため?
>>177 スマホでなんで確認しないで書き込んでごめんだけど、
内包表記のところは[*zip(csvreader)]でいい気がする(リストに変換できれば終わりかなと)
171です。
>>172 ,173,174,175,176,178
皆様ありがとうございます。大変助かりました。
関連本何冊か読んだけどファイルから変数に代入する方法が分からず悶絶してました。
list()も不要でzipから直接受けられる じゃないと173が結果も書いてるのに未確認で貼ったことになる
機器AとBでpythonを使った通信する場合 socket通信以外で高速にやりとりする方法ってあります?
なるほどsocketのUDPでやれば良いのね ありがとう
30代のPythonクソチョンは とにかくクズで強姦魔の犯罪者! 半島系帰化人は絶対に職場に入れないように 両親と祖父祖母の戸籍謄本を 提出させましょう!
30代のPythonクソチョン男はクズの中のクズ! 日本で強姦を繰り返す悪魔!
「全てはオブジェクトなり」という設計哲学はカッコいいけど、いろいろ問題もでてくるよな Trueは文字列でなくて、Trueオブジェクトと言われても、はじめはポカンとなる
いや、文字列とは思わんだろ 何かの特殊な数値かなと思う
我こそは真理なり いや、真理は我に有り お前は偽物だ! いやお前こそ偽物だ!
特定の静的言語な処理系に囚われてんのか メモリの状態が0って
return True と書ける気持ちよさは、代えがたいけど
chatGPTに正直村の問題なげたら、どつなるんだ
chatGPT使いたいけど、電話番号の認証であきらめた・・ やってる人はよく番号提供できるなと思う
チューリングテストのハードルむっさ上がる どんなに高度なこと言ってても、いやお前合成音声やんでバレる
電話番号はSMSで認証するだけだぞ それを危険視するならクレカで通販するほうが危ない
>>202 ここの書き込みは大部分がAIのテスト運用
人間を見分かるの、とてもタイヘンね
30代Pythonクソチョン男は強姦魔の犯罪者! 30代Python男を雇うときには 両親と祖父母の戸籍謄本を提出させましょう!
>>202 xvideosみたいなエッチなサイトで流れる「決してこのゲームをダウンロードしないでください」みたいな広告あるよね。
あれ、aiの声だよ。amazonのpolyかな。
pythonならbotoで操れる。
30代Python男はチョンです! 犯罪者です! 雇うときには 父母と祖父母の戸籍謄本を提出させましょう!
スコープ外の変数更新して別々のスコープで共有する感じが何か抵抗あるのですが そういうものなのでしょうか・・? A=10 def add(n):global A;A+=n def view():global A;print(A) add(11) view() add(3) view()
そうしなきゃいいのでは? A = add(A, 11) view(A)
>>212 普通はそういう風に引数増やすかクラス化したりしますよね・・?
でもそれは単に自分にバイアスかかってるだけなのかな、と思いまして。
もしくはglobalに何か使いどころでもあるのかなと。
コールバック関数だとlambda: callback(A)みたいな書き方を避けるため?みたいな
規模とか目的によるんだろうな ずっと保守するコードならきちっと書いた方が後々楽だし、 ささっと書いて終わりならglabalの方が早い
名前空間あるしクラスのクラス変数、インスタンス変数と 立場というか複雑さはいっしょでない?
>>214-215 なるほど、とりあえずは使い分けしていきたいと思います
ありがとうございました
スコープ外じゃない global必要ない A=10 def add(n): A+=n def view(): print(A)
>>213 log みたいに本筋に関係無いけどそこらじゅうで必要なものは global にした方が見通しがよくなる
あと設定ファイルから読み込んだ設定値等のように基本的に読み取りのみで変更しない物とかなら許容範囲
それ以外に global 使うことはあまりないな、俺は
書き換える場合はglobalが必要で、読み込む場合は必要ないって仕様だったはず
>>221 ん?実際使ってそうだったから言ってるんだけど
バージョンによって仕様が違うのかな
ちな、3.7使ってる
30代Pythonクソチョン男は強姦魔の犯罪者! 気をつけましょう! あなたの近くにいます!
>>222 合ってるよ
しかしglobalやnonlocalは(設計)負け犬の烙印
main()を呼ぶ前に設定を読み込んで、全部大文字の定数みたいな変数に入れて参照させる たまに書き換えたくなる
設定系は直接操作するんじゃなくて薄いインターフェイスかました方が 環境で分けたりモックも容易になるからそうしてる
システムに一つしかないものを取り扱うハンドラみたいなのはglobalにするのが設計的にもおかしくない気がするけど 一概に負けとか言えないと思うけどなー
globalの唯一まともな使い道はキルフラグみたいに定義は関数外に書く必要がある、その関数専用の変数 みたいなやつ ああ外部コントロールあるんだな とglobal, nonlocal宣言部で読める それ以外ではスコープ外の変数は明示的に引数に渡すべきであって云々。逆にシグナル引数で渡すのは気持ち悪いし
グローバルは、C,B,BCPL,ALGOL以来の伝統的な概念で 変数に限らず外部モジュールをリンクするのにも必要だ それらを踏まえたで、やたらと使うのはやめとこう、くらいの話か?
組み込み系は今でもC言語で、膨大なglobal変数の塊で動いている 当然干渉は発生しまくってそれは人間業ではコントロールできないので、 解析ツールでやばそうな箇所をリストアップして人間がじっくり調べる方法で今も作っている
>>230 初心者がglobalやnonlocal手を出すときはまず構造が間違っとるって話でしょ
eval, execも同じ。 慣れてるやつが意図的に使うなら好きにしたらいいじゃんョ
変数宣言がないpythonでグローバル変数など狂気の沙汰 マジで辞めとけ
グローバル変数に関してはPython は変数宣言あるぞ
>>230 グローバルはその話で合ってる
問題はPythonは読出しだとグローバルで書き込みだとローカルになると言う一瞬?ってなる仕様だと言う事
まあよくよく考えたらそれなりにリーズナブルな仕様だとは思う
キーワードとしてのglobalと、使い方としてグローバルの話が混ざってるなぁ モジュールに変数設定して実質的にグローバル変数として使えるので、普通に使っていてキーワードとしてのglobalの使用は不要と言っても言い過ぎではないだろう 組み込みがグローバルだらけになるのは、ハードウェアが変数の値を勝手に書き換えることがあり、それを前提とした処理を書くため 結果的に組み込みプログラマーはグローバルが不要なところでもグローバルで書くのが慣習となってしまった これは直すべき悪習だが、ハードウェア開発とソフトウェア開発はスキルセットが違うので、両方をカバーできる人はほとんどいないのが現実
>>238 そうなんだよなあ。組み込み屋と純粋ソフト屋は職能違うからね。
純粋ソフト屋が時間をかけて綺麗なコードを書く努力をしている間に、組み込み屋は別のことやってるからね。データシート通りに書き込んでるのに動かないけど、結局データシートが間違ってる、みたいな検証とか、波形見て波形が正しく出てない、みたいな検証とか。
純粋ソフト屋が組み込みのプログラムが汚いって馬鹿にするのはなんか違うと思うんだよね。
組み込みのプロセッサは遅いんだよ ROMもRAMも少なくて、きちきちに詰めてる そんな条件で競争に勝つには、新しい手法なんか使ってられない 要はCPUパワーがあれば人間が楽できるという話なので、楽せずに安く作る
>>236 それ名前の衝突問題しか解決しないよね…
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
chatGPTにfactory methodわかんねーからどういう感じなのか教えてくれやって聞いた ロボ「こういう感じやで猿野郎」 ぼく「ほげ」 class Product: __def operation(self): ____pass class ConcreteProduct(Product): __def operation(self): ____print("eat your banana !") class Creator: __def factory_method(self): ____return Product() class ConcreteCreator(Creator): __def factory_method(self): ____return ConcreteProduct() def main(): __concrete_creator = ConcreteCreator() __product = concrete_creator.factory_method() __product.operation() if __name__ == "__main__": __main()
純粋ソフト屋さんにVerilogとか書かせたら発狂しそうw
組み込みソフト屋のソフトが汚いのは、ハードのテスト用にチョチョっと書いたのをそのまま使うから。ソースは俺
たまにお客を呼ぶようにすると、部屋を片付けるようになる
>>245 その理屈で機械学習屋やデータサイエンティストのコードも汚い、というかプロダクションレベルではないことが多いわな
自分でケツ拭くなら別にいいよ その点、機械学習屋やデータサイエンティストはだいたい責任取らずに逃げるからタチが悪い 組み込み屋はいかにクソでも最低限のプロ意識と責任感はある奴が多い
機械学習屋のコードが1番きついわ 他の分野はまだ歴史があるからそれなりにコードは綺麗に書くという文化が浸透しているけど 機械学習の分野についてはバッチジョブだし 面倒なコードはフレームワーク側が持ってるから ユーザーがグチャグチャのコードを書きがち
サンプルがおかしい 世の中のソフトの大半はwebか金融だろ
>>245 ハードのテストが一番大事だもんね、仕様通りになってるかはソフト書かないとわかんないし
>>247 機械学習屋はともかくデータサイエンティストはサイエンティストだからプロダクションレベルを要求しても仕方ないと思うな
Jupyterでrestart and run all cellで動くだけマシといえよう
職能が違うのよ。普通のプロダクションコードのソフトメインで組み込みとデータサイエンスちょっとやったことある自分はそう思う。
どこに時間かけてるかが違う。憎み合うのは非生産的なのでやめましょう、相互理解しましょうって思っちゃう。
Web屋は仕様書を書くという習慣がないから データサイエンティストなどという詐欺師と同じw
Pythonに出会って、自分がC言語に挫折した理由がやっとわかった 俺らがPythonで空気のように使っているリスト・タプル・辞書 これらがCにはないので、処理ロジックを書く前にまず これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない 多くのC入門者はここで挫折してしまう C言語に20年挑んでハローワールドから一歩も進めなかった男の悔恨
リスト、タプル、辞書程度を実装できないレベルならどっちにしろどこかで挫折してただろ...
辞書はどうやって作ったらいいか未だに判らない awkの連想配列が魔法に見えた
>>256 そこで挫折するって言ってるのに、その先のどっかで挫折するってなんか意味あるコメントなのか?
>>255 の言いたいことは分かる気がする
python知れてよかったな
みんなが同じようなことをやるなら誰が代表してやればいい 言語に仕様として持たせたり、関数をライブラリにしたり、モジュールを作ったり、 サンプルプログラムを流用したり AIに書いて貰ったり ←今ここ
>>258 Cに挫折した理由が
> リスト・タプル・辞書これらがCにはない
じゃないってこと
てかこの程度の文章も理解出来ないとかヤバくね?
Pythonに慣れるとCでcsvファイル読み込むだけでも面倒臭く感じるな
>>260 挫折した理由は下が出来なかったからだぞ?
> これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない
これが実現できなきゃ先にどうやって進むんだ?
オートマにばかり乗ってると、マニュアル車の運転が出来なくなる
結局は言語ではなくて、データ構造とアルゴリズムの理解なんだよな 昔はみんなが知ってるべき知識だったけど、どんどん知らなくても使えるようになってきた
>>264 タプルならね
リストだとデータをメタにする必要あるし
辞書はツリーやハッシュマップも必要で
共通して動的なメモリ管理がつきまとう
>>263 そんなのググれば実装例あるからまずはそのまま使えばいいだろ
そんな知恵もないレベルならそりゃそこで挫折するわなw
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
知恵のないプログラマって、使い物にならないが いるんだな、そういうのが
>>271 そんなレスしか出来ないなら黙ってなよ...
そっちのほうがかわいそうすぎるわw
挫折した理由がわからないからなのか車輪の再発明に嫌気がさしたからなのかで違う
>>261 学生の時、CとJava覚えて
Cで基本情報処理取ったけど
Python知ってから、家でPythonしか使ってないけど
一般的なプログラマーじゃないから会社でそういう言語を使うことはないけども
資料の自動化云々、家のラズパイ、仮想通貨関係とか
Pythonしか使ってない
>>278 やめろ!5chだぞ
お前、絶対面白くない奴だろう
君が求める完成形の文章は絶対に面白くない
簡単に書けるレベルのものしかやったことないけど、プログラマとしての欲求が満たせて自分は満足している 簡単なものしか書けないレベルっていうのが本質的なんだろう
普通は簡単に書けるレベルをやるので十分なんだよ 自分がやってることをできるだけ手間掛けないで済むようにすることから始める 簡単に書けないことは、それで飯を食おうと思ったときにやれば良い
技術板なんだから、お互いの技術向上と切磋琢磨で活用したい 多少のちゃちゃ入れはいいかもしれんが、
Cはプログラマを信用してるから最小設計ポインタドーン!
この流れで「どっこいどっこい」じゃなくて「どっこい」で来るのか、、、 なるほどね
まあまあ喧嘩せんでくれ 自分はCに致命的に向いてないんだろう 例えば、20年Cに挑んでどうしても理解できなかったのがポインタのポインタ **argvがわからないのでコマンドライン引数を使うアプリが作れず挫折 実はPythonにも*と**があって絶望しかかったのだけど、これはPythonを使う上で必須ではないようでセーフ
あれは結局言語仕様がおかしいんだよな Cで書く人はみんなargvを憎んでいる
>>286 この流れで揚げ足取れるのが凄いわ
どっこいどっこいの略とまで書かないと理解できないとも思わなかった
ごめんね
>>291 なぜ「どっこい」のレスで切らんかったの?
あそこで切ったら、ある意味勝ちだったのに
そういうとこだよね
>>288 > **argvがわからないのでコマンドライン引数を使うアプリが作れず挫折
それchar *argv[ ]って書けば多少理解し易い
要するに文字列(char *)の配列だから
>>292 なぜ?勝ち負けを求めてるわけじゃないから
もしかしてレスにいちいち勝ちを求めてるの?疲れない?
プログラミングのハードルが下がったなと実感する瞬間である
>>294 つまらないレスをする人って
それがわからないからつまらないレスをする訳だが
その人がレスを続けたところで当然内容はつまらない
せっかくそこそこ面白いのを出したんだから
面白い状態で終わらせとけばいいのにと思って
「やっぱりつまらないよねー」で終わっちゃったよね
#include <stdio.h>をおまじないって説明すると馬鹿にされるけどさ Cの入門書なんかで#include <stdio.h>を「今はとりあえず、おまじないと思っておいてください」みたいな説明してるとマニアックな人から糞本扱いされるけど、じゃどんな説明するのが正解なんだろうか。 hello worldを書いてる初心者に、プロトタイプとかマクロとかから説明するのだろうか。 なぜプロトタイプみたいのが必要かって言うと、printf()は分割コンパイルでライブラリというものに入っていて……とか初心者が納得のいくまで説明をしなきゃならないのか。 「stdio.hというファイルにprintf()を使うための情報が入っているのでそれを取り込む命令です。詳しいことはおいおいわかりす」って簡単に説明するなら「今はおまじないとおもっていてください」と大差ないし。 バシッと納得のいく説明の例を教えてほしい。
>>298 外部の読み込むのがinclude
stdio.hを読み込むとprintfのような基本的な関数が使えるようになる
くらいの説明なら初心者でも分かるんじゃない
実際にはプロトタイピングしているだけなので、includeしなくてもexternしてしまえば使える
>>298 糞本扱いする人が糞だということにすれば問題なし
バリデーション管理しやすくかつクラスを普通の関数のように扱いたいのですがどうしたら良いでしょか・・
用途はありませんが試しに足し算するだけのクラスを実装してみました
from typing import Optional
from pydantic import BaseModel
class _Sum(BaseModel):
a: int
b: int
def sum(self):
return self.a+self.b
#sum()を使うまでに段階を踏んでしまう
Sum=_Sum(a=3,b=3)
print(Sum.sum())
#sum(2,3)のように使いたい
#やりたいことは↓こんな感じで、自分で作ってみました
https://ideone.com/mQQPoc 後々に”偶数しかダメ”とかsum09自体を拡張したりとかしたいです
>>306 _Sumクラスのインスタンス生成時に型とかチェックしたい内容だけ渡すようにして、sumの中でそのチェックをするとか
「普通の関数だと拡張性が弱まる」の意味がわからん 普通の関数のようにクラスのインスタンス化と特定のメソッドの呼び出しを実行できたとして、 そのインスタンスに後でアクセスする方法はないのだから関数ではなくクラスであることに何の意味もない 引数をバリデーションしたいだけなら、普通に引数に渡された値が条件を満たしていなければエラーを投げる関数を作って関数の先頭で普通に呼べばよい アノテーションとタイプ数変わらないだろ
あと、単に関数の処理としてクラスに実装された機能を利用したいということであれば、関数の中でそのクラスのインスタンスを作って目当てのメソッドを呼べばいいだけだ トリッキーな仕掛けなど何一つとして必要ない
逆説だけど同一だからって関数内で関数呼ぶならデコレータの存在意義ないやん コードの理解を和らげるためにあるんで
>>308 ちなみに>エラーを投げる関数を作って 的なのを実装するとどういう感じになりますか? 少し前に自分でやったのはかなり簡略しますがこんな感じになりました def must_be_int(n): if type(n) is not int: raise TypeError(f"type error:'{n}' is not int") return n def sum(a:int,b:int) -> int: return must_be_int(a)+must_be_int(b) print( sum(2,3) ) print( sum(2,"3") ) ただこれだとsum関数のロジック 途中でした ただこれだとsum関数のロジック内にチェックする関数が混在してくるので分けたいなと思い must_be_int(a) must_be_int(b) return a+b にしたりと、なんかしっくりこなくて・・
ようは、 def sum(a:int,b:int) --> int: このアノテーションだけでint以外の入ってきたらエラー吐いてくれればいいのに・・ みたいな
>>308 > そのインスタンスに後でアクセスする方法はないのだから
これどういう意味なの?
インスタンスに後でアクセスする方法あると思うのだけど
>>306 https://ideone.com/LoiejS class sum(object):
def __call__(self, a, b):
self.a, self.b = a, b
return self.a + self.b
print(sum()(2, 3))
>>306 普通に関数で実装してバリデーション用のデコレータ作れば?
def must_be_int(func):
__def _validate(*args):
____assert all(isinstance(x, int) for x in args), "all arguments must be integer"
____return func(*args)
__return _validate
def must_be_even(func):
__def _validate(*args):
__assert all(x % 2 == 0 for x in args), "all arguments must be even number"
____return func(*args)
__return _validate
@must_be_even
@must_be_int
def _sum(a, b):
__return a+b
print(_sum(2, 2))
print(_sum(1, 3)) # error
print(_sum(1.5, 2.5)) # error
>>316 ,317
ありがとうございます
実は__call__つかった方も関数の方(>306のコメントアウトに書いてあるように(ただ、args[1:]の部分が合わないのでバリデーションの部分は意図的に省いて書いてます))も
どちらもやっていたのですが諦めていました
ひとつは、(おま環なのかエディタの設定なのか)今度はアノテーションの方がなぜかデコレーターの方が優先されちゃって表示されて諦めたのと
もうひとつは、今回のような試しにやってみた足し算のみの用途なしな機能だけではない場合、
関数の方だと後々に拡張したいってなったときに難しそうだなと思い諦めました
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
止まってる車に60キロで走ってきた車がぶつかったら、中の人が受ける衝撃ってどっちの車も同じなんだっけ?
>>320 同じではない
軽自動車とトレーラーなんか考えてみたらわかるけど、作用反作用の法則で同じ力が軽自動車とトレーラーにかかるけど、軽自動車は潰された後完全にトレーラーに張り付く形で進み、トレーラーはわずかにしか減速しない
よって中の人の衝撃は全然違う
塑性変形で弾性衝突じゃないからそうなると思うかもしれないが、完全弾性衝突の場合だと軽い方が思いっきり跳ね返るだけね。よく跳ねるボールの中にいる人と、地下室の中にいる(地球という大きいボールのなかにいる)人を考えてもいいかも
要は同じ運動量が交換されるが、同じ運動量でも質量が違えば加速度は違うということだね
pythonのバージョン管理ってアナコンダがいいの? 俺ドッカーしか知らんかったからずっとドッカーのこと調べてたんだが
あとpythonの開発環境って3.8が多いみたいなんだけど理由あるの?
>>325 ケースバイケースかなぁ
機械学習やるならanacondaはオススメだよ
クラウド連携はanacondaは偶にトラブルになる
環境隔離したいならdockerは良いけど別にdockerでなくてもよい
最近はpipenvやpoetryでディレクトリごとに環境を分離してもいいかな
いろいろ増えすぎて初心者にはコレっていうのが難しい
そんなときは公式のPythonに戻る
>>326 そういえば何か作るときは3.8を使うことが多いなぁ
特に理由はないけど、3.9以降の使いたい機能は様子見
あとRedhat系列だと3.9以降をインストールするのが面倒くさいのもある
3.8ならSCL使えばさっくりインストールされる
Anaconda使えばいいけどあれはあれでバイナリごとインストールすることになるからなんだかなぁ
pythonは言語仕様は簡単だけど実行環境の管理が完全に終わってるよね linuxの知識ないとサーバーサイドでまず使いこなせない 下手したら環境ぶっ壊して「何もしてないのに壊れた」状態が生まれる
>>327-330 大変勉強になりました
お三方にいただいたアドバイスをもとに
これから検討いたします!
PythonってVisual Studio のCodeの方じゃなくてCoreの方にも入ってるよね いつもVB.NetやC#で使ってるからそっち使ってるわ。
デコレータって関数受けて関数返せばデコレータと言っていいの? それとも機能の追加が出来れば関数返さなくてもいいの? デコレータの例が全部ラップしてるから関数返すものをデコレータっていうのかと思ったけど、Pythonの構文的には機能の追加が要件ぽくてよくわからん
>>338 def deco (fn):
print("Good")
fn()
print("Good")
↑の関数は高階関数と言えるし、デコレータとも言える?
>>339 デコレータとは、@decoの形で使用されることを想定している関数
ただそれだけのこと
>>340 def deco (fn):
print("Good")
fn()
print("Good")
と↑をラップした↓
def outer (fn):
def deco ():
print("Good")
fn()
print("Good")
return deco
だとそれぞれどういうメリットデメリットが想定できる?
この程度だったら何も変わらない?
>>341 前者はデコレータとして使用できない
後者は使用できる
それだけのこと
>>342 前者もデコレータとして使えるよ?
@decoで使うってことだよね?
>>345 自分のわかっていないところがわかりました
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?
main.pyのソースを見たときに
import ○○ #upm package(パッケージ名)
の行のコメントアウト外すと消えるかも
>>348 ワークマンの売上高は10年で2.6倍 好調の背景に何があるのか www.itmedia.co.jp/business/articles/2301/01/news011.html ワークマンpythonらしいぞ まーそうなるわな
スレチだけど... > KPIを達成しても売り上げが伸びない場合、社員ではなく経営の責任ということになります。 > 『会社がやれと言った内容がそもそも間違っていたんだね』ということで まあインタビュー記事だからいくつか盛ってるとは思うけどこれがそれなりでも浸透してるなら確かに強いと思うわ
ちょっと前のすれにtypecheckerが出てたけど、
仕事で静的型付けって意識してる?
Dropboxが静的型付け使って開発してるぜ~っていう記事を
ちょうど見かけたもんで。
https://navi.dropbox.jp/our-journey-to-type-checking-4-million-lines-of-python 実際には型が動的で有り難いことは殆どなくて、大抵は決まったものしか入らない だからこそ型なんか書かなくていい、という思想な気がする
>>353 typing hint(+dats class) 、mypyももちろんオン。会社など複数人が関わるプロジェクトね。一人なら好きにやれば良い
Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか??
ChatGPTで答えさせて3つ出したコードのうちwmic使ったものを手直ししてみた デコードをutf-8だったのをcp932にしたり文字列の整形あたりを改変しなきゃだったけどこういうとき結構良い答え持ってくる Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか?? Windowsで「アプリと機能」の一覧を取得するには、次のような方法があります。 wmic コマンドを使用する Windows Management Instrumentation (WMI) を使用する PowerShell を使用する 以下は、いずれの方法もPythonから実行するための例を示します。 import subprocess result = subprocess.run(['wmic', 'product', 'get', 'name'], stdout=subprocess.PIPE) output = result.stdout.decode('cp932') applications = [line.strip() for line in output.split('\n')] for app in applications: print(app)
>>359 サンプルが少ないからほぼ直コピペなんだろうな
cmdを起動せずにリストを渡すのと、cmdにコマンドの文字列渡すやり方があるよね
文字列渡すパターンは危険だからね チェックをちゃんとしないと予期せぬコマンドが実行される shell=Trueしてると特にやばい
時系列はよく知らんけど、リストで渡す方法がまずあって、 不便だからと文字列の方法が追加されたんじゃないの?
shlex.split("date +%a") # -> ["date", "+%a"] run に渡すリストはこうやって作ると便利だよ (´・ω・`)
ModuleNotFoundError: No module named 'xml.etree'; 'xml' is not a package ElementTreeでXMLを作成すると上のエラーがどうしても出てしまいます。 ElementTree以外にXMLがいじれるのって何がいいですか? BeautifulSoupですか?
xml.pyかxmlなディレクトリがあるんちゃうか ググっても同じこと書いてる記事多数
>>374 レスありがとうです。その記事を見て確認したんですけど特に問題はなく、それ以外の解決法も見当たらずでお手上げ状態です
エラーが出ますは自力で解決しろとしか ただの間違いなんだから
誰もやらないと思うけど こんな感じのエスケープだと、失敗してしまう (コマンドプロンプトやshell=Trueだと、成功する) C:¥"Program Files"¥Python¥python.exe -V
そりゃ " " を剥ぎ取るとかは c m d.exe がやってるんだからそれを食わせたいなら同じ事をしてやらないと失敗するのは当たり前
文字列で渡すときはWinAPIのCreateProcessを見てね って、書いてあったわ 実行ファイルの解釈から違うとは思わなかった すまん
ファイル名の取得という基礎の基礎が ようやく安定したレベルですまない。 import glob files = glob.glob("./images/**", recursive=True) print("recursive", files) フォルダ直下にjpgファイル21個のみ入っている場合、結果が、 recursive [1.jpg 2,jpg,〜,21.jpg] と横長に表示されると思う。 これをExcelに貼り付けたときも同じかな。 これを縦に表示させることってできる? recursive[ 1.jpg, 2.jpg, | 21.jpg] みたいなイメージで結果を出力したい。 そもそもできることなのか分からないけど、 素直にWordに貼り付けて、 カンマを特殊文字で改行に置き換えた方がはやいかな?
globはいろいろ謎だよな 歴史的な何かとの互換性で微妙に使いにくい
とりあえず、import glob はやらなくて、 from pathlib import Path p = Path("./") for file in [str(x) for x in p.glob("*")]: print(file) みたいに使ってるけど、これでもしっくり来ない
>>381 ありがとう。
一見すると、単に","が"n"に変わっただけのように見えるけど、
Excelに貼り付けたときの挙動がまったく異なるんだね。
しかし検索してもアフィみたいなサイトしかなくて大変だな
入門書探してみるノシ
失礼。 print("\n".join(files)) こういうことね。
定期的に tuple[str, tuple[int200個]] #key: valueです を1万件取得して 既存の辞書に追加、更新していきます このときkeyがなければkey, valueを登録するのはいいとして keyが既存のときのvalueの更新はどうするのが常道ですか? 高速なのがいいです。または不要な書き換えがないほうがいいです valueに差異があれば書き換え がいいのか、問答無用で全部更新しちゃうべきなのか…
理解も進むしベンチとるのがいいよ すでに新しいタプルを構築してるなら問答無用でいいと思うけどね キーの確認や差異がないかしらべるコストもゼロじゃないし
データベースで言う、upsert だろ。 データが無ければinsert、有ればupdate 基本中の基本
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
perlから来るとkeyが既にあるか無いか気にしないといけないdictがうざくて仕方ない
dictを継承したmydict作って、setitemをオーバーライドすればいいんじゃない?なんかその辺のパッケージにありそうだけど
autovivificationは便利だけどどう考えても邪悪なのでpythonには似合わないとは思う 多次元のdictとか何も考えずに作れて楽なのに
perlから来たからdefaultdictを知らないってことか
defaultdictとか関係なくないか? 単にfoo[key] = valueってしてけばいいだけの話じゃないの?
文章に単語が何回登場したかカウントする みたいなことをしたい時に、 if word in count: count[word] += 1 else: count[word] = 1 みたいに毎回判定が入る perlなら問答無用に $count[$word] += 1; で済んでしまう
で、この場合はdefaultdictで解決できるのだけれど、 そうも行かないケースがままある
俺はこっち派 count[word] = count.get(word, 0)+1
>>397 質問とは関係ない話だったのか
defaultdictをわざわざ使わなきゃいけないのは面倒だとは思うがパフォーマンスに影響するところだから違うものとして分ける考え方も理解できる
>>397 いいんじゃないの
上に書いてる奴は見れば一瞬で理解できる
perlの糞文法の轍を踏まず、perl屋さんが億劫に感じる方向でおながいしまつ
そりゃ言語が違うんだから当たり前だろ そんなにperlが好きなら一生perl浸かってろ
Perlはこそっと使え 決して異教徒の目に触れさせるな
初期化してない変数をいきなり参照したら0で構わないと思うんだけどな 99%はバグってるんじゃなくて初期化を忘れただけなんだから
バグの原因を初期化忘れだけに絞れるなら恩恵としては大きいな
>>406 > 99%はバグってるんじゃなくて初期化を忘れただけなんだから
根拠の無い妄想はブログとかでやってくれ
関数内の0や""で初期化してる処理を、スコープ先頭に移して挙動が変わるかどうか 変わらないならそれは省略可能だった初期化
>>406 そこはNoneでいいだろ。つか、初期化してなきゃ型も決まらないから0にもしようがない。
だからこその動的型付けで、0だったことにする 文字列として参照されてたら""だったことにする dictとして参照されてたら{}だったことにする
>>412 それ別のバグ生み出しそう
型の違いって致命的じゃね
>>412 数値として参照されたか文字列として参照されたかってどう判断するつもり?
perlはそのへんを、お前は人工知能か何かなのかという精度で判定してくれてた 普通に考えると確定しないようなケースでも何故か正解する 失敗すると発見不可能なバグになるから封印したんだろうな
rubyキチガイといいこいつといい多言語は~って奴は聞いてもないこと話してきてウザい
そりゃperlと同じようなコンテキストの考え方を導入しなきゃ無理だな。 少なくとも、数値の加算と文字列の連結に同じ'+'演算子を使ってるpythonは そのへん全部ひっくり返さないとならない。
Option Explicit On なんてやったら阿鼻叫喚か
>>418 両方初期化してない変数ならどうするんだ?
a = b + c でbもcも未初期化なら、aも未初期化で何も困らない
初期化すべきなのに忘れていて 忘れたものを忘れたまま使おうという発想が理解できない そんなコードもコーダーも使い物にならない
>>422 そりゃ結局None。
変数の初期化はこの際関係なくて None + int -> int で None + str -> str になってほしいってことなんだろ。
>>424 左辺の型が決まらないことには呼びようがないんじゃね?
いい加減perlおぢさんウザイな 荒らしてるという自覚は無いんだろうな
暗黙より明示のルールに反してるから可能だとしてもやらないだろう 変数を参照するだけか書き換えもするかで名前空間が変わるのは結構暗黙的だと思うけど、 それは利便性が優先した 初期化を省略するのはそんなに利便性が無い
利便性が無いというかタイプミスを検出できなくなるから
タイプミスしたら使ってない変数が現れるんだから、それは簡単に検出できる
str型限定だけど、型を自動的に変更してくれるというのはちょっとありがたいかも format()やf文字列だと、変数をそのまま突っ込めばいいので楽ちん
自動変換は悪さにしか使われないという印象だからいらないかな perlみたいに言語がよしなにやってくれるならそれで良いけど ユーザー定義の暗黙の型変換は間違いなく地獄
C++の変換コンストラクタとかな。 自分でそれを意図して書く人にとってはそのときは楽だろうけど、後から読む人が大変。
JSにおけるTSみたいなのってPythonでは作られないのかな
Pythonには型アノテーションがあるから不要 TypeScriptの超柔軟な型付けを想像してるとガッカリするが
>>434 その使ってない変数が初期化されてて使えるといいって話が
>>406 でしょ
初期化忘れよりタイプミスの方が遙かに多いだろw
変数名や関数名をタイプするのなんか最初の1回だけだしな
タイプしないならどうするの? まさかマウスポインタ操作するの?
マジで、変数名はコピペしかしない習慣にした方がいいよ あるいは自動入力 アニメに出てくるハッカーじゃないんだから、キーボード叩きまくるスタイルは良くない
コピペよりインテリセンス?オートコンプリート?をよく使う
読者アンケートの結果ごときで 会員登録で続きをご覧いただけますと来たか
そういうのって登録するとわんさかスパムメールが届くことになる
Pythonはレキシカルスコープ採用してるって出てくるけど変数のレキシカルスコープはまた違うの?
>>445 使ってない変数が現れたら簡単に検出できるんでしょ?
ならコピペする必要なくない?
>>453 Nim良さそうだけど全然流行ってる感じないね
そもそもPythonがライトユーザー向けに適合し過ぎてて進化の必要ないのかもね
pythonを-cオプションでワンラインフィルタ作るときって便利なやり方ない? これ相当のものをワンラインで書けるようにしたい def inputs(): while True: try: yield input() except EOFError: return for x in inputs(): print(x.upper()) EOFErrorの無視は終了コードが失敗になるから不可 sys.stdin.read().split("\n")利用はstdinのバッファリングのオンオフを切り替えられないから不可
python -uc 'import sys; sys.stdout.writelines((print(x) or x.upper()) for x in sys.stdin)' これだと行バッファ不可避だからsys.stdin.read(n)で書かんとか
多用するならPerlの-pe/-ne相当になるモジュール用意してフィルタだけ書くスタイル
M1 Macでfor文を勉強中なんだけど、 names = ['A', 'B', 'C'] for name in names: print(name +'さん') これをターミナルで実行しても 「・・・」 と表示されるだけで何の反応もない M1だから、でしょうか。 あとでWindowsでも試してみる
ここに書けるなら、Sandbox にも書けるだろう
>>462 ああそうか 単にフィルタ部だけ受け取ってexecしてしまえば楽だったか
ありがとう
特定のフォルダを5分おきに監視して、新たに作成されたファイル名を SQLiteテーブルに登録していく…的なことをやりたい 単なるループで作るとCPU食って固まってしまうので非同期処理をする 必要があると思うんだけど、テンプレみたいなコードどっかにないですかね asyncとかドキュメント見ても難しくて理解できないので…
Ruby で、1行ずつ読み込んで処理する、1-liner のフィルタは、 ls | ruby -lne 'print $_.upcase' ARGF を1行ずつ読み込んで、変数$_ に格納する。 ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル ruby -lne 'print $_.upcase' a.txt b.txt
>>468 それ非同期処理は関係なくね?
というかIOを非同期にしてスレッドが待たなくなったらよけいにCPUを回すことになると思うが。
一瞬でもいいからsleepを入れておけばOSがいい感じにやってくれる それせずに固まってしまうフリーソフト多すぎ 例えば、JaneStyle
>>474 うーん実は非同期という概念すら理解できていないかも知れない
>>468 のループを裏で動かしつつWindowsやアプリも普通に操作したいって話です
>>477 マジっすか
sleepで5分待たせるだけでいいなら簡単だからやってみます
固まってしまうのは メインスレッドで重い処理したり止めたりして メッセージを処理しないからかな
単純にメモリ内で巨大な配列の計算をしたいとかで、 人間が判るほど時間のかかる処理をする時に、 ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、 他のアプリに影響せずに処理できる win10になってタスクをより奪いやすくなってる気がする
sleepしたスレッドは他の処理はできないけど 他のスレッド・プロセスは関係ない
sleep(1)を300回回して終了フラグチェックとかにしても良い
>>468 5分おきと言わず、ファイルシステム変更イベントを受け取るイベントドリブンにした方がいいと思う
OSによって必要なコマンドやAPIは違うと思うけど
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
Windows限定でいいなら、.netのAPI FileSystemWatcherが使えると思う
>>473 が書いてるwatchdogが定番ツールで
OSごとの差異を吸収してくれるよ
Linuxならinotify
WindowsならReadDirectoryChangesW(FileSystemWatcherがラップしてるWin32API)
macOSならFSEvent
watchdogと言われると、モニタするんじゃなくて、止まってたらリセットするイメージが強いけど
常駐フォルダ監視、なにかあったらどうにかする 処理はもう脳死でwatchdog一択というくらい定番
どう実装してもいいけど 増えて消えたとかの一瞬も捉えたいならイベントドリブンで監視する必要がある
>>480 > ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
いつの時代の人なんだよw
他のアプリに影響したくないなら優先度下げろよ...
5分sleep すると、プロセスを殺せない・生き続けるから、 その分だけ、メモリなどのリソースが使えなくなるので損 cron みたいに、その時だけ起動して、 処理が終わったら、プロセスを終了するのが良い それかRuby on Rails, npm/yarn などのagile 開発でよく使う、webpack-dev-server みたいに、 フォルダをwatch して、ファイルが変更されたら、rebuild するとか
>>491 優先順位下げるとしても無限ループにsleepを入れない実装は時代とは無関係かな
>>495 何のために入れる必要あるのか説明してみ
インスタンスメソッドをインスタンスメソッドの中で定義したいんだけどみんなどうやってるの AIに聞いたらこんな感じだったけど class Hoge: def __init__(self): self.new_method=None def hoge1(self): def _method(): print("hoge method1") setattr(self,"new_method",_method) def hoge2(self): def _method(): print("hoge method2") setattr(self,"new_method",_method) h=Hoge() h.hoge1() h.new_method() h.hoge2() h.new_method()
VBで言うループ内のDoEvents()だよ OSのメッセージへの応答が止まり続けると応答なしになる だからメッセージに応答させるためにsleepを入れる CPUの優先度を上げ下げしようがメッセージへの応答は各アプリケーションに依存する だからループの時間が長くなればどのみちメッセージの処理ができず応答なしになる
>>496 何が言いたいのか知らんけど、CPU張り付きによるキーボード等の割り込みが阻害されるためだろう
古いとか言われて短い無限ループにsleep入れないプログラマいたら驚くかな
一人でプログラミングしてるならまだしも、第三者が使う可能性がある状況でその実装は恐い
>>498 メッセージループの話はまた別の話
>>499 プリエンプティブマルチタスク でググってこいよ...
未だにこんなロートルがいることに驚くわ
>>500 優先度変更でメッセージループをどうにかできるの?
>>502 メッセージループをどうにかできるなんて書いてないんだけど、頭大丈夫?
>>501-502 見当外れだしsleepのひとも含め連休は大量ですね
実際問題として、処理奪われて操作に支障が出るソフトは普通にある win10ではそういう問題はOSでは解決できない
どれだけググってもビジュアルスタジオにtweepyインストールできなくて だれかおしえろください ターミナルでpip打ち込むと認識されないとエラーで弾かれる
>>503 なら優先度だけあげても他の対策がいることになるだろ?
解決しないじゃん
今時の他コア高性能CPUであれば100%張り付きで懸念するべきのはバッテリー残量と発熱くらいで、 一瞬でも100%未満になるコアが1つあればOSのタスクスイッチングには影響はほとんどないよ GetMessage,PeekMessage,DispatchMessageをブロックしないことだけ気をつければ、あとは思う存分CPUをぶん回してもいいよ 100.00%まできっちり回せ
>>505 それはそのソフトのつくりがタコなだけ
>>507 VBのDoEventの話なんてしてないから他所でやってくれ
>>503 >>491 優先度でメッセージループをどうにもできない以上、他のアプリに出る影響は排除できないじゃん
影響出したくないからループ中にsleepって話の中で優先度変えろって話出したの誰だよw
つまり多コアCPUであっても、各プロセスは一つだけしか使ってはいけない
>>510 タコなソフトにならない解決策の話なのに優先度なんて頓珍漢なこと言い続けてる自覚ねーのな
DoEvents()も書けない、コピペすらできないみたいだし、
何のためのsleepか説明されても理解できそうにないな
ここをこうしたら、こういう時にこうなるよ って話をしないと、伝わらないと思います
ID:QuJ5Wt8K0 で抽出すると、ほんの一言二言書いて反応をうかがってるだけなんだよな 多分何も判ってなくて、総叩き状態を楽しんでる
>>497 インスタンスメソッドの中でインスタンスメソッドを定義したとして、使う側はどうしたいんだよ
h.hoge() を読んだら h.new_method() を使えるようになる仕様でいいのか?
DoEvents、自アプリのメッセージを1つ実行する sleep、CPUリソースを一時的に返却する(自アプリのメッセージは処理できない) sleepしたところで自アプリのメッセージを処理しないと自アプリは固まってしまう
>>511 メッセージループを処理するスレッド(たいていメインスレッド)と
>>480 が言うような重い処理のスレッド(ワーカースレッド)を分ければいいだけ
ってかまともなGUIアプリなら半ば常識だぞ
当たり前だけどワーカースレッドにsleepなんて要らん
>>513 > 何のためのsleepか説明されても理解できそうにないな
そう言うのは説明してから言わないとね
>>516 > 多分何も判ってなくて、総叩き状態を楽しんでる
分かってないのはお前な
ちゃんと プリエンプティブマルチタスク でググれって書いてあるだろ?
ググっても理解出来なかったのか?w
>>518 DoEventsなんて言ってる奴はVBAあたりしか使えないんだと思う
DoEventsとsleepの違いすら理解できてないんだろうな
ググれと言わずに、ここで簡潔に説明することが求められています そんなに難しいことじゃないでしょうに
>>519 優先度の話はどこがどう関係してくるの?
>>521 難しくないならあんたが説明してもいいんだよ?w
>>522 話の流れも読めないのか?
>>491 > 他のアプリに影響したくないなら優先度下げろよ...
ソフトのつくりがタコとか書いちゃった時点でもう詰んでるんだよ どう言い繕っても無駄なので諦めてID変わるのを待ってろ
>>524 だから プリエンプティブマルチタスク でググればいいだろ
まああんたはわかってるだろうけど簡単に言えばタスクの切り替えはタイマーでやってるからsleepなんか入れなくてもタスクは切り替わる
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
なんて言うのはWindows 3.1とかMac OS 9時代のノウハウや
>>525 タコ乙w
現にwin10でも上手く行っとらんだろ 事実から目を反らすなよw
>>517 例えば犬の基本情報を取得したい時に
Symbols={"INU":{"symbol":"犬","voice":"ワン"}}
print(Symbols["INU"])
じゃなくて
print(Symbols.INU)
みたいな参照の仕方がしたかった
かつ返ってくるのはインスタンス、みたいな
クラスをインスタンス化するときってSymbols()でカッコついちゃうのでそれ無くしたいというか・・
なので単純に
https://ideone.com/QQs1cM てやってみたけどinu_action,neko_actionのとこが見た目がしっくりこなくて
あれから調べてみたらやりたいのは内部クラスだったかもしれないのでそれで書いてみたら
https://ideone.com/E7c3gz こうなって、しっくりきたものの使い方合ってるのかがわからない
>>526 Windows3.1はシングルタスクだよね
sleepしても他アプリに処理が移らなそう
処理時間が無駄に長引くだけ
昔過ぎて分からない
間違ってるかも
>>527 具体的に上手くいってないと言うソフト名出してみ
>>531 あ、いやすまん
もっと基本的なところで勘違いしてた
Windows3.1ってメインのウィンドウ以外動かないかと思ってた
3.1のデモ展示では時計アプリを複数起動して 「ほら、マルチタスクですよ~」ってやってた
>>533 なるほどサンクス!
完全に勘違いしてた
>>528 直接attrにアクセスするような書き方するなら__getattribute__を改造するのが手っ取り早そう
https://wandbox.org/permlink/8kyCCbavwFRBlV3R 直接dictを継承したSymbolsクラス作った方が楽そうと
後になって気づいたが
プリエンプティブに対応するパッチを書いたことあるがロートルとか言われたのがショックだわ モバイル全盛のこの時代にCPU100%の張り付きプログラムを推奨することの視野の狭さに驚く 何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ 組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる
>>536 逆にuComとかPICだとメインはfor(;;)で最低優先度の処理をsleepなしでゆるゆる回して、
ほとんどの処理を割り込みで動かすからsleepの出番はなくなっちゃうよね
動かす環境やOSによっても色々やり方は変わると思います
プリエンプティブマルチタスクという言葉が存在する というところを出発点にしてるから、万能だと思っちゃってるんだろうな アプリ同士でならうまく行くんだろうけど、 プリエンプティブの仕組みを作ってるOSそのものとは競合する OSもアプリも一つのコアの上で動くプログラムでしかない
最初のそんな負荷でもない一定周期監視の話から固まる→CPU負荷とかUIブロックの話とかになってるから UIブロッキングを差し置いてsleepだけ話題にされるともにょるのはわからんでもない
>>541 優先度下げれば解決するって誰かが言ってた
各プロセスが協調的に動いているなら、優先度は意味があるかも知れないですね
>>542 流れ見ると負荷の話に対する優先度だからUIスレッドが差し置かれているので結局もにょる
処理するにあたり、CPU性能は十分にあるんですよね?
>>535 なるほど
これならもし犬にマルチーズとかダックスフンドを追加したくなったとき
犬や猫鶏をinu.py,neko.py,tori.pyとかにそれぞれ分離しても管理しやすそう
ありがとう
組み込み向けとかのOSだといまだにそういうアーキテクチャなんじゃないの? 確かタイマー割り込みしたりとかいろいろ面倒だった気がするし 現代的なOSでloopにsleep入れるとか無意味
せっかくなのでGPT3に聞いてdictを継承して属性参照できるクラスを書いてみた
https://ideone.com/6msm1f 聞いたのは、
「pythonでdictを継承したクラスの例を書いて」のみなんだが、
わざわざ聞くからには属性参照もしたいってことだろ?
と言わんばかりにその部分も補完したコード出してきてちょっとびびった・・
Linuxを含めてUnix系OSならselect関数が使える ソケット含めてI/Oを監視しプロセスに通知してくれる Pythonでも、もちろん使える
AIって結局翻訳機みたいなもんで翻訳機に最適化した文章作らないとミスるから仕事で使えないよな
>>550 プログラミングよりそのスキル身につける方が早い時代は来るかも
https://noauto-nolife.com/post/django-ajax-long-polling/ のcontent.html内{% url 'bbs:single' topic.id %}
って何を指してるかわかりますか?
views.pyかurls.pyのurlpatternsの記載のどこかが原因だとは思うんですけど。
>>552 です
NoReverseMatchエラーになります。
singleなんてどこにも記載してないのでそれはそうなんでしょうが
>>536 > 何度も言うがsleepを入れるのは時代とか関係なくそれはアーキテクチャと利用ケースによるものだ
だからなんのためにsleep入れてるんだよ
今でもWin3.1とか組込でノンプリエンティティブOS使ってるから時代に関係ないとでも言うのか?
> 組み込み分野では無限ループでトリガ待ちするのに無限ループで止めるのなんて20年以上前からやってる
話しそらそうと必死すぎw
>>541 だからUIと重い処理はスレッド分けろって書いてあるだろ
プアな環境でCPUがアップアップならワーカースレッドの優先度下げろ
>>540 カーネルスレッドの仕組みも知らないなら黙ってた方がいいぞ...
スレッドを分けろ、を起点にせずに優先度の話から入った理由が気になる
>>560 優先度の話はこれが最初か
>>491 何もおかしくない気がするが
スレッド分けたところで優先度が高かったら、他のアプリがカクカクになるぞ
確かにUIスレッドとワーカーを分ければUIが固まることは無い 実際のところ同一優先度でもタイムスライスしてくれるのでUIはなんとか動くし、優先度下げればさらによく動く ただ結局複数プロセスで動くOSである以上処理負荷をどこまでかけるかっていうのはそのプロセスのマナーになる 他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない 通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする
>>560 おれの最初のレスは
>>480 に対するレスだから
>>562 > 他プロセスがより低い優先度のワーカー動かしてるとそっちがあからさまに動かなくなるのでsleep入れるのは間違ってはいない
その低い優先度のワーカースレッドがないと単に無駄なsleepしてるだけのタコソフトになるわけだがw
普通により低い優先度にしなよ...
> 通常よりちょっと下げるだけであればUIは普通に動くが他プロセスの通信や動画がガクガクになったりする
なんで通信や動画再生の優先度を下げるんだよ...
RTOSのように優先度が絶対的なら話は単純だけど デスクトップOSは忖度があるからsleepいれるとか場当たり的な作法を 正解と勘違いするのもわからんでもないかな(ないけど)
>>564 優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
> なんで通信や動画再生の優先度を下げるんだよ...
おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。
>>566 > 優先度を決めてぶん回すって言うのは他の優先度低いやつを気にしないって宣言でもある
下げてる優先度よりさらに低い優先度のタスクを気にする必要あるの?
そう言うのはCPUが空いてるなら動けばいいっていうタスクじゃないの?
あと大抵のデスクトップOSだと同一優先度ならラウンドロビンになるから全く動かなくなるとかないし
> おっとごめん。下げるっていうのは自プロセスのワーカの話ね。影響を受けるほうはchromeブラウザの動画再生とかって話。
ワーカー下げてるのに動画再生がカクカクするならCPU以外のリソースの影響でしょ
それってsleep入れても改善しなくね?
元の話に戻すと、たかだかファイル更新をウォッチするのにCPUが100%に張り付くプログラムが正解だって言われて納得できる人は少ないだろう OSの深いところまで知らなくても利用できるようにwatchdogなどのパッケージが使うのが正解なんだと思うよ
元の話は > 特定のフォルダを5分おきに監視して、新たに作成されたファイル名を SQLiteテーブルに登録していく…的なことをやりたい なのでsleepで5分待って処理するなり(まあ処理時間分ずれるから5分毎に処理したいならそれなりの処置が要るけど)ファイル監視APIなりwatchdogみたいなライブラリ使うなりすればいいだけの話でCPU100%なんて話は出てない CPU 100%の話は > 単純にメモリ内で巨大な配列の計算をしたいとかで、 > 人間が判るほど時間のかかる処理をする時に、 > ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、 > 他のアプリに影響せずに処理できる とか昔のノウハウでドヤった老害がいただけの話
新たに作られたファイルを記録するだけなら、数十分間隔でチェックしても間に合いそう
話が逸れまくったなw 本当おじさんは関係ない話で荒らすのが好きだな
Python の話でもないし プログラム板の皆さんに裁定してもらえ
ここの話題にしたいなら、せめてPythonのコードに落とすところ迄やって欲しい
threadingモジュールにはthere are no prioritiesって書かれてるんだが
>>574 psutilでいける
Windowsでも出来た
DoEvent しないと何も動かない。 基本的に、プログレスバーで処理の進捗状況も表示できない。 処理にCPU を使われるから、描画できない スクレイピングでも、10秒ぐらいsleep しないと、ajax のページの内容が取れない。 他のプロセスに、CPUを与えないと通信できない
あぁ、プロセスじゃなくてスレッドか 公式のウェブサイトにはないと優先度はないと書かれているら自前で実装かね
>>485 > 30代Pythonクソチョン男は強姦魔の犯罪者!
> あなたの近くにいます!
> 父母と祖父母の戸籍謄本を提出させましょう!
ホントそれ
>>574 やったことはないけど例えばWindowsならnative_idでスレッドid取得してctypes経由でSetThreadPriority呼ぶとかかなぁ
pythonでJRAスクレーピングしてるが、激アクセス(数万ページ連続とか)すると怒られるかな
たぶん刻々と変わるオッズとかを取得してるんじゃないか?
今住んでるとこ岡崎なんだよなー だからスクレイピングすると予告なしに逮捕される
静的なページなら一旦ファイルにダウンロードしてから そのファイルをスクレイピングすれば問題なし
これまで自作プログラムの設定情報は、iniファイルに出力していたのですが、 これからはレジストリで管理したいと思っています。 iniファイルだと増えすぎてしまうので、、、 新たなキーをどこかに作り管理たいのですが、レジストリのどこに作れば良いとかルールがあれば教えて下さい。
>>587 このスレじゃ無理
こっちのスレ↓で質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
http://2chb.net/r/tech/1608837867/ watchdogを使いたいだけなのに、環境構築が出来ない。
winregモジュールの使い方ならまだしもレジストリの使い方は流石にここではないぞ
レジストリよりiniのほうが遥かにいいんじゃね?と思うのは俺だけだろうか
iniに対するレジストリのメリットは、複数ユーザで使っても混ざらない点だな
shellがわかってないやつかな? linux環境ならCtrl-Alt-Tで出てくる黒い画面でpip3 install <モジュール名> とすればいい VisualStudio環境は知らん
>linux環境ならCtrl-Alt-Tで出てくる黒い画面で こういう説明なんでできちゃうんだろうか
バカだから 今は pip install hoge じゃなくて python -m pip hoge のほうがいいんじゃなかったっけ
>>600 pip install hoge と
python -m pip hoge は同じじゃないのか。
pipってなんかよく判らん windowsやandroidでも、そんな簡単に付けたり外したりできないのは経験済みなので、 依存関係とか複雑なのだろう
やっぱり python -m pip hoge のほうが推奨みたいだね 参考URL貼ろうとしたらエラーになったから "pip install" vs "python -m pip" でぐぐってくれ
>>604 ググった。これ?
daeudaeu.com/python-pip-difference
うちがまさにこうで、
/usr/bin/pythonは2.xで
/usr/bin/pipは3.xだ。
が、ライブラリの導入先は予め承知していないと、そりゃ色んな意味で拙いだろ...
環境変数までフルマネージドになるっていうのがコツな
>>605 まとめの部分だけ読んだけど大体あってそう
Python 関連の調べものする時は日本語サイトは除外したほうがいい気はする (変なサイト多くない?)
venv を使う時も ./.venv/bin/python -m pip hoge で直接インストールすることができるっぽい
Pythonは入ってるけどpipが入ってない環境で、自分でビルドして入れるとそうなるのかな
venv有効にしたらvenv内のpythonとpip使われるから、普通にpip installすればいい
pipコマンドを今実行しているpythonコマンドとは別に入れた場合(pipはディストロのパッケージで入れたけどpythonはpyenv経由みたいな)は、 pythonコマンドとpipコマンドの整合性がとれていない場合があるからpython -m pipの方が安心 Dockerとか使ってるならそういう心配はしないでRUN pipで大丈夫
pythonもあれなんで py に py -m pip hoge にしてる
Ruby on Rails では、rbenv が多いが、 日本人が作った、多言語バージョンマネージャーのanyenv が良い。 asdf もある 対応言語を表示 anyenv install --list Renv, crenv, denv, erlenv, exenv goenv, hsenv, jenv, jlenv, luaenv nodenv, phpenv, plenv, pyenv, rbenv sbtenv, scalaenv, swiftenv, tfenv Rubyはrbenv, node はNVM, Python はvenv などと、 各言語で、バージョンマネージャーが異なるのは面倒 最近は、Docker も多い。 就職では、Docker, AWS も必須
>>485 > 30代Pythonクソチョン男は強姦魔の犯罪者!
> あなたの近くにいます!
> 父母と祖父母の戸籍謄本を提出させましょう!
ホントそれw
azureのが給与高いよ 資格保有者も圧倒的に少ない
IDEって何がはやってるんだろう VScode?spider?
win10で使ってて、win10としては有効なパスなのに、 pythonから操作しようとすると長すぎてエラーになることがある もしかすると、pythonではなくsubprocessで呼んでるコマンドかもしれないけど 何かの設定で長さなんか気にしなくできないのかな
パスの最大長の制限 learn.microsoft.com/ja-jp/windows/win32/fileio/maximum-file-path-limitation?tabs=registry
検索上位に出てくるnkmkというサイトが本当に邪魔 意図的にページ内リンクを貼らずに閲覧者にスクロールさせたり、文字列検索させようとさせたりするから使いにくくて仕方がない
LongPathsEnabledは既に1になっていて、 それで長いパスが有効だけど、longPathAwareがよく判らない
パスを指定するときに\\?\プレフィックスを付ける必要がある
何でPython の香具師は、いつもパスに、\\ を使うのだろう? Ruby では、Windows のパスでも、/ で書けるのに。 File.expand_path( ) でも、\を/に変換できるし dir_path = "C:/Users/Owner/Documents/**/*" target_dirs = Dir.glob( dir_path )
>>627 はプレフィクスの話をしているのに
>>628 が知ったか過ぎて糞ワロス
> たとえば、"\\?\D:\非常に長いパス" などです。 狂ってるとしか思えない文法
>>628 もう少し勉強した方がいいぞ
raw文字列を使えばエスケープシーケンスを使う必要はない
更にいうとpythonでもスラッシュを区切り文字に使える
あと\\?\プレフィックスはWindowsのルールであってpython起因ではない
こんな短い文章で3つも間違っているのは凄いな
>>632 > 更にいうとpythonでもスラッシュを区切り文字に使える
これはNTFSの仕様じゃなかったっけ?
まあどっちにせよWindowsのルールなんだけどね
windowsで生python使ってる時点でアレ 普通は仮想環境なりdockerカマして動かすよ
Pythonは昔からWindows対応してて Unixな用途以外でも使われてるのに普通ってどういう
長いパスのファイルを操作したい時に、仮想環境からやっても結局困るのでは
windowsで使うならcondaみたいな環境依存丸ごと面倒見てくれるやつじゃないとすぐぶっ壊れるからな
仮想環境からでも実環境でもロングファイルパスは使える 論点ずらしたいだけだから構う必要ない
で、普通ってどういう意味よ? 仮想環境からwinのクリップボード操作やレジストリ操作が出来んのか?
勉強用にはWSL2の方がいいかもしれないけど、実際実用的なプログラムを作ろうとしたらpywin32とか必要なこともあるからねえ conda使わないと環境が壊れるなんてことはないよ。普通にpoetryとか使えばいいだけの話だし、OSが依存してるPythonがないから、むしろぶっ壊れたってPythonインストールしなおすだけでしょ LinuxとかでOS依存のPythonが壊れたら多分結構めんどくさいことになるけど。
それはアップデートしないだよ 何もしないのに壊れることが普通にある
>>639 むしろconda*しか*使ってない
ちな機械学習分野だから偏りはあるが
普通にない メモリかストレージかお前の頭がおかしい
まあ無能の「なにもしてないのに」という言葉ほどあてにならないものはないからな
公式のPythonと併用せずに、anacondaだけ使うならそれでいいんだよ デプロイ先やプロジェクト毎に異なる実行環境構築するようなものの為には作られてない
機械学習できる環境を手っ取り早く構築したいっていうならanaconda進めるのはわかるけど FlaskでWebアプリ作りたいって人がたまにanaconda使ってたりするのはやばいと思う
ChatGPTに触れてAI?ニューラルネットワーク?を勉強しようと思うんですが何から始めればいいですか 理論は最低限しか勉強したくないです
>>652 pytorchやtensorflowのチュートリアルでいいと思う
喜べ、理論を学ぶよりがむしゃらになんでもかんでも試す人の方が勝つ世界だ(自分は理論を押さえたいタイプなので負ける)
>>652 このスレじゃ無理
こっちのスレ↓で質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
http://2chb.net/r/tech/1608837867/ まあ実際python環境の構築はいまだに初心者泣かせだ 上にもあったがpipの依存なんかは初心者がハマると抜け出せない linuxはさらに地獄でpython2とpython3が混雑するのは確定で さらにanacondaやvenvや各種yumリポジトリ、ソースからのインストール、docker環境などもはやその辺の開発者が扱えるレベルを超えちゃった
>>656 Windowsに生Python入れてずっとそれ使うのが一番楽で安定する
うちは3.3入れて一切のアップデート・ライブラリ導入禁止にしてる
現在の時刻から、ローソク足の最新時刻を出力するコードをAIに聞いたらこうなった
https://ideone.com/G6XWNa なんかもっとスマートに書けないかな
・ローソク足は時計一周割り切れる足しかない(5時間とかだと1時間ずつずれるので基本無い)
・timedeltaの引数の%candle_periodのところはデフォルト値に計算結果が0になるような適当な数値を入れておく
な感じをベースに書き直してみたけど
https://ideone.com/DYlS8s for u in candle_period:のとこが野暮ったく、そもそも全体的にもっと良い記述があるような
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
>>661 ローソク足と絡めるならpandasでresample()するのが一般的だけども
勉強がてらにということなら以下のようなコードでどうだろうか
https://ideone.com/938gH9 >>664 なるほど
replaceがあったのか
_daysみたいな表記にも特にこだわる必要なくなったのでそっちのがスッキリしていいな
ありがとう
パイソンチュートリアルにところどころ英語が混ざってるのは本を買わせるため?
原文が更新されてまだ追従してないだけじゃない? 内容が古くなるけどバージョン下げたら日本語になるはず
ただの独り言だが以前は原著原文読めって言われてもなーと思ってたが糞機械翻訳のドキュメントがあふれるようになってからは原文読むようになったな
今のAIなら原文が間違ってても修正してくれるかもしれん
python環境自体をパッケージングして配布する方法ってあります? ソースコードだけだと各自のローカルのライブラリのバージョン次第で動かないとかありそうなので、dockerみたいに環境丸ごとやり取りしたいんですが。
>>670 「あなたが本当にやりたいのはA案ではありませんか?
もしあなたが提案するB案を採用すると以下のような
ごく特殊なケースだけをしょりすることになります。
それでよろしいですか?」
>>671 デプロイ先で実行環境を構築したいとかそういう話?
>>671 最初にPythonをインストールしてくださいってできないの?
依存パッケージのバージョンの話なら requirements.txt 用意することになるんだろうけど、 ユーザーの環境にインストールさせるのがうざいよなぁ。 スクリプト本体とバンドルして配布できればいいのに。
ちゃんと判ってる人向けならrequirements.txtで足りるんだろうな 何も判らない人でもダブルクリックするだけで全てインストールされる仕組みは大変そう
使ったことないけどembeddable pythonは?
すみません説明不足だったかも。pythonの開発環境自体を、ライブラリを含めて配布したいのです。 調べたらWinpythonがそれっぽい?
ターゲットがLinuxならコンテナ一択やがWinアプリ書きたいん?
>>679 どういう開発環境かもわからんし、pipが使えない理由もわからんけど
実行環境と開発環境をごっちゃにしてるのはわかる
よくわからんからとりあえずやってみたらいいんじゃね
x = 1 y = 2 l = [x, y] l[x > y] = 1 l[x < y] = 10 先日、このアクセス初めて見たんだけど こういう使い方できますってどこに書いてるん? というかこれ何? 何をしてるの?
>>682 print(int(True)) してみればわかる
>>679 ソースからインストールするのが良いと思う
特定のディレクトリにインストールして
pipモジュールも全部そこに入れる
PYTHONPATH環境変数さえ切り替えればディレクトリ丸ごとzip化して展開するだけで動く
>>683 ああ0か1でインデックスアクセスしとるだけか…
>>685 それだと2番目で10帰るのはおかしくない?
何に使うの? それで元のxとかも変更されたら面白いけど
>>686 以下が全て同じ事ならおかしくないのでは。
l[x < y] = 10
l[True] = 10
l[1] = 10
>>688 これって l == [1,2] でしょう?
x = 1
y = 2
l = [x, y]
って代入してますよね。
>>690 682じゃないけど、 l[x < y]実行すると確かに10って出るんだけど、l[x < y]て何?変数?
682だけどみんなすまん 再代入ではなくコメントアウトしたつもりだっただけだ x = 1 y = 2 l = [x, y] l[x > y] # 1 l[x < y] # 2 インデックスアクセスって式でもいいんだね その仕様って公式ドキュメントかどこかに書いとるのかな? _list[getStart() : getEnd()] は見たことある
l[i+1]-l[i] みたいなことは普通にやるでしょ l[True]が許されてるのは知らんかったが
>>701 おそらくオリジナルのコードはもっと違うものだろう
a=[1,2,3,4,5]
a[a>3]
みたいな書き方ではないかと予想
Cにもよるけど、本来は0か0以外 1に限定してしまうとじゃあ2だったら?になる 0以外なら何でもいいけど1に限定するルールが追加されたりもする
2択ならif文使わずにリスト+真偽値でこういう風に書けるけどこういうのってバグ誘発とかします? print(["不合格", "合格"][a > 70])
print("不合格" if a <= 70 else "合格") 普通はこうするかな そのまま文章として読める
>>708 自分だけが使うコードならそれでいいよ (競プロとかね)
複数人が触るコードでトリッキーなことをするのはやめたほうがいい
リスト内で複数行にまたがる正規表現って可能なもんですかね? 0 りんごが1個うれた 1 りんご 2 が2個 3 売れた りんご.*れた みたいな感じのパターンを使って最初にマッチする行位置が取りたいっす。
特殊な文字でjoinしたものを検索してから、特殊な文字の個数を数える りん ご みたいに行を跨いでいるものは無理
特殊な文字なしでjoinして位置変換の情報は別途生成でいいんでは
一つずつ長くしながら比較、でも判るけど時間かかりそう 一旦文字数のテーブルに変換しておけば文字列比較はしなくて済む
719 720 721 やっぱりリスト内は難しいですよね。 joinで考えます!!
文字列内に改行が含まれないことが明らかなら、特殊な文字として改行を使ってAIと同じ答えになる にしてもAIすげーな
リストに分割されてない"\n"区切りの1本の文字列なら、 reのDOTALL使っていい感じにできそう?
flags=re.DOTALL は不要な時はわざわざ付けないだけで、 あって困ることはあんまりないのでむしろデフォルトにして欲しい
一連の処理が関数化されたライブラリサイト探してるんだけど、検索しても関数の使い方ばかりヒットする。どっかいいところある?
>>723 その ideone.com/S6X4NB の実行結果は match line: 4 になっている。
4行目しか、/りんご.*れた/ にマッチしてないのでは。
「複数行にまたがる正規表現」ということなら、2~5行目にかけた
"りんごが1個3 りんご4 りんごが2個うれた5 売れた"
にマッチし、match line: 2 が返りそうな気がする。
ほんとだ re.MULTILINEじゃなくてre.DOTALLが正解でしたね
みんな引数書くとき型ヒントつけてる? Intelicenseのためになるべくつけるようにしたいんだけど あえてつけない方がいいって意見あったりする?
>>732 使ってないなあ
使わなくても動くものは使わなくていい
シンプルイズベスト
俺は書く。 引数の型なんて昔からコメントに書いてたしなぁ。
AIで勝手につけてもらったほうが楽だったりして
>>732 書ける型は必ず書くかな
なくても理解できるなんてまやかしだからね
一人で数百行のスクリプト書くだけなら好きにすればいいけど
分析用のコードとか簡単なアルゴリズム検証用のプロトでは書かないけど、 それなりに運用される前提のコードなら書くかなあ。
コメントもアノテーションも書いたら負け 書かなくとも直感的に頭の中に入ってくるコードを書くのは必然
コメントはわかるが型書くのはバグ、デグレ回避だからな
皆さんありがとうごおざいます。 強く忌避される理由もなさそうなので遠慮なく使っていこうかと思います。
昔はコメントは1行ごとに書けと言われていたがな。 コメントのみ抽出してテスト項目書にするから。
本文のコメントをテスト項目書に書くってどいうことだろ
そうだね。ちょうどカバレッジ(率)という用語が出てきてプログラム化されてきたかなという頃だな。
>>744 コードの行数とコメントの行数が同じになるの?
逆になんでコメントなんだろうと思った。 コードそのまま写した方が手間も間違いも無くてよさそうに思うが。
言われていないなら言われていないでいいよ。 別に書かなくても誰も困ってないんだろ。 コードで行っている処理を日本語などの言語で表現できないような状態はバグの温床だな。
>>753 生産性の悪い、規約でがんじがらめの現場しか経験してないのかな
コメントは処理の内容じゃなく、なぜその処理かを記述するんだよ
何やってるかなんてコード読めば済むだろ
こういうことをしたいんだがもっと上手く書けないもんかな・・
https://ideone.com/QYEWI4 等分割ではなくて等比的に分割していく、みたいな
微妙にsum結果が合ってないのも気になる
floatだからじゃないの?decimal使ったら?
おあつらえ向きに何がやりたいかわからんコメントが必要なコードが出てきたぞ
ふつうはその関数の仕様や期待動作をコメントに書くんだよ
sideとexの意図がわからんから無視したが、 だいたいこんな感じになれば満足か? def divisionor(source, ratio, maxcount): for _ in range(maxcount): yield source source*=ratio def step_values(sumvalue, ratio, step): firstvalue = sumvalue * (1-ratio) / (1-ratio**step) return list(divisionor(firstvalue, ratio, step)) print(step_values(11111, 0.1, 5))
この行は何をしたいのか なぜこの選択肢を取ったのか この選択肢を試してみたがこういう方法でうまくいかない とかをコメントで残しておいてくれると 後々助かる
そもそもそういうコメントが不要なコードのがよくない? ちゃんとレビューしよう
関数名や変数名から想像した通りに動作をするならコメントは要らない 予想を裏切る行動をする箇所だけコメントが必要 そんな書き方するなという話だけど、そうしないといけない時もある 外部のバグに合わせて仕方なく変なことするとか 再帰呼び出しもコメントが無いとパッと見て判らない
>>761 > そもそもそういうコメントが不要なコードのがよくない?
それ、ドキュメント書きを怠けたい人の方便だからね。
誰に聞いたか知らないが、真に受けるのはやめよう。
そもそも、そうのたまう人が説明不要なコードを書いた試し無いでしょ。
コメントは悪、という思想は悪 その正体は怠慢と傲慢
>>760 の言ってる内容はコードとして残せないから残す意味がある
処理の内容を書く奴は処理とコメントに矛盾が生じたときに困るし、
コードとコメントの双方を直すことになる奴だから残すべきじゃない
>>765 同じことをいうヤツが何人もいるが、それは仕様自体を正しく把握してない状態では?
>>763 自分のコードでもレビューでもそう意識して実践してるけどダメ?
>>762 のようなケースもあるからこそ
ノイズになるしょうもないコメントは書きたくないから
なるべくコードだけで分かるように心がけてる
# 何故動いているのか分からない # 触るな!キケン!
>>766 仕様を把握してたらなおさらコードの内容をコメントとして書く理由がない
ある程度の規模のOSSのソース見てごらん
ちゃんと意味のあるコメントが書かれてる
>>765 コードコメントをAPIドキュメントとして使うよう場合は
仕様としての処理の内容をコメントに書く
それに「この行は何をしたいのか」は基本的にコードに書くべきこと
特にPythonのように高レベル言語では意図が伝わるコードを書くべき
>>771 何をしたいのかと何をやってるのかは違うからね
コードから読み取れるのは何をやってるのか(how)だけであり、
なぜ(why)ややりたいこと(want to)は読み取れない
だからこそコードに残せない情報はコメントで残す意味がある
まともなコードを読めば ドキュメントとコメントと適切な命名、型ヒントの重要性について学べるだろう 個人用の短い書き捨てのコードしか書かないんだったら好きにすりゃいい
コメントは分かりやすくするためだから長文でダラダラ説明じゃなく要点を端的に示せばいいよね
>>773 のとおりどうやってやっているかはコード見ればいいから不要だけど何のための処理かとか入出力変数の内容はメモ欲しいかな
>>773 >何をしたいのかと何をやってるのかは違うからね
それ違ったらバグだよ
Whyは一般的にはコードに書けない
HowだけでなくWhatをコードに書く
それが意図を伝えるコード
コメント書いてわかりやすくするなら はじめからわかりやすいコードを書くことを心がけて行きたい コメントやドキュメントに頼らずに直感的に頭の中にすっと入ってくるコードを目指すべき
ユークリッドの互助法みたいなのは、ユークリッドの互助法を行う、でいいと思うけど、 数式をプログラムにする際にやたらに複雑になってしまったような場合は概要だけでなく解説を入れるかな。 glibcのmath.cのcosとかいい例って感じするけど。
いわゆる「下回り」は高速性も求められるので、難解になりがちだな 何ならアセンブラで書いてある そういうダーティな部分は最下層に追いやって、上の方はクリーンに書くので、 そんな難解なものを書けるチャンスはまずやって来ない
>>779 numpyとかダーティになりがちだし、自分はnumpyのコードも書くからなあ。そう言うコメントを書く機会ある。
あれは実際どの型で動いてるのか不安になる時あるわ ちょっとコード変えたらエラー出まくりとか嫌になる
普段からコメント書いたり読んだりしてないといきなりは難しい
コメントとは違うけど、docopt ってよく出来てる ドキュメントを書くとその通りに動く あの無敵な感じを関数単位でやれるといい
>>732 付けてるけど
Noneチェックしないとエラーになってうざいときある
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
ウェブサイトのデータ抽出してからエクセルにデータ貼り付けて、 そこからさらに重複していないデータ(データ一覧に一つしか存在しないという意味、リストにすでに含まれてたら…ってのはng)だけ取り出したいんだけど、 この重複してないデータの取り出し方法がわかりません どんな方法ありますか?
>>786 Python不得意ならExcelでやればいいんでは?
テキストファイル化してコマンドラインからuniq(PowerShellならGet-Unique)でもええし
Pythonならset(集合)にデータをタプルで入れていけば勝手に一意にはなる
#エクセルデータをpandasで読み込んでdataframeに変換する例 import pandas as pd data = pd.read_excel('path/to/excel_file.xlsx') #特定のシートだけ読み込む data = pd.read_excel('path/to/excel_file.xlsx', sheet_name='Sheet1') #特定の範囲だけ読み込む data = pd.read_excel('path/to/excel_file.xlsx', usecols='A:C') #読み込んだあと、特定の列から重複しないユニークな値を抽出する data = pd.read_excel('path/to/excel_file.xlsx') unique_values = data['column_name'].unique() #pandasで重複しない値を取得する例 import pandas as pd data = {'Name': ['John', 'Mike', 'Brad', 'Jane', 'John', 'Mike'], 'Age': [25, 30, 35, 40, 25, 30], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'New York', 'Los Angeles']} df = pd.DataFrame(data) unique_values = df['Name'].unique() print(unique_values)
>>786 重複排除じゃなくて
最初から完全に一意のものだけ取り出すってこと?
俺の頭では無理だな
>>786 仕様の「リスト」が何を指すか解らない。その一文を無視して、
連想配列(Pythonだとdic?)で、
var["データの1要素"]++
みたいなことをし、
var["データの1要素"] != 1 を捨てるかな。
Ruby 2.7 から、tally で、配列内に同じ要素が何個あるかを数えられる。 そこから、重複していないものをフィルターする ary = [ 1, 2, 2, 1, 3 ] p hash = ary.tally #=> {1=>2, 2=>2, 3=>1} p result = hash.select { |key, val| val == 1 } #=> {3=>1}
>>786 collections.Counterで要素数が1のものだけ抽出すれば?
こんな感じで。 import collections l = ['a', 'a', 'a', 'a', 'b', 'c', 'c'] c = collections.Counter(l) print([k for k,v in c.items() if v==1])
つか、ここだとmarkdown使えんから 具体的な質問なら、SOとか寺にしたほうがいいよ
>>795 上にもあるけど単にリストのユニーク要素を取り出すならsetに一旦変換するのが楽だと思うけど
l = ['a', 'a', 'a', 'a', 'b', 'c', 'c']
print(list(set(l)))
ただ
>>786 のやりたいことがイマイチ分からないのでみんなエスパーするしかない
エクセルが間に挟んだのはどういう処理(過去保存データとのマージとか途中経過置きたいのか)とかリストって一次元のリストなのかとかがよく分からない
>>798 >>786 は
1:abcd
2:abcd
3:efgh
を、
1:abcd
2:efgh
とユニークにするのでなく、
1:efgh
としたいと言っているのでなかろうか。どうだろう。
おそらく探索系のアルゴリズム使うよりもfind等の関数型でやったほうが強いだろう rubyならすぐ書けるんだがな
数が一つを保証するために探索系アルゴリズムもないだろう N個あったらO(N)で数え上げだろう
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
これ地味にむずいかもって事例に遭遇した。 ページネーションされているウェブサイトにて 1ページ毎に(日付、値)の形式で何行か表示されていて (日付、値)だけをスクレイピングするとする 例えばこんな感じ 1ページ目 2023/01/26(木) 22:54:11、1 2023/01/26(木) 22:53:30、2 2023/01/26(木) 22:52:08、1 2ページ目 2023/01/26(木) 22:51:04、1 2023/01/26(木) 22:51:04、2 2023/01/26(木) 22:50:23、1 問題は、 スクレイピング中に、ウェブサイト側がデータを更新した場合 同じ日付を重複して収集してしまう可能性があること。 同じ日付時刻なこと自体は間違いではなく正常なので ウェブサイトの更新時によるズレなのか、単に同じ日付時刻のデータなのか を判別する処理が難しいというか、単純であればあるほど 常に最新データを収集するとかでない限り不可能な気がした
>>1 svgを使いたいのだが、
インストールすらエラー、、、
>>806 識別子も更新日時もなくサイレントに更新されるような品質の低いデータならページ単位に取得日時を記録してスナップショットとして割り切るしかない
>>806 Rakuten Koboの期間で絞り込むと一緒だ
デフォルトが売上順になっていて、ページ移動すると、順番が変わる
結果セットに対して、ページを作成しているのではなく、その都度作成してる。
こうゆう作りの所は、諦めるしかない。
結果セットをいじるのは、勘弁してほしい
(今日出ているのに、ページまたがりで見つからなくて、別のとこで買ったことも)
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
pythonファイルを定期実行するときに、○○秒待機したタスクだけを一度実行(また○○秒待機)
ってこんな面倒だったっけ・・?
https://ideone.com/s6VVQo whileで無限ループとかだと、経過時間をメモリできるから簡単だけど
pyファイル実行毎だとその都度全部クリアされるからどこかに記録しとかないといけない、という認識であってるのだろうか・・
ほぼ最小構成のつもりでこんなに長くなってしまった
>>815 普通の人はscheduleモジュール使う
プロセスごとだとLinuxのcronやWindowsのスケジューラ使う
プロセスごとだと、タスクごとにpyファイルを分けて
例えば
task1.py task2.py ・・・
みたいに分けて
OSの方でそのpyファイルを定期実行する感じですかね
仮に、どこからか情報を取得するようなタスクだったら、DBに記録して
DBから情報を取得して処理する.py
に分けて、それも定期実行する
みたいな
もちろんやり方は自由なんだろうけど
実行時間に依存した料金体系のサービスで節約したい場合とか
ループ使わないだけで構成変わっちゃうので、かつ汎用性持たせようとして苦労してます・・
ありがとうございました
>>816 >>817 金額が安いのはサーバレスサービスかな
例えばhttpで受け付けるAPIを用意して、AWSでLambdaファンクションをCloudWatch経由でたたく
1分に1回実行するとして2000円以下だと思う
それも高いと言うなら月額1000円未満のVPS借りてLinuxでcronかな
https://github.com/fanzeyi/pokemon.json/blob/master/pokedex.json *火(Fire)と飛翔(Flying)の属性を持ったポケモンの数を表示
*消防士向きのポケモンを判定する 図鑑番号を指定して 水(Water)のタイプをもっていて、すばやさが平均以上の ポケモンであれば、採用と表示する
*発電向きのポケモンを判定する 図鑑番号を指定して でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の ポケモンであれば、採用と表示する
誰かこれの回答と解説お願いできる?
import urllib
import json
response = urllib.request.urlopen('
https://raw.githubusercontent.com/fanzeyi/pokemon.json/master/pokedex.json' )
content = response.read()
jpk = json.loads(content)
jpk
PySimpleGUIで2つの最大サイズの画面を遷移させたいのですが、 ウインドウを作成しておいて表示/非表示で見た目に入れ替えようとしました。 # 最初にウインドウの起動位置を指定して起動 main_window = make_main(0, 0) sub_window = make_sub(0, 0) # サブウインドウを非表示にする sub_window.hide() main_windowにあるボタンを押すと # サブウインドウを表示する sub_window.un_hide() サブウインドウが最前面に表示されます。 その後、sub_windowにあるボタンを押して、 # サブウインドウを非表示にする sub_window.hide() メインウインドウを最前面にしようとしてもサブウインドウが最前面に表示されたままです。 双方のボタンで前後入れ替えて表示したいのですが、良い案はありませんでしょうか。
AIに聞いた結果
>>819 合っているかはわからん
import urllib
import json
import pandas as pd
response = urllib.request.urlopen('
https://raw.githubusercontent.com/fanzeyi/pokemon.json/master/pokedex.json' )
content = response.read()
jpk = json.loads(content)
#print(jpk)
df = pd.DataFrame(jpk)
df['name']=df['name'].apply(lambda x: x['japanese'])
df=df.join(df["base"].apply(pd.Series)).drop(columns=["base"])
#火(Fire)と飛翔(Flying)の属性を持ったポケモンの数を表示
target_types = ['Fire','Flying']
count = sum([all(value in row for value in target_types) for row in df['type']])
print("typeがFireとFlyingのポケモンの数",count)
#消防士向きのポケモンを判定する 図鑑番号を指定して 水(Water)のタイプをもっていて、すばやさが平均以上の ポケモンであれば、採用と表示する
target_types = ["Water"]
m_speed=df["Speed"].mean()
filtered_df = df[df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Speed'] >= m_speed, axis=1)]
print("消防士向きのポケモン\n",list(filtered_df["name"]))
#発電向きのポケモンを判定する 図鑑番号を指定して でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の ポケモンであれば、採用と表示する
target_types = ["Electric"]
m_defense=df["Defense"].median()
filtered_df = df[df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Defense'] >= m_defense, axis=1)]
print("発電向きのポケモン\n",list(filtered_df["name"]))
#typeがFireとFlyingのポケモンの数 6
# 消防士向きのポケモン ['カメックス', 'ゴルダック', 'ニョロモ', 'ニョロゾ', 'ニョロボン', 略
# 発電向きのポケモン ['コイル', 'レアコイル', 'マルマイン', 'サンダー', 'デンリュウ', 'ライコウ', 略
>>822 PySimpleGUI の bring_to_front() 関数を使って、ウインドウを最前面に表示することができます。
以下は、サブウインドウを最前面に表示する例です:
sub_window.un_hide()
sub_window.bring_to_front()
また、メインウインドウを最前面に表示するには、以下のようにします:
main_window.bring_to_front()
このように、各ウインドウを最前面に表示することで、ボタンを押したときに前後入れ替えて表示することができます。
>>822 出来ました、ありがとうございます!
全画面表示しかしていないので、もしかして表示/非表示にする必要は無いかもですね。
>>823 多分あってます、ありがとうございます!
>>823 ,
>>819 >水(Water)のタイプをもっていて、すばやさが平均以上
>でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上
全水タイプの素早さの平均値
全でんきタイプのぼうぎょりょくの中央値、なら
#消防士向きのポケモンを判定する 図鑑番号を指定して 水(Water)のタイプをもっていて、すばやさが平均以上の ポケモンであれば、採用と表示する
target_types = ["Water"]
new_df=df[df['type'].apply(lambda x: all(value in x for value in target_types))]
m_speed=new_df["Speed"].mean()
filtered_df = new_df[new_df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Speed'] >= m_speed, axis=1)]
print(f"消防士向きのポケモン: {len(filtered_df)}\n",list(filtered_df["name"]))
#発電向きのポケモンを判定する 図鑑番号を指定して でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の ポケモンであれば、採用と表示する
target_types = ["Electric"]
new_df=df[df['type'].apply(lambda x: all(value in x for value in target_types))]
m_defense=new_df["Defense"].median()
filtered_df = new_df[new_df.apply(lambda row: all(value in row['type'] for value in target_types) and row['Defense'] >= m_defense, axis=1)]
print(f"発電向きのポケモン: {len(filtered_df)}\n",list(filtered_df["name"]))
#typeがFireとFlyingのポケモン 6 ['リザードン', 'ファイヤー', 'ホウオウ', 'ヒノヤコマ', 'ファイアロー', 'オドリドリ']
#消防士向きのポケモン: 65
#['カメックス', 'ゴルダック', 'ニョロモ', 'ニョロゾ', 'ニョロボン', 略
#発電向きのポケモン: 27
#['コイル', 'レアコイル', 'マルマイン', 'サンダース', 'サンダー', 'デンリュウ', 'ライコウ', 略
いつまでここにコード貼り付けてるんだ?
>>1 が読めないのか?
fastAPIのこれが謎技術すぎて理解が追いつかない https://sqlmodel.tiangolo.com/tutorial/fastapi/session-with-dependency/ 要約すると def db_session(): with Session(engine) as session: yield session session=Depends(db_session) session.add(...) session.add(...) 的にコードはwith構文の外に書いているのに、処理はwith内で書いたときのような効果が維持されてる(with抜けるときに勝手にsession.close()してくれるなど)、みたいな from fastapi import Dependsってクラスか何かを通してるみたいで https://github.com/tiangolo/fastapi/blob/master/fastapi/dependencies/utils.py この辺ぽいけど見たけどよくわからなかった めっちゃ簡単に説明するとじゃ~と流せなくてちょびちょび流すようなことしてる感じかな
>>819 の者です。
多分あってるといったけど問題文にあってませんでした。
下のurlの問題について
https://dpaste.com/E2T6AX67C しらべた末に自分なりにif inをつかったけどダメでした
正解をおしえてほしいです
>>831 ・水タイプ全体のすばやさの平均なのか、全ポケモンのすばやさの平均なのか
前者の”水タイプ全体の平均”とするなら
https://dpaste.com/CUY959GZD >>832 ありがとうございます
今度こそ大丈夫そうです
再現しようとしたけど断念しました
>>829 #通常通りwith文のブロックの中で処理をする
https://ideone.com/QROz2s #with文から外れてwith処理をする
https://ideone.com/zRNmKr withブロックに依存しないwith処理まではできたけど
その分余計なコードが増えた・・
with は、Ruby のコンテキスト(文脈)マネージャーみたいな奴か? File.open(file_path, 'w') { |io| io.write "あ" } # 書き込み File.openにブロックを渡すと、 正常時・エラー時に、自動的にファイルを閉じてくれる機能 自分でエラー処理を書かなくてもよい
Rubyのコンテキストマネージャーって何w openがそういう実装になってるだけですやん
>>817 俺ならシェルスクリプトで
ループ内で最小単位の時間でsleep、カウンターの剰余0で実行
バッチファイルなら常駐メモリは2MB以下ですむ
:TOP
timeout /nobreak 10
set /a cx+=1
set /a t=cx%6
if %t%==0 task1.py
set /a t=cx%30
if %t%==0 task2.py
goto TOP
こんな感じ
ミックスインなるデザインパターンを見たけど これほんとにメンテナンス楽になるんだろうか。。 端的には、 それ単体では実行できない部分に細分化したクラスを継承する だけど 細分化した先のメソッドで「このプロパティなんだったっけ?」ってなるような
>>839 mix-in先にあるプロパティを直接さわるコードなんて書かない
やるにしてもアクセサ経由
Mixin+継承で書いたの
https://ideone.com/5GpJQ2 普通の継承で書いたの
https://ideone.com/8wRFFB publicとprivate機能を追加したくなったとき
Mixinのとき
https://ideone.com/RRy6OW 普通の継承のとき
https://ideone.com/L3BS95 Mixin+継承のメリット
・Mixinクラス名を見ればそのクラスが何の機能を持つかわかる
・他の親クラスに転用できる
デメリット
・子クラスや他の継承クラスを変更するとき面倒くさそう
普通の継承のメリット
・継承元クラスにいろいろまとめることができる
デメリット
・親クラスを変更するとき親クラスに何の機能があるのかを把握した上で継承クラスを変更しなければならない
そもそもMixinの概念が合っているかどうかわからないけどこんな感じだろうか・・
mixinも継承も使わないのがベスト そもそも継承して使うクラスというのが既にオワコン
無理にデザインパターンにはめようとして逆に仕事増やす人いるよね
どなたかご教示願います。 ・PDFにページ番号を付加するために「PyPDF2」を使ったプログラムを組んでいます。 ・reader.getNumPages() という関数を使って、自宅で試作して成功しました。 ・許可を受けて、会社のPCにPythonとPyPDF2をインストールして同じコードを実行したころ、 PyPDF2のバージョンが上がったため使っていた関数が使えなくなりました。 ・修正する時間もないので、PyPDF2の旧バージョンをインストールしたいのですが、 そういう方法はありますか? Python3.9を使用しています。 PyPDFは旧2.2を使用していて、現在は3.0が最新です。 何卒よろしくお願いします。
PyMuPDFが好き なんでfitzなのか知らんけど 何をやるにしてもpdfは闇が深すぎる気がする
pdf関連のツールとかも無数にあるけど、みんな不完全にしか動かない ターゲットを限定して、自分専用のを各自作るのが結局一番いい
perl の時代はexcelもだめだめやった 今はマシやが、pdfがfinal frontierになっとる
perlでexcelは現役でやってたりする excelインストール済の環境でWin32::OLEで使う 単にexcelを自動操縦してるだけ 互換性100%
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
OLEっていまだに動くのがすごいよな セキュリティなんかガバガバだろうけど
テキストとしてコピペしたつもりなのに勝手に色とかフォントとか付いてくるのはOLEのせい
スレ的に、pycharmとvscodeだとどちらが優勢?
両方を本気で使っててvscode使い続けるやつがいるとは思えない でもpyCharmの学習コストが高いっていうのはありそうだし、 知名度の差もあるからシェア的にはvscodeになりそう
>>862 > 両方を本気で使っててvscode使い続けるやつがいるとは思えない
全員 Python 「だけ」を使ってるわけじゃないから
いうてもPyCharmてJavaScriptのフロントエンドもまあまあ扱えるでしょ それでサーバーサイドPython+フロントエンドを開発できる C#とかGoとかはやったことないからわからんけど
C#は探せば用途あるでしょ Goが役立つ人は限られる気がするけど
>>866 pyから入った人に、Javascriptは覚えやすいのだろうか
いろいろしたかったらIntelliJ買ってくださいだったけど 無料のVS/VSCodeのが応用範囲広いしね 特にニッチな言語や設定ファイル
>>870 はっきり言ってめちゃくちゃ大変だけど、特に非同期処理が当たり前のところとか…。
サーバサイドとフロントエンド両方作るみたいな想定ね
Ruby on Rails のポートフォリオでも昔は、Bootstrap, jQuery だけで採用された その後、ソニックガーデンの伊藤 淳一、 YouTube で有名な雑食系エンジニア・KENTA の初心者向けRailsサロンとか、 Rails専業のRUNTEQ などの生徒が、Vue.js を使った事で、 これはすごいとなって、日本ではVue.jsが決め手となった。 もちろん、React もある 今や、Linux, Docker, AWS Solution Architect も決め手となってきて、 KENTAのサロン内のAWS部に入って、皆でくろかわこうへいのAWSサロンにも入る 今や、Railsの未経験者は、10年以上のプロよりも上! 日本人の未経験者は、競争的に究極まで進化して、外人はクレイジーと驚嘆している 米国年収ではレトロなRubyが、最新の3強・Go/Rust/Elixir に勝ってしまうという珍現象が起きて、 多くの言語が6.5万ドルの中、Goが8.9万ドル、Rubyが9.3万! Rails, AWS Solution Architect は13万ドルで、最も稼げる資格となった! KENTAのサロンでも、JavaScript は初心者用の本を1冊読むだけ。 ES3〜ES5(2015)までの文法の変遷を追うだけで、Rubyの5倍以上あるので、お茶を濁すだけ モダンJavaScriptの基本から始める React実践の教科書 (最新ReactHooks対応)、 じゃけぇ(岡田 拓巳)、2021 仕組みに重点を置いた本で、この本が最も簡単
>>872 バックエンドはpyですからね
aws,Javascript全部やるしかない
>Googleトレンドのデータに基づいてマスク氏の人気のピークが過ぎたと説明したエンジニアをその場で解雇したという。 >衝動的に従業員を解雇するため、チームごと消滅するサービスを別のチームが引き継いで >「考古学者のようにコードを掘り下げ」状況を把握するところから始めなければならないと従業員の1人は語った。 やっぱどこもそうなんだな
生産設備なんかで使われるラダーや図面なんかは 設備を立ち上げた設計者以外とは別に 社内の生産技術、改造工事をする社内外注とか いろんな人が見て、改造することが前提になっているので 誰が見てもすぐわかるようにわかりやすい形で標準化されている 製造業で世界のトップにのし上がった国だけに突き詰められている
リレーで実現できるような単純な動作しかさせないからわかりやすいと感じるだけだろ
電気自動車の中古を買う香具師がいない。 誰が、3年落ちの中古を買う? 無理 早く水素エンジンへ移行すべき! KENTAは、PHP, Scala をオワコン認定したから、 Scalaコミュニティーは、初心者にマウントを取ってくるベテばかりになって、 コミュニティーは崩壊し、RubyからScalaへ移行した、Twitter も崩壊中
ログをリアルタイムでグラフで見たくて、matplotlibでpngに書き出すようにしてみたけど、 matplotlibって体系ぐちゃぐちゃやな ああ、そういう設計思想なのね、と納得すれば理解できる感じのモジュールと違って、 腑に落ちない仕様が後から後から出てくる
>>885 matplotlibは汎用的すぎるからデータ可視化に強いライブラリ
たとえばPlotly(Dash)とかはどう?
>>883 けどさ、電気電子板のPLCスレッドとか見るとわかるけど、絶対に間違っちゃいけない世界だから単純なことでも大変だと思うよ。
規模にもよるだろうけど、間違えたら人死にが出たり大損害を引き起こしたりするわけで。
アプリケーション屋と組込屋が分かれているのと一緒で、PLCのプログラム組んで問題なく動かすのはかなりのノウハウの塊だと思う。
自分は職業プログラマでweb、スマホアプリ、簡単なゲーム、簡単な組込みぐらいはやって比較的幅広くやってる方だと思うけど、
工場ドメインの様々な勉強が必要そうだから、PLCは出来る気がしないもの。
>>888 知り合いが大型航空機やってるけど
テスト時にプログラマーも乗せられるらしい
強迫性障害向きの仕事って言ってた
機長「オイ、プログラマ。バグだ、直ちに直せ!」 プロ「ラジャ」
マルビナス諸島のときは現地でデバッグしていた奴が報道されていたな
組込やってたけど大したトラブルも起こさずにやり抜けたわ せいぜい客先の担当者のクビが飛んだ程度で行政絡みの面倒までは俺は無かった
問題が起こった時、普段はお客さんにごめんなさいするか、お客さんがプレスリリースでごめんなさいするかの範囲だったのに 問題が起こってるのを朝食食べながら見てたニュースで知った時は、速攻会社向かったわ
組み込みでもCとかならいいけど、HDLだと死ぬよな if i == 1 begin x = x + 1 y = y + 1 end とかで、上は実行されるけど下は実行されない(あるいは逆)なんてことがあって、 なぜなら上と下は別回路だからジッターやVthでi == 1の評価タイミングが それぞれ別だと説明された時はめまいがしたよ
実際のとこ、人命がかかってないようなプログラムは 設計もコーディングもそんなにガチガチじゃないんだろうな
金融とかだと直接人命には関わらないけど損害が半端無いからレビューからガチガチにやる
金扱うと慎重になると思うやん でもテキトーよ、テキトー
衛星打ち上げも結構かかったんだけどな 保険も入ってるだろうし、あんまり真剣にはなれなかったか
全銀ネット、富士通のメインフレームとCOBOLから脱却するそうだ 何が起こるかな
>>890 あるだろうね。その場でバグを治すのは無理だけど、モジュール同士の不整合で起きた問題を察知する能力は、作ってる側だから高いだろうし。
このモジュールのブレーカー切ってくださいと適切に指示できる可能性は高いと思う。
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
>>904 PythonでDecimal使用になるんだろうな。
JAVAとかって書いてあるからBigDecimal使用かもしれない。
ガチガチのプログラム書くなら型と再代入不可を徹底してないとな PyPyのRPythonとか
そのためのedgeなんだが そもそも実行って言ってる時点でアレGe
Pythonにインターフェースはありますか? C++の純粋仮想関数のようなもの。
できるけどいくらでも書き換えられるので無意味 結局人間が気をつけて書くしかない
ありがとうございます。 Python Interfaceで検索してみたらいろいろ出てきました。 ただ、PythonでInterface必須なクリーンアーキテクチャーやSOLID原則で検索してもこれというものが出てきません。 Pythonでは、無理なんでしょうか?
>>885 Rのggplot2に比べたらぐちゃぐちゃやな
ggplot2の設計の美しさは衝撃
>>916 typingモジュールのProtocolを調べてみてください
昔はR使ってグラフ描いてた 難解ではあるけど判れば納得できた
スレ的に、pyscriptってどんな感じですか? 発表時は結構期待してたんだけど周囲では特に盛り上がってる話を聞かないので。
frontendのよいフレームワークが出るまでは盛り上がらなさそう そもそもユーザ層が違う
>>919 そんなのあるんだ。
JavaScriptがJavaと違うように、PyScriptもPythonと違い、Pythonの感覚で書くとバグったりするのかね。
HTML内にPythonコードを書いて実行できるPyScriptで遊んでみた!
https://zenn.dev/astrologian/articles/a76ce13d4426ec 実行速度が遅いのが問題らしい。
昔から似たようなコンセプトでbrythonがあるけど使っている人を見たことがない
Anacondaの仮想環境なんですが、 ApacheのhttpサーバーからAnacondaで作った仮想環境を呼び出すにはどうしたらいいんでしょうか?
30代Pythonクソチョン男は強姦魔の犯罪者! あなたの近くにいます! 父母と祖父母の戸籍謄本を提出させましょう!
代入して、その値をbooleanとして評価して、真偽を反転
代入されたものに対して処理をしたいけど、 ネストが深くならないように成立しない場合を先にはじきたい
いずれにしても可読性が落ちるな 分けて書いたほうがいいかも
呼び出しが重いから代入して使いたい ガード節を置きたい ときは 分けて書いた方がいい。読みやすい value = func() if not value: return if value > _max: return 以下処理系
ずっとそういう立場だったのに3の途中から迷走してる 4になる頃には現代的に整理されてつまらん言語になってそう
pandasのデータフレームの表示についての質問です データフレームの各行の最小値を強調して表示したいと考えており、.style.applyメソッドを使っています しかし.style.applyメソッドでは、インデックスやカラムのラベルに重複があると、 '`Styler.apply` and `.applymap` are not compatible with non-unique index or columns.' というエラーが出てしまいます あえてデータフレームのインデックスやカラムのラベルを重複させている場合、どのような方法が考えられるでしょうか?
割とマジでchatgptに聞けで終わってしまう時代だ
そんな馬鹿げたことを 教えて貰うまでボケーッと待つんだろうか?? 自分で調べる事も出来ないなら Excelでやった方が効率良さそう
pandasのindexってかなりガンだよな 要らないことも多いし、無くても大抵どうにかできる ぴったりはまると短く書けるけど、はまらない場合が邪魔すぎる 他との絡みでpandasでないといけない場合以外は、polarsの方がいいと思う
chatGPTで教科書問題を解かせた ----------------------------------------------------------------------------- (x,y,z)のデータ列(82,97,163),(100,91,138),(125,79,138),(96,92,136),(99,92,140),(190,54,103),(186,57,121),(142,73,124),(95,94,145),(179,58,116),(139,76,141),(77,98,152)について z=a*x+b*y+c を最小二乗法でフィットした場合のa,b,cを求めるpythonのプログラムコードを示せ。 また、これらのデータ列と回帰式を、グラフに示せ。 -----------------------------------------------------------------------------
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # Define the data points as a numpy array data = np.array([(82,97,163),(100,91,138),(125,79,138),(96,92,136),(99,92,140), (190,54,103),(186,57,121),(142,73,124),(95,94,145),(179,58,116), (139,76,141),(77,98,152)]) # Extract the x, y, and z data from the array x_data = data[:, 0] y_data = data[:, 1] z_data = data[:, 2] # Create a design matrix A and observation vector b for the least squares method A = np.column_stack((x_data, y_data, np.ones(len(x_data)))) b = z_data.reshape(-1, 1) # Calculate the coefficients (a, b, c) of the regression equation z = a*x + b*y + c using the least squares method coefficients = np.linalg.lstsq(A, b, rcond=None)[0] a, b, c = coefficients.flatten() # Print the regression equation print(f"Regression equation: z = {a:.2f}x + {b:.2f}y + {c:.2f}")
# Plot the data points and the regression plane in a 3D plot fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x_data, y_data, z_data, c='black', label='Data') xx, yy = np.meshgrid(np.linspace(np.min(x_data), np.max(x_data), 10), np.linspace(np.min(y_data), np.max(y_data), 10)) zz = a*xx + b*yy + c ax.plot_surface(xx, yy, zz, alpha=0.2, color='red', label='Regression plane') ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') plt.legend() plt.show()
英語と日本語の切り替えが出来てるな 非日本語圏から引っ張ってきたコードっぽいから コメント中はさすがに英語のままだけどな
解答例とほぼ同じコードなのに時間内に何回やっても処理が終わらなくて 手元でも異様に時間かかるのなんでかわからなくて数時間悩んだけど 使わん関数定義削除しただけで爆速で終わったわ なんで使用しない関数で遅くなるのかわからん 残しておかないと使いまわせないじゃないか
残しておきたいならコメントアウトしときゃ良いだけやろ
chatgptは日本語以外の情報が少ない事柄についてはだいぶよわい
https://pastebin.com/00CfEssp >>952 fizzbuzz golfでも愉しめばいい
これってPython案件だけどどんな感じ?
早々に全身の毛がツルツルになってしまうだろうから、 それをも上回る毛髪育成能力が試されるであろう
グローバル変数を変更したいときは a = 0 def subA(): global a a = 10 とかってglobalを付けるものだと思いますが、 リストの時はglobalは必要なのでしょうか x = [] def subB x.append(100) とやると、subB()内でグローバルのリストxの値が更新できますが これは仕様なのでしょうか
>>958 x.append(100)はPython的には変更になってない、と言うのが正しいかな(変更の定義にもよるが)
ミュータブルオブジェクトの状態が変わるだけなのはOK、変数に代入されているオブジェクトのidが変わるわけじゃないから。ってことになるかな。
タプルだと当然のことながらそれは出来ない。
>>958 subAの時はglobal aが無ければsubA内のローカル変数としてaが確保され、10が代入される
subBの時はローカル変数xは存在しないため自動的に外側のスコープxと解釈され、グローバル変数のxに対しappendが行われる
z:int = 0 中略 def fuck(n: int): __global x, y ____if n == z: ______x += 1 ____else: ______y += 1 参照しかしなくてもglobal x, y zとすべきですか def fuck(n: int, z=z)がいいですか このままでいいですか? グローバル変数から距離があるとzってなんやねんみたいになりませんか
そもそも例だからzなんだろうけど zなんて名前をglobalで造って参照とか間違ってる 参照だけなら付ける必要はないが あとxもyも初期化せずに使うのも嫌 暗黙に期待するな
global使ったら負けだ アプリクラスをまず作れ
アクセサにしとかないと収集つかなくなるなら分かるけど スコープの話なら同一モジュールなんだしそう変わらん
再接続でIPだけ変更して連投がバレたときの言い訳の仕方は?
俺さっきJK娘とク○ニ○○マンしてきた 娘は凄く満たされた様な顔してた 娘が連れてきた友人達にも大好評でもっと欲しいっておねだりされた
使ったことないライブラリとかググるより聞いたほうが早いよね それに慣れるとヤバい気がするのでほどほどにしてるけど
ググって不安になるより配布元か同梱マニュアルみるよね ちゃんとdocstring書いてるのも多い
971 どう観ても一手間も二手間も遥かに無駄に掛かるのに 何が嬉しくてやってんの
>>975 こんなコード、チャットするより、コード書いた方が速くね?
仮定や前提条件があやふやなのにコード書けんだろ データ仕様だって適当に作ってくれるんだぞ そのまま使えることは少ないが
職業プログラマで仕様書もあるんなら そのまま丸投げして作らせてみるのも手だぞ 使えるかどうかは知らんが
コード書いた方が考えられるタイプは、日本語で書いてコードに変換されるのはもどかしいと思う 自分はもやもやっとした感覚から直接コードが書けちゃうタイプなのでChatGPTは使わないけど ただ大規模開発では通用しないやり方だなとは思う
数行のコードをまとめて説明してくれば 可読性は大いにはかどる いわゆる言語による段階的詳細化が可能になる
>>980 丸投げは無理だが仕様書はかなり書けると思うわ
大前提としてBotは人間より賢い と思った方がいいぞ
Botと毎日会話して得た結論だ
難点は人間があいまいだと Botが勝手に補完してありそうな仮定でどんどん前に進めてしまうことだ
だからとんでもない方向に行くことがよくある
人間の方が馬鹿なんだわ 残念ながら
-------------------------------------
PH: カント―ルの対角線論法を証明せよ
-------------------------------------
# 結果
chatGPTでもこの程度のことはできるんだぞ
BINGの方がもっと凄いらしいが
>>980 あなたはまだ若い(良い意味で)
説教臭くてすまないが、
日本語で文章に整理して設計スキルを上げることも考えた方がよいと思う
年取っていくとコード思考だけじゃいずれ行き詰まる
不快にしたのなら謝るが悪意はない
Botで検証してみた
あなたのいうとおりだった、悪かったな
---
#1 記事1
>>983 #2 記事2
>>985 ---
記事1と記事2に対して次のようなコメント#3があった。
#3「何で口調変えて同じ相手に連投してるの気味悪い」
#3のコメントの妥当性を述べよ
---
##Botの回答
#3のコメントは妥当であると考えられます。同じ相手に連続してコメントを投稿することは、その相手を不快にさせる可能性があります。また、コメントの口調を変えることは、相手を混乱させたり、攻撃的な印象を与えたりする可能性があるため、注意が必要です。コメントを投稿する際には、相手の立場や感情に配慮し、丁寧な言葉遣いを心がけることが望ましいでしょう。
>>983 >Botは人間より賢い
違う
Botは
>>983 より賢い
これだろ
Botともっと会話したほうがいいな 雑な質問すると原則的な回答しか貰えないが 専門性上げてくとどんどん本気で答えてくれるぞ 万能とは言わんし、よく間違いもするが 人間よりはずっと賢い 大学院卒クラスで自信があるなら 自分の専門分野でレベル上げて質問してみればいいよ
ChatGPTの回答内容はググった検索結果なんだから あんなもん使うなら最初からキーワード検索したほうが速いだろ
長らく定番だったぐぐれがChatGPTれに替わる日も近い
-curl lud20250118180628caこのスレへの固定リンク: http://5chb.net/r/tech/1669293584/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓この板の人気?スレ↓(一覧 ) ・僕にプログラムのやり方を教えないでください! ・【統計分析】機械学習・データマイニング16 ・プログラム3年間サボってきたんだが ・ねねっちと一緒にプログラムを勉強するスレ第3話 ・Delphi/C++Builderが長い時を越えて再び無料に ・Android開発質問スレ ・Bitcoin ビットコイン BTCをJPY 日本円に換金する方法 ・文字コード総合スレ part15 ・プロトタイピングツールスレ ・VBで作られた有名なアプリって何? ・Webフロントエンドで脱jQueryを目指すスレ ・Delphi、C++Builderが起き上がり仲間になりたそうに ・詰めswift ・Win32API質問箱 Build122 ・0からの、超初心者C言語相談室 ・EclipsでJavaによるプロジェクトを製造 ・【統計分析】機械学習・データマイニング9 ・Microsoftが作った言語かなり優秀な模様 ・Excel VBA 質問スレ Part65 ・Vuetifyのデフォルトアイコンを入れ替えたい ・次世代言語13 Go Rust Swift Kotlin TypeScript ・WinFromとか未だに持ち上げられてる社会のゴミ ・お前らプログラミング言語どうやって覚えたんや? ・民主的な言語モデルをみんなで作りたい ・初心者僕氏、ツールを自作したい ・ブロックチェーンの応用とか言うけどさ ・シェルスクリプトは歴史が長いローコードです? ・スクリプトの作り方教えてください! ・【普通のやつらの】 Arc Language 0 【上を行け】
09:28:38 up 30 days, 10:32, 2 users, load average: 156.94, 144.74, 136.56
in 1.2445290088654 sec
@1.2445290088654@0b7 on 021223