Pythonのお勉強 Part66

■ このスレッドは過去ログ倉庫に格納されています
2021/11/12(金) 07:48:11.11ID:vp8lzav70
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇
Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2021/11/23(火) 00:17:52.93ID:Ln8GWMq+0
>>120
Ruby では、and/or の遅延初期化をよく使う

p a = a || 1 #=> aが未定義のnil で偽なので、右辺が評価されて1

a = 2
p a = a || 1 #=> aが真なので、短絡評価で2。右辺は評価されない

p b = b && 1 #=> bが未定義のnilで偽なので、短絡評価でnil。右辺は評価されない

b = 2
p b = b && 1 #=> bが真なので、右辺が評価されて1
138デフォルトの名無しさん (ワッチョイ a32c-pEHs)
垢版 |
2021/11/23(火) 00:44:36.44ID:xEN2JBOU0
>>136
それ
x = a if a else b
じゃね?
なんか避けたいって言ってるやつ
2021/11/23(火) 01:00:51.66ID:h5ckzt1c0
Noneかどうかで判定したいってこと
if a
だと0でも空文字列でも偽だから曖昧になりがち
if a is not None
でぜんぜん困らんけどね
140デフォルトの名無しさん (ワッチョイ 3bda-ObXG)
垢版 |
2021/11/23(火) 02:02:18.19ID:4MVUDnE90
ヌル合体とか欲しいよねPythonにも、
2021/11/23(火) 02:33:06.96ID:bb25eqH30
PEP505は全く進展ないね
3.10には入ると思ってたけど
2021/11/23(火) 10:09:13.49ID:OzyPSNUz0
値が入っていることを想定しているけれど、想定外にNoneだった時の為のガード
みたいな使い方をしたいんだろうけど、
そういうのは明示的にifとかtryで書いた方がいいよな
143デフォルトの名無しさん (オイコラミネオ MM67-83eS)
垢版 |
2021/11/23(火) 10:41:32.64ID:iYWDXWdAM
むしろ気をつけないといけないのは、想定外にTrueになってしまうケースだ。
たとえば、昔のDjangoのUserモデルのis_authenticatedは、プロパティじゃなくてメソッドだった。
2021/11/23(火) 13:28:59.61ID:Cd+od5Ii0
Noneも曖昧だからね
単なる未定義なのか空集合なのかエラーなのかNoneそのものなのか
ディクショナリー検索等でNoneが帰って来る仕様だがどう扱うか
2021/11/23(火) 13:32:03.52ID:KM4P0q2w0
結局は>>143の言うとおりなんよ…

我々はすでに知ってるんよ、中身がNullかどうかに注目した結果
普通にコード書くだけでトライキャッチスパムになってしまうJavaとかいう言語を…
2021/11/23(火) 13:40:48.37ID:OzyPSNUz0
エラーの情報をちゃんと持ってて、ずっと上流の呼び元までそれが伝わる言語あったな
なんだっけ

関数は引数に従って値を返します
という前提で普通の言語は設計されているけど、
関数は引数に従って値を返します。返さないこともあります
でないといけなかった
2021/11/23(火) 13:43:00.09ID:x4PI0/Sq
fastAPIのルーティングでデコレータ使わずに
app.add_api_route("/hoge", hoge, methods=["GET","POST"])
な感じで分離してやってみたけど、各リクエストメソッドでバリデーションが異なる時に躓いた

このまま共通のhogeだと互いのバリデーションclassが422 Unprocessable Entityを引き起こしてしまうので
app.add_api_route("/hoge", hoge, methods=["GET"])
app.add_api_route("/hoge", hogePost, methods=["POST"])
みたいにして新たにhogePost追加するという書き方に。

かと言ってデコレータ使うと
@app.get("/hoge")
def hoge():
@app.post("/hoge")
def hoge():
みたいにせっかくのルーティングの分離管理が二度手間かつ無駄に
というジレンマ

デコレータ使わない場合
>新たにhogePost追加する
というのが無難なのだろうか・・
2021/11/23(火) 15:02:56.49ID:Vfqk4Xs70
validator 内で GET/POST 区別したら?
149デフォルトの名無しさん (オイコラミネオ MM67-83eS)
垢版 |
2021/11/23(火) 15:18:14.11ID:nqaaqo53M
app.add_api_route("/hoge", hoge, methods=["GET"])
app.add_api_route("/hoge", hogePost, methods=["POST"])
これでいいんじゃね。関数として分けておけば、
validatorもデコレータ(ファクトリ)にしてみたり、いろいろ柔軟にできる。
@validate('GET')
def hoge()
@validate('POST')
def hogePost()
2021/11/23(火) 16:09:24.71ID:x4PI0/Sq
>>148
今はpydanticなvalidor使ってるけどクラス変数の評価前に区別する方法があったりするのだろうか
>>149
うんとりあえずはそんな感じでリクエストメソッド分だけ用意することにした

