【まず1嫁】くだすれPython(超初心者用) その59

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2023/07/13(木) 18:48:41.56ID:INS7SIu4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇
【まず1嫁】くだすれPython(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2024/01/29(月) 11:59:52.72ID:fIBxeYXl
ArcadeよりPyxel派

>>350
なぜPyをつけたがるのかだよね
2024/01/29(月) 13:09:20.70ID:+byldzPi
Pythonでゲーム学習するならPyxelなんですかね
2024/01/29(月) 13:23:00.81ID:fIBxeYXl
>>356
オールインワンでツクール寄りだからゲーム部分を主に書きたいならそう
自分でプログラム制御や表示まわりも書きたいならPygame(SDL)とかもっと低層なやつ
2024/01/29(月) 18:01:51.03ID:+byldzPi
>>357
ありがとう
Pyxel、記述少ないし、エディタ付きだから
これだけで完結するのがいいね
しばらく触ってみるわ
2024/02/04(日) 18:26:19.16ID:IyXxpV05
Pythonは初心者向けの文法というけど
難しくてサッパリわからん
なんでコレクションをイテレータにしなきゃいかんの? ジェネレータって何の役にたつんよ
クロージャってどう使うんだか
せめてウェブやろうとしたら入門書がいきなりフレームワークばかりってどうなの?
PHPみたいにさあもっとこうさっくりとさあ

ぜんぜん初心者向け文法じゃないわ
2024/02/04(日) 21:07:46.94ID:lK7N0HuK
>>359
Pythonの文法が初心者向けなんて聞いたことないから君騙されてるよ
PHPできるんならそれで困ることないんだから満足しとけばいいじゃん
361デフォルトの名無しさん
垢版 |
2024/02/04(日) 22:53:10.28ID:PEeZU4gY
文法はめちゃくちゃ初心者向けだろ
362デフォルトの名無しさん
垢版 |
2024/02/04(日) 23:04:08.64ID:VBtkyZXg
文法が分からないんじゃなくてイテレータやジェネレータやクロージャというプログラミングの概念が分かってないんやな

Python特有のものではなく一般的なものでPHPでも全部サポートされてるからそっちでまず勉強してみたらいいんでないか?
2024/02/05(月) 02:56:37.96ID:UJ2m14qd
>>359
コレクション全部に対して何かしたいときに使うのがイテレータ
例えばコレクションの中を探すとか

イテレータで書くとコードがごちゃごちゃするのですっきりかけるのがジェネレータ

クロージャを使うと中でどう動いているか気にすることなくプログラムが書ける

まあ、ググればすぐ出てくる情報だけど
2024/02/05(月) 04:24:58.35ID:9+bn0/St
入門の講座がよくわからんかったから大混乱したよ講師が変だったのかもしらんが

まずアナコンダを入れないとパイソンというのものはまともに動かないって言われた
そんでvenvとかpipについて説明された
後で知ったが本当ならアナコンダナビゲータで環境つくるらしい

アナコンダのせいでSSDに大量のライブラリが入ったがまったく使わんかった
だったらなんでインストールさせた?
変数は整数型と倍精度浮動小数点数がどうのっていって変数型が少ないからJAVAより計算が苦手なんですって
はて???じゃあなんで機械学習とか流行ってん
後で知ったが多倍長整数だし、浮動小数点数はゴミだけど標準ライブラリに固定小数点あるって、むしろ数値演算はどの言語より得意なんだと

パイソン大流行だけどちょっとかじってすぐ初心者講座の講師やるってのは
やめてほしいな
なんか技能検定試験とかないもんかねえ
365デフォルトの名無しさん
垢版 |
2024/02/05(月) 11:14:00.83ID:5G1mpbCF
>>363
君もググったほうがいいぞ
2024/02/05(月) 11:54:56.85ID:DvqIPT3c
>>364
アナルに入れるとパイパンがー
まで読んだ
2024/02/05(月) 13:59:42.51ID:TA7auAWf
パイソンをケツの穴に突っ込んだらどうなりますか?
経験者のかた教えて下さい
2024/02/05(月) 16:37:45.68ID:hliEPH6s
死んじゃうんじゃない?
2024/02/05(月) 16:48:21.19ID:B/pJSj68
公式のチュートリアルであらかた網羅できるのに
なぜ他から手をつけるのか
プログラムが初めてだと時間はかかるけども
2024/02/05(月) 16:57:38.46ID:RaPfxtxC
基本的なことは覚えたら済む話なんだが
いろいろなライブラリがあるからわっかんねぇ
371デフォルトの名無しさん
垢版 |
2024/02/05(月) 19:18:21.11ID:TKxKoCl8
一応ここ質問すれなんで
2024/02/05(月) 21:18:11.87ID:UJ2m14qd
機械学習にアナコンダが必須だった時代があった
pythonには必須ではない

python 自体は長い桁が扱えるかもしれないけど
インタープリターなのでもともとが遅い
機械学習に使われているのは
ライブラリがCかC++で書かれているため
2024/02/05(月) 21:57:24.93ID:B/pJSj68
それならPythonである必要はないよな
Jupyter、numpy/scipyの土壌があったから
そのまま使い続けているだけ
2024/02/06(火) 07:25:06.16ID:C4pk/cEW
jupiternotebookってのはどうしたら空白やタブ記号を表示できますか
パイソンやるのには空白やタブ記号が見えないと困るのです
2024/02/08(木) 06:13:31.80ID:hTf75Vln
パイソンはインタプリタでパイソンプログラムはマルチプラットフォームとききました
ところがPYNUMはC言語だといいます
つまり機種依存があるはずです
そうするとパイソンも機種依存していまいPYNUMをインポートしたプログラムはWindowsとマックでは動かないのではないのでしょうか
私だんだん混乱してきました
2024/02/08(木) 07:41:46.39ID:xta5h9K/
>>375
そういう面倒ごとがあるから、俺はことあるごとに言ってるんだよ
外部ライブラリは使わずPythonの組込み関数と標準ライブラリのみで書けと
ライブラリに振り回されて貴重な人生を無駄にしないようにな
377デフォルトの名無しさん
垢版 |
2024/02/08(木) 07:57:21.03ID:isMXgTpD
https://pypi.org/project/pynum/
これ?
378デフォルトの名無しさん
垢版 |
2024/02/08(木) 07:59:14.95ID:isMXgTpD
>>359>>364同じ人?
2024/02/08(木) 08:35:52.53ID:OewvCXAt
>>374
空白を可視化してるフォントを使うとか
で、何も見えなかったらタブと見なす
2024/02/08(木) 11:05:24.59ID:arovnfBA
全部anacondaで作って.condarcにconda-forgeのライブラリからのインストールも可能にしておくように設定

だが変わったものを取ってくると重くなりがち
biocondaとかもインストール元にしとくか
変わったものをインストールする度に別環境作ったり

pythonの環境設定は結構な初心者泣かせだな
そもそもPCのユーザー名がマルチバイトだったり半角スペースあったりしたらもうアウトだったり

anacondaは公式pythonと同居させられなくて問題になるが
ryeを推してるところもあるが、私的ドキュメントが心許ない
381デフォルトの名無しさん
垢版 |
2024/02/08(木) 11:11:05.34ID:isMXgTpD
anacondaを使うメリットが科学計算用ライブラリが一括で入るぐらいしかない

>>374
そもそもタブを使うことがないし、全角スペースならだいたいのプログラミング用フォントなら分かりやすくしてある
2024/02/08(木) 12:21:39.61ID:6CZwMK9a
conda系はオールインワンで楽なのはわかるけど
そこは一歩進んでコンテナ込みで勧めてほしい
魔法が多くて把握できなくなる弊害まで考えが及んでない
2024/02/08(木) 12:37:21.60ID:LLz4mv+z
>>377
numpyのことじゃね?

>>375
C言語で開発されてるライブラリはインストール時(pip install等)に実行するプラットフォーム用にコンパイルされたバイナリが含まれたパッケージをダウンロードしてくるかソースをからコンパイルしてる
ライブラリをインポートしたPythonのコードが特定のプラットフォーム用のコードを書いてなければWindowsでもMacでも動く
2024/02/08(木) 13:13:39.69ID:LLz4mv+z
>>374
jupyterlabならHighlight white spacesという設定でタブもスペースも可視化できるよ
2024/02/08(木) 14:21:16.75ID:MMHd3icf
基本、C# 以外の全言語は、Linux 用。
だから、Windows 10 でも、WSL2 でLinuxを使う。
Mac ではVirtual Box でLinux

初心者はLinuxが難しいから、Windows上のMSYS2 を使う。
例えば、Ruby Installer がそう

MSYS2なら、1GB ほどのWindows用の巨大なコンパイル環境もインストールする。
これで、Linux用のソースコードを、Windows用の機械語にコンパイルする

ただ、全言語はLinux用に書いているから、
Windows用にコンパイルすると、うまく動かない場合もある

利点は、仮想マシンでLinuxを起動していないから、あまりメモリを使わない。
欠点はLinuxじゃないから、Docker を使えない事。
データベースなどの外部プログラムも全て、Windows用で揃えないといけない

そうすると、中にはバグるプログラムも出てくる。
全てのプログラムがLinux用に作ってあるから
386デフォルトの名無しさん
垢版 |
2024/02/08(木) 18:58:16.38ID:T36ggrXR
>>375
50代のスレに書き込んでいるおっさんだろ?
387デフォルトの名無しさん
垢版 |
2024/02/08(木) 18:59:24.55ID:T36ggrXR
>>385
なかなかのキチガイだなw
388デフォルトの名無しさん
垢版 |
2024/02/08(木) 20:35:36.46ID:PMTWmDyI
>>385
Rubyに関わるのはこんなキチガイばっかりです
2024/02/09(金) 08:55:46.64ID:JpXObIpk
河上幸恵ちゃんの名曲
心の中のルビーというやつだな

皆さんありがとう
また一歩自分の成長を感じました
C言語のライブラリはそれぞれのパソコン用がインストールされる高度な仕組みであること
ジュピターで空白タブを表示する方法
皆さんはわたしの成長ホルモンです
390デフォルトの名無しさん
垢版 |
2024/02/14(水) 15:26:02.91ID:uypU95In
os.path.isfileの様なやり方でループなど使用せずに、
拡張子を除いた部分のファイル名が存在するか確認する方法ってありますか?

例えばファイル名”test01.txt”,”test01.png”のどちらがディレクトリに存在していても、”test01”だけでファイルの有無を確認したいです。
391390
垢版 |
2024/02/14(水) 15:45:38.27ID:uypU95In
自己レスです。
とりあえず、glob.glob(‘/hoge/test*’)としてやってみました。
こんな方法もあるよというのがあれば教えてください。
2024/02/21(水) 10:41:22.80ID:tURWv7oT
os.path.exists
2024/02/21(水) 22:24:18.46ID:XpCZiALh
globでいいと思うけど一応
https://docs.python.org/ja/3/library/pathlib.html#pathlib.PurePath.stem
2024/02/25(日) 04:23:40.84ID:oObtEil6
Pythonのandroidでの実行環境って何を入れたらいいですか?
開発環境はとりあえず必要ないので
あくまでスクリプト・インタープリターとしての最低限の実行環境がほしいのです
CPythonみたいなリファレンス実装があればいいのですけど
2024/02/25(日) 20:23:29.26ID:hMq2Qtw2
termuxかpydroidかなあ?
2024/02/25(日) 20:32:04.31ID:hMq2Qtw2
python以外もつかうならtermux、uiが使いたいならpydroidかな?
2024/02/25(日) 21:17:43.23ID:oObtEil6
>>395,396
レスありがとう
どちらかというと開発環境みたいな感じなんですね
ほかにQPythonとかQPython 3Lとかはどうですか
よりシンプルな実行環境という観点からするとどれになるのでしょうか
2024/02/26(月) 23:37:11.68ID:GBHslgGd
レビュー見る限りその2つはあまり良くなさそうだね
2024/03/05(火) 16:51:36.85ID:90GfYifC
凄い基本的な質問なんだけどライブラリのことを考えるとPythonはanacondaとPythonそのままどちらのほうがお勧めですか
または他にお勧めのツール?的なのある?
2024/03/05(火) 17:04:30.62ID:90GfYifC
ライブラリじゃなくてモジュールでした
2024/03/05(火) 18:49:14.75ID:xnDaPNvs
とりあえず、公式実装のCPythonでいいのでは?
やりたいことが明確になってから必要に応じてanaconda環境を構築すればいいと思う
2024/03/06(水) 15:55:05.95ID:fNmftXEr
何かライブラリなどをインストールしようとするたびにエラーがでて説明通りにできない
こんなもん?
2024/03/06(水) 16:59:36.65ID:0Fz1GTqO
説明が悪いんでは
前提としてる環境が違っててそこまでは書かれてないとか
2024/03/06(水) 18:30:41.18ID:vezaZ1iv
>>402
その説明では分からない
405デフォルトの名無しさん
垢版 |
2024/03/07(木) 20:32:37.26ID:aIlNu4oQ
自分はPycharmのflaskでウインドウズでは環境構築できなくて諦めました
同じことやってるのに、Macでは動いてウインドウズではエラー
Pythonって学ぶスタート地点に立てない人少なくないかも?
2024/03/07(木) 20:50:36.75ID:Xi0SwO4p
>>364
マジで誰でもできるよ
Pythonに限らずだけど経験一年以上とかで求人出てるし
俺は学歴で落とされたがね
そもそもanaconda使いながらpipとか使うと環境壊れるよ
2024/03/07(木) 20:53:48.81ID:Xi0SwO4p
>>359
まぁ人によって印象違うんだろうな
俺はPHPはもう一生触らないと決めたけど

そしてイテレータやらクロージャやらやんなくていいから
そういうのは出てきた時に意味が分かれば十分
2024/03/08(金) 00:09:38.55ID:xxGRRb0E
基本、全言語はLinux 用。
Windows 用は、C# だけ

だから、Windows 10 から、WSL2・仮想マシンでLinuxを起動できるし、
Docker Desktop も使える

だから、Windows/Mac ネイティブ機械語は動かない。
Linux用のソースコードを、Windows/Mac用コンパイラで機械語にするのは邪道

でも、MacはUNIX のBSD だから、Linuxと似ているので、まずまず動くけど、
仮想マシンでLinuxを起動する方が確実

Windowsで、MSYS2, Visual Studio でコンパイルすれば、Winodows用の機械語になる。
しかし各モジュールの作者は、面倒くさいからLinuxにしか対応しないので、
Windows/Macでは動かない
409408
垢版 |
2024/03/08(金) 00:21:23.96ID:zqy1N+OL
なぜ、Windows/Mac用のネイティブ機械語にしたいのかと言うと、
仮想マシンでLinuxを起動したくないから。
2つのOS が動くから

その代償に動かなくなる。
Linuxじゃないから、Docker Desktop も使えないし

例えば、自分がC/C++ のモジュールを書く時、Linuxにしか対応しないよな。
Windows/Mac用のファイルシステムや、プロセス/スレッドに対応しないはず。
3つのOS で動くようには書かないはず。
面倒くさい
410デフォルトの名無しさん
垢版 |
2024/03/08(金) 00:50:54.05ID:FJDucPJF
>>408
またこの馬鹿の書き込みか
ruby馬鹿よりはマシだけど
2024/03/08(金) 04:38:04.66ID:xViuWNSj
クロージャとデコレータが極悪に難しい
ドキュメントや本を何冊も読んだが何のためにどうやって使う機能なのかさっぱりわからず自己嫌悪に陥る
この世は無知な方が幸せなんだよな…
2024/03/08(金) 15:18:49.79ID:b4tlhFyW
python齧ったけどわけわからん
やっぱCOBOLがわかりやすいわ
2024/03/08(金) 16:10:05.35ID:JEcqFwbk
Pythonで何作れたら中級者くらいって言えるかな?ゲームとか?
2024/03/08(金) 16:11:57.72ID:uXHmVfiG
VS Code使ってたせいだか何だかわからんけど、気分変えて作業フォルダを変更したらimport命令で自作モジュール読み込みするとエラーに。
メインpyファイルと同じフォルダの別pyファイルがimportできない

ぐぐりまくってsys.path.append("ここに任意パス")で上記フォルダの絶対パスを指定したらいけたが、
じゃあそもそも元のパスはなぜ指定もせずにimport出来てたのかっていう疑問が残った。なんか怖い
2024/03/08(金) 16:15:01.89ID:uXHmVfiG
ちなみにこういうエラーね
ModuleNotFoundError: No module named 'My_Mod'
416デフォルトの名無しさん
垢版 |
2024/03/08(金) 16:40:50.56ID:T/tXaIRT
>>414
そうですね。
怖いですね。
2024/03/08(金) 17:18:26.85ID:YKaVE2hY
>>414
もしかして:Pythonのバージョンも違う
418デフォルトの名無しさん
垢版 |
2024/03/08(金) 18:34:14.21ID:1bn2hcNH
>>414
https://docs.python.org/ja/3/tutorial/modules.html#the-module-search-path
には、
「入力されたスクリプトのあるディレクトリ (あるいはファイルが指定されなかったときはカレントディレクトリ)。」がsys.pathに含まれてるって書かれてるのに変だよね
絶対パスを書く他にも、
os.path.abspath(__file__)とかする方法もあるよ
pathlibでPath(__file__)と書いても良いけれど(自分は実はこっちばかりだけど)
2024/03/08(金) 22:04:15.13ID:Olq6J6jV
>>402
pip環境が壊れちゃったのかなあ
2024/03/09(土) 02:10:53.23ID:V+9wfNne
外部ライブラリはPythonの強みであり同時に弱みでもあるね
ライブラリがらみのトラブルで世界中でどれだけの人生が無駄に消費されているだろうか
2024/03/09(土) 02:23:23.87ID:RQZY5Guv
Ruby のrequire が使うロードパスには、
current working directory(cwd) は含まれていないから、

require 'abc' はエラーになるけど、
相対パスのrequire './abc' はOK

一方、require_relative 'abc',
require_relative './abc' は、どちらもOK

相対パスも、その起点がどこからかという問題もある。
ファイルからの相対なのか、cwd からの相対なのか

cwd を変えて、実行してみればよい
2024/03/09(土) 05:27:46.59ID:b/ATK8wU
結局開発環境だと.venv/bin/activateの中にPYTHONPATH書くのが早いんだな
423デフォルトの名無しさん
垢版 |
2024/03/09(土) 12:09:06.37ID:innwL8du
開発環境でもpip installしたほうが
424デフォルトの名無しさん
垢版 |
2024/03/09(土) 12:15:40.44ID:innwL8du
配布先とか別環境でも同じ使い方できるから楽
なんとかtoml最小限書くだけでできるよね?
レス別れちゃってごめんね
2024/03/09(土) 12:47:03.50ID:hNim5q60
venvで細かく分けて保存
何かインストール難しそうなものがあったら
新たな環境作ってそこにpip install
それで壊れたらその環境捨てる

という訳で気付いたら環境が15個とか出来てる

anacondaでconda-forgeから取れるようにすると少し楽だが、いずれにしても管理の習慣が無い人ほどしくじり易い
「どうせ上手く行くから大丈夫じゃねーの?」と舐めプして
基本環境にpip失敗してpython丸ごと再インストールとなる

一般に「アップデートして最新にしましょう」というのがOSや市販アプリなら常識だが
pythonでは他ライブラリとの相性もあり、何でもかんでもupdateすると怖い
conda update condaはさすがにまあ安全だが
426デフォルトの名無しさん
垢版 |
2024/03/09(土) 17:35:27.63ID:KPeEXLi+
>>425
>基本環境にpip失敗してpython丸ごと再インストールとなる
ここがちょっとわかんない
2024/03/09(土) 18:34:45.65ID:bB58iYl/
管理者権限でpip実行してんじゃね?
2024/03/09(土) 19:30:49.00ID:b/ATK8wU
AIないと何もブログラミング出来ないんだけどこれでいいのだろうか
2024/03/09(土) 21:56:34.21ID:Dg4V+RZb
>>428
いいんだよ
プログラミングなんて本来人間のやる作業じゃない
コンピュータのことはコンピュータに任せりゃいい
人間にしかできない仕事をやればいい
430デフォルトの名無しさん
垢版 |
2024/03/10(日) 04:36:05.69ID:YuaEvpE6
>>429
こういう馬鹿ばっか
431デフォルトの名無しさん
垢版 |
2024/03/10(日) 05:30:03.67ID:DGzgjbzK
使えるものは使いこなして効率や生産性をあげないと
使いこなす人に出し抜かれる
有能なアシスタント雇ったと思えばいいじゃないかな
2024/03/10(日) 08:41:17.31ID:GTFEZR4A
>>430
ChatGPT使って書いてみなよ
今までプログラミング技術の習得に費やしてきた時間が全て無駄だったとわかる
433デフォルトの名無しさん
垢版 |
2024/03/10(日) 11:04:27.88ID:xltcl5gU
>>432
全くそうは思わないな
matplotlibみたいな使うのにリファレンス読む時間がめちゃくちゃ長いのは勉強しなくてよくなった感じがするけど
ChatGPTに短い日本語で指示すれば書けるようなプログラムしか書けるようになってないだけだと思うよ
超初心者スレでいうのもあれだけど
434デフォルトの名無しさん
垢版 |
2024/03/10(日) 12:28:14.94ID:2l3n+JcC
Excelのマクロ記録というものも知らなそう
435デフォルトの名無しさん
垢版 |
2024/03/10(日) 17:18:49.80ID:NwXd028v
漁獲を Excelで管理するということ?
2024/03/10(日) 22:53:10.30ID:+HoghBJd
サバの管理も必要
437デフォルトの名無しさん
垢版 |
2024/03/12(火) 18:56:30.23ID:ArnB6rOr
関数間を1行空けると、Vimの Pymodeに、
1 error| expected 2 blank lines after class or function definition, found 1
と怒られ、3行空けると
1 error| too many blank lines (3)
と怒られ、余計なお世話に憤激した。

https://peps.python.org/pep-0008/#blank-lines
> Surround top-level function and class definitions with two blank lines.
などと書かれてあるが、お前等、きっちり2行空けているのかね。
438デフォルトの名無しさん
垢版 |
2024/03/12(火) 22:47:34.41ID:BkSU/P3i
>>437
空けてる
だってflakeに怒られるんだもん
どうでもいいような書き捨てコード書くときはそもそもJupyterとかで書いておしまいだから
PEP8とか気にしないけど、IDEで書いてる時点でメンテナンス性を意識しているから、
PEP8のようなルールに従っておこうという気持ちになっている
439デフォルトの名無しさん
垢版 |
2024/03/12(火) 22:47:41.26ID:vXSbeabq
__ <- このアンダーバーをインデントと仮定する

for x in xs:
__for y in ys:
____for z in zs:

このようにxyzの多重ループで
zからyの所に抜けたい場合とzからxに抜けたい場合に
書き分けられる構文 python3にある?

perl5 で書くとこんなラベル構文がある
https://ideone.com/rIV69S
2024/03/12(火) 22:53:07.42ID:uGnBKOkv
https://github.com/PyCQA/pycodestyle/issues/400
シンプルなようで厳格化するのはたいへんでおもしろい
2024/03/12(火) 23:00:25.97ID:uGnBKOkv
>>439
インデントが空白4文字な世界だと
その場で3重の入れ子なんて書かないから
関数かなんらかのブリッジが介在するはず
だから例外や返り値でいくらでも制御できる
デコレータつかうのといいかも
442デフォルトの名無しさん
垢版 |
2024/03/12(火) 23:05:19.86ID:n3W+Fun6
>>439
gotoパッケージを入れて、goto文を使ってもいいが、そんなループをしないといけないのか?
443デフォルトの名無しさん
垢版 |
2024/03/12(火) 23:10:52.05ID:n3W+Fun6
>>439
ループする条件とbreak文の組み合わせでもいいのに
ネタなの?
2024/03/12(火) 23:22:29.84ID:oG8PduKS
>>437

きっちりつか、autopep8かけるだけ。
445デフォルトの名無しさん
垢版 |
2024/03/13(水) 00:57:33.03ID:TCqO/DNK
Pythonはかなり古めかしい考え方のプログラミング言語だからな
2024/03/13(水) 02:43:27.57ID:ptopN5lQ
Ruby で、多重ループから一気に抜け出すのは、
ラベル付きのKernel.#throw/#catch を使う
2024/03/13(水) 05:11:03.78ID:NVpOWzEq
Rubyはcallccあるんじゃない?なんでもできるでしょ
Pythonもコルーチンあるから今のVMで実装はできそうだけど
あえて提供してないんだろうな
2024/03/13(水) 08:24:43.29ID:fKc7/92t
あれ、breakやcontinueの後に脱出先のラベル名を指定できたはずだが
別の言語だったかな?
2024/03/13(水) 08:38:24.40ID:6IE1D2aF
javaだな
450デフォルトの名無しさん
垢版 |
2024/03/13(水) 12:46:02.87ID:q50ahorY
>>441
インデントが空白4文字であることと入れ子を3重にしないことの因果関係が不明
関数やブリッジを介在した方がわかりにくいコードになることもあるぞ
そもそもCでも空白4文字インデントを使うことが多いが、
普通に3重ループは出てくるでしょ
例えばここ
https://github.com/numpy/numpy/blob/9de8a809efa4c8193a168af9191a0c69290db3e4/numpy/_core/src/umath/ufunc_type_resolution.c#L1517

波括弧がないからlambdaでreturnを持つ複数の文を1つの式で扱えないとかだったらわかるけど、
インデントは関係ないでしょ

綺麗なコードを設計しよう、書こうとしてさまざまななテクニックを知ろうとする意識は大事だと思うけど、
実践なしに本とかに書かれてた「このテクニックはこういうときに使う」を鵜呑みにして、
テクニックを使わない方が見通しが良くなるような簡単な場合にも無理に使おうとするのは
よくないと思うけどなあ。デザインパターンの濫用みたいな感じ。
戻り値で判定はあり得ても例外はあり得ないわ。
誤用としか言いようがない。
2024/03/13(水) 13:02:27.40ID:q3MDl01V
for~else ってなんか直感的じゃない気がするんだけど、なんで「else」なの?

completed
breaked, aborted
finally
みたいな単語なら分かりやすいのに。
2024/03/13(水) 13:27:55.78ID:baZhL1uT
すげえ大昔からあるんだな
https://stackoverflow.com/questions/682185/which-version-of-python-added-the-else-clause-for-for-loops
2024/03/13(水) 15:16:21.22ID:NVpOWzEq
>>450
妄想がはげしい
5chで5行超えたら一旦立ち止まろう
後半句点も復活しているw
2024/03/13(水) 15:54:43.36ID:m9o7WxBh
>>439
それ用の構文は無い
大域脱出の代替手段はいくつかあるけど基本的には早期リターンで対応する
その例だと内側の2重ループを関数化してbreak, continue, return(もしくはyield)で対処可

>>451
for-elseはBad Partsなので使わない
Effective Pythonにも使うなと書いてある
よくある”not found”みたいな処理はfor文の一部としてではなく
一つ上位でハンドリングすべき処理なので役割分担が間違ってる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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