d
2021/11/24(水) 00:31:29.22ID:9nGxCHAd0
★★★★★
会話をすればポイントが増えてアイテムを買える。
次世代の大型掲示板、メルプラネット。
https://merpla.net/boards/
2021/11/24(水) 04:45:08.04ID:ZcuSX9hJ0
>>144
かと言って最初からOption型やmaybeモナドでライブラリ構成されてもウザいしね
2021/11/24(水) 15:08:35.99ID:lCK/bdd80
名前と数値がセットになったような内容を扱う時、
セットにしただけのclass作る?
2021/11/24(水) 18:01:26.90
キーと値がセットになった各値をどう扱うかによって
インスタンス化するか、辞書にとどめておくか、ライブラリ使うか
変えるかなぁ
2021/11/24(水) 21:37:03.97ID:YZcLPgmZ0
>>153
自分だけしか使わないならダラダラ書くけど
引き継ぐ可能性がある場合はクラスにしといた方がメンテしやすいんじゃないかと思ってる
2021/11/24(水) 22:14:50.32ID:lCK/bdd80
リファクタリングの本読んでて、オブジェクト指向の初心者は
小さなオブジェクトを使うのを嫌がる的なことが書いてあって、そんなもんかなと
157デフォルトの名無しさん (ワッチョイ a32c-pEHs)
垢版 |
2021/11/24(水) 22:49:34.83ID:Ph9UZvc+0
通常そういうデータってどっかのクラスのメンバ変数で辞書かnamed tupleじゃねえか?
keys:names のみのクラスってどういう状況であり得る?
158デフォルトの名無しさん (アウアウウー Sa3b-bFQI)
垢版 |
2021/11/25(木) 00:14:54.89ID:Mg+a9DvFa
集計目的ならdefaultdict
2021/11/25(木) 06:32:01.73ID:kAK1JHHz0
>>157
通常と言われてもなあ
2021/11/25(木) 07:36:38.15ID:1AK1NI0N0
ただの名前であってキーとは言ってない
重複のない保証はない
name[i]とval[i]で管理したいところ
valでソートをかける
classにせずとも余裕でやれる
やれるけど?
2021/11/25(木) 07:55:54.60ID:wc50HyKuM
ただの名前をキーと言う奴はもれなくアホだと思う
2021/11/25(木) 09:04:00.52ID:kAK1JHHz0
>>160
じゃあその組を管理するRDB風のクラスがいいんじゃないの?

#セットという言葉の使い方が気になる
2021/11/25(木) 09:23:53.44ID:1AK1NI0N0
いいんじゃない、の加減なんだよな

しなければならない / 是非するべき / した方がいい / しなくてもいい / しない方がいい / しない
そのへんの温度感が経験で違うのだろう
2021/11/26(金) 20:45:55.13ID:wc7annti0
urlopen()をwithで取得してwithを抜けると何が起きるの?
2021/11/26(金) 20:48:58.06ID:s3jo07500
シメられる
2021/11/26(金) 22:16:46.96ID:nRTAMUqI0
https://docs.python.org/ja/3/library/urllib.request.html#urllib.request.urlopen
> HTTP および HTTPS URL の場合、この関数は、わずかに修正された http.client.HTTPResponse オブジェクトを返します。

class HTTPResponse(io.BufferedIOBase)
で__exit__()はオーバーライドされてないから受信データにアクセスできなくなるだけ。
意図してる通りだろうけど
> より高水準のHTTPクライアントインターフェースとして Requestsパッケージ がお奨めです。
だし、説明が追加されることはなさそう。
2021/11/26(金) 22:30:51.87ID:wc7annti0
何かのリソースが自動で開放されるとかではないのか
2021/11/27(土) 18:48:32.12ID:Ce5RxaUa0
pygameってみんな使ってないのか?
せっかく二冊ほど読み終えたのに動かそうと思ったら
3.8じゃうごかないとか言われて途方に暮れてるんだが・・・

すなおにゲームはunityつかえってことか・・・・
2021/11/27(土) 19:23:42.37ID:QJDif1Cg0
2021/11/27(土) 19:29:31.81ID:IgXLbzKoM
>>168
たくさんあるから
 Python ゲームエンジン
で検索して目的に適してるのを選べ
2021/11/27(土) 19:45:13.67ID:JJsR/G8Z0
pygameでmidiが取り扱えるんだよな

ハノン弾いてリアルタイムで正確さを表示したら面白いと思って
ずっと前に作りかけて放り出してある
今ならすぐ作れそう
2021/11/27(土) 19:54:52.11ID:i0YnXTZB0
pygame、3.8.10で動くけど?
173デフォルトの名無しさん (ワッチョイ b72c-pIXc)
垢版 |
2021/11/27(土) 23:14:16.59ID:bPwHecSK0
pygame2やれ
2021/11/28(日) 00:16:01.67ID:0Kkbs8iXM
>>173
公式によれば3.9も
ただメインテナンスはやや停滞なんかね
2021/11/28(日) 00:55:05.96ID:YY1hk1pY0
色々試したらうごいたわありがとう
レースゲーム動かせるわ
2021/11/28(日) 00:55:37.48ID:YY1hk1pY0
普通にpipでいけたよ
2021/11/28(日) 09:18:19.48ID:swBDA3nq0
Pythonエンジニア認定試験のことってここでも大丈夫ですか?
2021/11/28(日) 09:26:25.30ID:6NVlX2It0
pythonが使いこなせるかどうかの能力なんて、
各種ライブラリのことをどこまで知ってるかだからなあ
言語仕様の部分はすぐに全員カンストするから差が出ない
標準ライブラリに限定して問題作ると、もっと便利な方法があって現実的でなくなる
2021/11/28(日) 09:39:22.33ID:o94Sh6rb0
そうだね
そもそもpython自体は簡単だし
ライブラリを使いこなす知識の方が重要だよね

認定試験無いよりはマシだろうけど
認知度が低いから結局試験の内容を説明しないとイケないんだよな
情弱処理持ってる方が話は早い
2021/11/28(日) 09:46:54.78ID:6+AWQcj90
>>177
とりあえず質問してみたら?
2021/11/28(日) 14:43:59.37ID:6NVlX2It0
改行区切りで書かれたファイルがあって、これを改行無しでリストに読み込みたい
そして、リストを改行区切り形式でファイルに書き出したい

内包表記で改行を削って、書く時にはjoinで改行付けるとかすればできるけど、
もう一段スマートにやれないかな
2021/11/28(日) 16:14:46.54ID:TzUvGqBa0
フツーにforで回してprintするだけじゃん
2021/11/28(日) 16:22:25.89ID:6NVlX2It0
読み込み側は、
f.read().splitlines()
ですっきり書けた

この逆をする関数があればいい
リストの各要素を改行で区切って文字列に変換するような関数
ってそれは単にjoinの特殊ケースに過ぎないから、無いのも頷ける
2021/11/28(日) 17:25:05.50ID:/1mvnnK50
頭悪そー
2021/11/28(日) 17:39:15.04ID:6NVlX2It0
あるべき姿はpickle
でもテキストエディタでも開きたいので、jsonとかyamlとか
それでも編集しにくいので、どうせリストだしと改行区切りまで落とすと、
スマートな手段が無くなる
186デフォルトの名無しさん (ワッチョイ d736-5r7x)
垢版 |
2021/11/28(日) 17:57:10.63ID:9rjB7eJM0
自分でjsonEditor作るのは面白いよ。中級クラスのレベルかな。
データも list >> dict >> dict >> list >> list >> dict >>int 見たいにnest構造になってるから編集しようとすると、そこそこ扱いも難しいし。

画面構成から考えれば、いい練習問題になるよ。
2021/11/28(日) 19:57:15.81ID:Wh0Bw3X30
>>180
ありがとうございます!


Pythonエンジニア基礎認定試験を受けようと思うのですが、
スッキリわかるPython入門を導入書として使ってからPythonチュートリアルをしようと思うのですが、同じように勉強して合格された方はいますか?
188デフォルトの名無しさん (ワッチョイ 9fad-39v0)
垢版 |
2021/11/28(日) 21:05:28.72ID:jvvYPFKj0
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw
2021/11/28(日) 23:19:25.63ID:SJI7MgMY0
>>181
Ruby なら、配列を出力するだけで、改行区切りになるけど

ary = [ "ab", 1 ]
puts ary

出力
ab
1
2021/11/28(日) 23:28:07.54ID:6NVlX2It0
perlだとこんな感じ
デフォルトはスペース区切りなので改行に変更

@a = (ab, 1);
$" = "\n";
print "@a";
191デフォルトの名無しさん (ワッチョイ 9f01-DInY)
垢版 |
2021/11/29(月) 02:28:05.31ID:Tbj9SxrO0
>>181
writelines()じゃね?

https://techacademy.jp/magazine/28281
2021/11/29(月) 06:26:32.46ID:8tyLAOgdM
>>191
writelines(lines)
行区切り文字は追加されないので、書き込む各行の行末に行区切り文字を含ませるのが一般的です。
https://docs.python.org/ja/3/library/io.html
って書いてあるからダメでしょ

そもそもそのリンク先
text = [
"メロンn",
"イチゴn",
"みかんn",
"スイカn",
"ぶどうn"
]
なんて書いてる時点で信用できない
193デフォルトの名無しさん (JP 0H8b-pIXc)
垢版 |
2021/11/29(月) 09:20:02.45ID:LowbA3aSH
テックアカデミー(笑)
2021/11/29(月) 09:26:34.67ID:LcIxau/K0
pythonの裾野の広さを感じさせてくれるサイトだよな
195デフォルトの名無しさん (アウアウウー Sa5b-lY6R)
垢版 |
2021/11/29(月) 11:03:42.15ID:uzcK9QD5a
Perlの文法も気持ち悪いな。
シェルスクリプトかよ。
Pythonのやり方はJavaかC++からの輸入だな。
196デフォルトの名無しさん (ワッチョイ 9f01-DInY)
垢版 |
2021/11/29(月) 11:04:55.76ID:Tbj9SxrO0
>>192
ダメじゃねえかwすまんこ
197デフォルトの名無しさん (ワッチョイ bf66-D8AZ)
垢版 |
2021/11/29(月) 11:29:59.53ID:FdW61dzG0
>>193
クソのくせにやたら検索に引っかかってくるからウザイ
2021/11/29(月) 11:37:52.94ID:pAg5RKMOd
テックアカデミーと侍は中学生に書き直させた方がまだ読めるようになるレベルのゴミ
2021/11/29(月) 11:46:02.57ID:FVbxGJ7fM
readlinesやwritelinesで改行コードを扱う方法を提供しないのがPythonクオリティー
テックアカデミーをバカにできない
2021/11/29(月) 12:00:17.47ID:7wd93ooE0
日本語の技術サイトはろくなのがない印象
Pythonに限らないけど
2021/11/29(月) 12:04:08.22ID:pAg5RKMOd
昔はインスタントPython、インスタントハッキングがjpy公式にあったから
そこで初心者は学習できた
あと結局pythonは公式ドキュメントとライブラリーリファレンス読み込むことで大抵の問題は解決する
個人的な問題を解決したかったらそれなりにキャリアのある個人ブログ探すのが安定する
2021/11/29(月) 12:16:52.32ID:BKJFnTwg0
>>195
Perlはシェルスクリプトの置き換えが目的そのもので順当
PythonはLuaのようなアプリ内スクリプティングな応用が当初多かったし
記述が簡便なのが特徴じゃない?なんで所々厳格でなくて歪なのが残念な点
というかJavaとは同世代だし
2021/11/29(月) 23:18:44.84ID:f/Sm4Tcj0
Python は、改行コードがめちゃめちゃ難しい。
global newline みたいに自動的に、OS に合わせて変換してくれる、機能はないのか?

Ruby では簡単なのに
2021/11/29(月) 23:25:16.24ID:LcIxau/K0
入力はどんな改行が来てもちゃんと読んで、
出力は今動いてる処理系に合わせて出力すれば、それで問題ないのでは
2021/11/29(月) 23:33:33.84ID:BKJFnTwg0
コード上改行はLFで統一できてる。
何も指定せずテキストモードでopenしたらCRLF→LFの変換はしてくるし
Windowsコンソールに出力したらLF→CRLFも透過的に行う。
バイトストリーム用にos.linesepも用意されてる。
2021/11/30(火) 06:02:42.47ID:uWG/s7m50
\nってCRLFのことだと思ってた
2021/11/30(火) 06:03:41.68ID:1Yo8WetK0
円得ぬ
2021/11/30(火) 06:04:10.45ID:TlXezoe70
どなたか
>>187
をおねがいします!
2021/11/30(火) 06:24:38.24ID:uWG/s7m50
まともな検定だったら、本だけ読んで通ると思えない
210デフォルトの名無しさん (オイコラミネオ MMab-umM0)
垢版 |
2021/11/30(火) 06:39:04.04ID:oWvAOz19M
>>205
自動なのがかえってめんどくさい。
2021/11/30(火) 06:49:20.24ID:uD8YTZMG0
>>208
いますよ
2021/11/30(火) 06:52:03.48ID:uPKcxb4Vd
>>211
ありがとうございます!
Pythonチュートリアルを読む前の参考書はどんなのを使われました?
2021/11/30(火) 07:02:57.59ID:uD8YTZMG0
>>212
ダラダラ質問小出しにされるのはウザいのでまとめて
2021/11/30(火) 07:09:37.62ID:uWG/s7m50
インタプリタなので仕方ない
2021/11/30(火) 07:17:14.56ID:uD8YTZMG0
じゃぁリストかタプルでちょうだい
2021/11/30(火) 07:35:53.88ID:uWG/s7m50
なんでリストが[]でタプルが()なんだろうな
一番使うものが一番普通な方が収まりがいいのに

辞書が{}なのも、別に[]を使っても中にkey:valがあったら辞書と判るのに
中身が無い時に区別付かないけど、そのくらい何とかなるだろ
217デフォルトの名無しさん (ワッチョイ ff10-1CBA)
垢版 |
2021/11/30(火) 08:13:31.92ID:JFviu3vk0
確かに辞書とsetは同じ{}だしな
2021/11/30(火) 08:51:28.65ID:XgdAJwDY0
>>207
'\n'がlength 1 string objectであると理解できてないのではないか

またCの'\n'も理解できてないのではないか
逆にCでのstrlen(”\n")の値とか
2021/11/30(火) 08:59:45.37ID:XgdAJwDY0
>>217
これまでの言語の慣習に合わせただけでは?
またそれは重要だろう
220デフォルトの名無しさん (オッペケ Srcb-1CBA)
垢版 |
2021/11/30(火) 09:29:09.44ID:BeJPAIX2r
>>216
タプルは()、は少し違うな
正確にはカンマがタプルを生成する
a=1,2
もタプルになるから
2021/11/30(火) 09:39:37.84ID:uWG/s7m50
[1,2]は?
2021/11/30(火) 09:44:19.36ID:aruulzL70
>>212
みんなの
2021/11/30(火) 09:56:24.48ID:kiCF8ukr0
受験料高いのね
落ちたらまた受ければいいやんと思ってた

Python 3 エンジニア認定基礎試験
一般価格 11,000円(税込)
学割価格 5,500円(税込)
2021/11/30(火) 10:11:17.27ID:H2NDp+pi0
会社から報奨金でもでんかぎり勉強だけして試験受けないのも手
分野にもよるがまだAWS/GCPの認定や情報処理とったほうがまし
2021/11/30(火) 10:38:38.92ID:aruulzL70
取れるなら取っとくのがいい
2021/11/30(火) 11:14:18.22ID:kiCF8ukr0
認定で得られるメリット > 受験料
ってこと?
2021/11/30(火) 11:18:02.71ID:PY+WseMod
java金とかオラマスよりは良心的
しかし内容によるな
2021/11/30(火) 11:32:23.65ID:aruulzL70
取る/取らないで悩むことがなくなる。それだけ
2021/11/30(火) 11:48:15.66ID:QYuq9tUEM
netmikoというライブラリを使って
ネットワーク機器のログを定期的に取るようにしてるんだけど、
そのログの任意の行にある値が閾値を越えたらslackに通知させる
仕組みを作りたいんだ。
どっか参考にできるサイトない?
230デフォルトの名無しさん (ワッチョイ b72c-pIXc)
垢版 |
2021/11/30(火) 13:06:16.43ID:q2Lbl4Ky0
pyエンジニア試験はゴミだぞ
古典的な教本商売。無価値
名札が欲しい、とか、仕事で言われたとかなら仕方ないけど
2021/11/30(火) 13:18:14.78ID:uWG/s7m50
E501 line too long ってちゃんと直してる?
232デフォルトの名無しさん (ワッチョイ 9f55-6Gdn)
垢版 |
2021/11/30(火) 13:39:36.66ID:OYiX8qDe0
応用技術者試験って意味ありますか?

昔受験して一応合格したのですが、あんな試験にパスしたからといって、実務には全く役に立ちそうにありません。
IT関連の実務は経験したことがありません。
2021/11/30(火) 13:54:40.00ID:kiCF8ukr0
>>232
ド素人でないことの証明にはなる
資格欄に書いた方がいい
234デフォルトの名無しさん (JP 0H8b-pIXc)
垢版 |
2021/11/30(火) 14:02:00.50ID:6g3UGVsgH
実務経験ないのに実務に役立ちそうにありません、とな
もう少し考えてから釣り糸たらせよボンクラ
2021/11/30(火) 14:07:37.43ID:OYiX8qDe0
例えば、ネットワーク関連の問題が応用情報技術者試験には出題されます。

ネットワークをいじったことすらありませんが、試験の問題は簡単に解くことができます。
2021/11/30(火) 14:28:57.07ID:PY+WseMod
>>234
人売りのシャチョさんこええw
使えねぇもんは使えねぇんだわ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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