Pythonのお勉強 Part71

レス数が950を超えています。1000を超えると書き込みができなくなります。
2023/09/20(水) 09:13:41.41ID:u6xixiUt0
↑スレ立てる毎に減るので、減ってたら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://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
※前スレ
Pythonのお勉強 Part70
https://mevius.5ch.net/test/read.cgi/tech/1677856680/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
855845 (ワッチョイ 1eda-zrcD)
垢版 |
2023/12/04(月) 15:35:02.50ID:cL5NOEP90
ifのあと"1"
にすれば>>838のコードでも成功に行くのはわかっているのですが

整数の1をif文で判定したくて四苦八苦しております。


親切な人多くて嬉しいです。
2023/12/04(月) 15:41:24.31ID:dR/JDXQy0
そもそもinput使う時点で文字列にしかならんからな
2023/12/04(月) 15:43:42.86ID:apNvJw2Gd
>>854
値を比較しただけで実行時エラーになるような言語とか正気か?
もう黙ってなよ
2023/12/04(月) 15:48:46.40ID:cL5NOEP90
>>856
マジっすか!?
2023/12/04(月) 15:53:55.42ID:hskMlW3m0
>>858
>>851をちゃんと読もう
2023/12/04(月) 15:59:02.03ID:D7B41PS90
Python2のinput()はPython3のeval(input())
Python2のraw_input()はPython3のinput()
2023/12/04(月) 16:10:06.06ID:cL5NOEP90
とりあえず納得できました
皆さまのおかげです

また詰まったらクレクレしに来ます(苦笑)

ありがとうございました
2023/12/04(月) 16:42:52.46ID:f5vq9b6L0
ユーザー入力が文字列以外で解釈される言語は見たことないけどな
あるのかな?
2023/12/04(月) 16:59:52.75ID:L1Td53yR0
python2がそうだったのでは
2023/12/04(月) 17:20:13.89ID:UR+VnO+A0
>>857
べつに設計上おかしかなくない?
Pythonは__eq__で解決できなくてもフォールバックあるけど一長一短
2023/12/04(月) 17:53:17.77ID:jOpGWHbYd
>>864
等価演算子に実行時エラーを出させるのが妥当とは思えんよ
そういう機能が欲しければ独自のチェック関数を作るべきだろう
2023/12/04(月) 21:14:40.89ID:UR+VnO+A0
>>865
静的言語やTSならそもそも実行できないケースだよ?
Pythonをそうせよって意味ではなく
そういう設計の動的言語があってもぜんぜん不思議ではない
2023/12/04(月) 21:39:54.56ID:XU6NDivrd
比較演算子は、
・真
・偽
・比較出来ない
・例外
の4値を返すべきだな

とっても面倒くさくなりそう
2023/12/04(月) 22:24:07.98ID:jOpGWHbYd
>>866
俺はその設計が妥当だと思わないって意見表明をしてるんだよ
2023/12/04(月) 22:28:33.13ID:L1Td53yR0
コンパイルできないくらい間違ったコードに警告するのは親切でありこそすれスルーするメリットは無いのでは
2023/12/04(月) 23:03:05.60ID:GzgqXY0ad
>>869
静的型付け言語では型のチェックに関して静的解析の恩恵が受けられる
動的型付け言語では実行時に自前でチェックする必要がある
そしてそれを比較演算子に例外生成させることで実現しようというのは比較演算子の守備範囲を逸脱していると考える、という話

スルー云々という話ではない
2023/12/04(月) 23:20:04.47ID:L1Td53yR0
なるほど、判らん(酔ってるから)
2023/12/04(月) 23:44:56.40ID:NLHKgHYS0
1 > ‘1’が実行時エラーになるように
1 == ‘1’を実行時エラーにする方針の言語があっても別にいいと思う

大小比較も等値比較もCPyrhonでは同じ一つの関数で処理されるんだけど
左辺の型からも右辺の型からも比較演算をサポートしてないとなったら等値比較の場合だけオブジェクトID比較を返すフォールバックを使うことになってる

言語設計者がエラーで弾いた場合のメリットよりフォールバックした場合のメリットを優先したというだけで比較演算子の守備範囲とかはあまり関係ないと思う
2023/12/05(火) 02:10:11.77ID:9BlMohwu0
Ruby では以下は、両方ともfalse になる。
エラーにはならない。
型が違うから、問答無用でfalse

p 1 == "1"
p "1" == 1

true の条件は同じ型で、値も同じ時

Rubyは静的言語ではないから、コンパイルエラーにはならない。
テストでバグを見つけないといけないから、
その点、動的言語は面倒くさい

だから、TypeScript が流行った
2023/12/05(火) 10:20:00.26ID:5ZWKk5tJd
>>871
どうせ酔ってなくても大して変わらん
>>834とか見れば分かる
875デフォルトの名無しさん (ワッチョイ 35d1-QDDZ)
垢版 |
2023/12/05(火) 18:52:32.32ID:d/HKFAig0
>>830
pandasのread_json関数は直接文字列を渡したりファイルオブジェクトを渡せるけど、read_csvは直接文字列を渡せないんだけど
普通に作ったらとかいうけど、普通とは?って思うけどなあ
876デフォルトの名無しさん (ワッチョイ 35d1-QDDZ)
垢版 |
2023/12/05(火) 19:01:32.87ID:d/HKFAig0
>>869
例えばJavaで((Object) 1) == "a"という式はエラーにならないし場合によるとしか言えないと思うけど。
「コンパイルできないくらい間違ったコード」っていうけど、「普通」と一緒で、どこからが間違ったコードなのよって話になる。
動的型付け言語ならなおさら。
877デフォルトの名無しさん (スフッ Sd0a-nvfk)
垢版 |
2023/12/06(水) 10:09:21.73ID:OIX9QIK5d
>>875
ほんそれ++
2023/12/06(水) 11:53:32.45ID:e50gn0BB0
javaのイコールとpythonのイコールは異なるからなあ
isinstanceかisかtypeかなぁ
2023/12/06(水) 23:20:52.35ID:1hCR5TUW0
麻雀の点数計算できるライブラリみつけた
仕様が書いてあるページどっかにない?
2023/12/06(水) 23:38:12.91ID:1hCR5TUW0
仕様は見つけたけどすっげー読みづらい‥
2023/12/06(水) 23:41:21.41ID:TvfjVsdx0
AIチャットボット向きの課題かも
ローカルルールを箇条書きで渡してコード書いてもらったら?
2023/12/06(水) 23:50:23.95ID:1hCR5TUW0
>>881
いやライブラリ見つけて仕様書もあったんだけどいかんせん読みづらくて…
2023/12/07(木) 03:59:22.29ID:kyWDdJFq0
>>875
Ruby のCSV なら、ファイルや文字列から、
1行ずつ、または全てを読み込める

CSV.foreach : ファイルから一行ずつ読み込む
CSV.read : ファイルから全てを読み込む

CSV.parse : 文字列から一行ずつ、または全てを読み込む
2023/12/07(木) 06:22:39.87ID:tyKSl/WnH
>>882
仕様書読んで何をしたいの
ライブラリって労力を省くためのものなのに
中身を知ろうとして苦労するのって本末転倒っしょ
885デフォルトの名無しさん (ワッチョイ 9e90-WD8q)
垢版 |
2023/12/07(木) 07:57:00.99ID:BRWWjO5+0
Pythonのお勉強スレでRubyを紹介するって、やっぱRuby使いは頭がおかしい。
2023/12/07(木) 08:22:37.28ID:qvan2CQu0
awk -> perl -> python と流れてきたけど、
途中でrubyに立ち寄らなくて本当に良かった
2023/12/07(木) 08:46:37.16ID:bis3W60d0
隙有らば自分語り
誰も興味ないのにね
2023/12/07(木) 12:22:23.65ID:G+XGanQ+M
GPLに汚染されたRoRをずっと愛でてれば良いのに :-p
2023/12/07(木) 13:32:27.34ID:qvan2CQu0
pythonでGPL感染に困るケースってある?
2023/12/08(金) 15:55:44.91ID:j/ISpuI80
>>884
どういったフラグがあってとかわからないとかけないじゃん?
と思ったけどchatgptで聞けばよかっただけだった
2023/12/08(金) 22:49:50.08ID:lBrblQMP0
ライブラリの使い方聞くんじゃなくて
点数計算のプログラム書いてもらえばええんよ
2023/12/08(金) 23:09:45.86ID:Q/J1Vxp/0
判定自体は簡単だけど、役満は断么をオーバライドするとか、
役満と役満は共存するとか、イレギュラーな規則の実装が面倒そう
893デフォルトの名無しさん (ワッチョイ a510-yDrh)
垢版 |
2023/12/08(金) 23:17:23.87ID:4oKxEziY0
麻雀の点数計算なんて30年以上前からゲームで実装されているだろ。
何をいまさら。
2023/12/08(金) 23:58:52.73ID:Q/J1Vxp/0
そんな頃からpythonある訳ないだろ
2023/12/09(土) 01:08:20.81ID:ScuIIvWx0
python自体は30年以上前からある
2023/12/09(土) 03:48:32.15ID:Nm74I+ug0
スクレイピング案件ゲットするのに何時間勉強必要ですか?地頭は悪いです
2023/12/09(土) 04:59:58.84ID:+cLwEiyiH
>>890
すごいな
最近のAIはPythonのライブラリの使い方まで教えてくれるのか
と思って今苦戦しているargparseの使い方を聞いてみたが
簡単なサンプルを提示してあとはドキュメント読めと言われた…
2023/12/09(土) 09:01:15.35ID:/JDiY9I00
>>897
0からは書いてくれるけどライブラリはサンプルだけだったわorz
2023/12/09(土) 09:58:36.92ID:Nm74I+ug0
みなさんPythonの総勉強時間はどのくらいですか
900デフォルトの名無しさん (ワッチョイ 7fa1-tASO)
垢版 |
2023/12/09(土) 10:35:34.71ID:UhMT32qI0
Pythonの勉強とライブラリの勉強は切り離せない
ライブラリの勉強とライブラリの基礎理論の勉強は切り離せない
従って、人生の勉強時間の全てはPythonの勉強時間だったと言って差し支えない
つまり、人生の時間=Python勉強時間だ
2023/12/09(土) 10:47:51.86ID:HTRrM6ov0
YouTubeの視聴で10時間くらい
2023/12/09(土) 14:49:16.11ID:Nm74I+ug0
>>900
会社でも勉強の日々ですか?
2023/12/09(土) 14:49:31.46ID:Nm74I+ug0
>>901
ワイは1時間
904デフォルトの名無しさん (ワッチョイ 176b-08gk)
垢版 |
2023/12/09(土) 16:21:11.17ID:X/idpvxd0
>>897
曖昧に聞くと曖昧にしか答えてくれないけど、具体的に詳しく聞けばちゃんと答えてくれるよ、用途を伝えてどうすればいいか説明してと聞いてみたら?
2023/12/09(土) 19:37:36.95ID:/JDiY9I00
>>904
いや聞いても答えてくれないよ
ソースをイチから書いてくれは言うこと聞くけど
ちょっと前からバカになった
906デフォルトの名無しさん (ワッチョイ 9f9e-tASO)
垢版 |
2023/12/09(土) 22:16:09.54ID:mK/Jf29s0
>>902
あたぼうよ
生きる時間全てが勉強よ
907デフォルトの名無しさん (ワッチョイ 1f0e-tASO)
垢版 |
2023/12/10(日) 10:08:03.35ID:tnUY9tvW0
pyinstallerで作成したexeファイルの起動速度を上げたい
何をチューニングしたらいい?
2023/12/10(日) 11:04:36.18ID:dvINkCpQ0
gRPCを使ってローカルサーバー内のasyncio.Queueに別のプログラムからputとgetをすると
Queueが空のときにgetをすると後から呼ばれたputがgetの完了を待ってしまう
イメージとしてはredis-pyのblpopとrpushのようなことがしたいんだがどうすればいい?
クライアント側からは非同期処理を意識せずに呼び出せるようにしたい

server.py ttps://techiedelight.com/compiler/?server
producer.py ttps://techiedelight.com/compiler/?561a
consumer.py ttps://techiedelight.com/compiler/?edcb
grpcserver/grpcserver.proto ttps://techiedelight.com/compiler/?cb6b
2023/12/10(日) 11:35:35.01ID:nA++m0MY0
>>907
高速なCPUに載せ替え
910デフォルトの名無しさん (ワッチョイ 5710-L8ZV)
垢版 |
2023/12/10(日) 11:46:03.36ID:wF+vsUm70
>>907
EXEを作る際に不要なモジュールを削除しておく。
または必要なモジュールのみをインストールした環境で作る。
2023/12/10(日) 14:14:44.65ID:zLH0tlZ60
>>908
空かどうかチェックしてから呼べば?
2023/12/10(日) 14:40:05.97ID:dvINkCpQ0
>>911
さっそくの回答ありがとうございます
それはPopMessageの中でタイムアウトまでget_nowait()を無限ループで回すって理解でいい?

PopMessageは空のキューで待ち構えててアイテムがputされたら即getって挙動にしたいんだけど
現在はタイムアウトになって空だった判定が終わってからputが実行されてる
2023/12/11(月) 09:46:23.18ID:+ZTyxHoM0
>>908
サーバーをgRPC AsyncIO APIを使って書き換えたら想定していた動作になった
server.py ttps://techiedelight.com/compiler/?d73c

ただpush後にqueueの現在のサイズを表示する処理が
popされるまで実行されなくて
popされた直後にまとめて表示されるのをなんとかしたいけどどうすればいい?

それとも実はpopされるまでpushはタスクが積みあがってるだけで実行されてない?
2023/12/11(月) 15:14:04.17ID:9aD5b1NYa
>>913
こうしたら?

async def _push_message_impl(self, content: bytes) -> None:
coro = self._message_queue.put(content)
task = self._loop.create_task(coro)
await task
print_size = functools.partial(self._print_size, "Pushed.")
print_size()
2023/12/11(月) 15:53:29.44ID:+ZTyxHoM0
>>914
ありがとうございます
それも試してみたけどpushのprintがまとめて実行される件は解決しなかった

試行錯誤した結果以下のコードで上手く動いた
putは待たずに即実行してほしいのだからput_nowaitにすべきで
あとはput_nowaitを投げっぱなし(fire and forget)にすると上手くいった

server.py ttps://techiedelight.com/compiler/?4c07
2023/12/12(火) 17:44:29.04ID:PeOBrpb00
>>915
sys.stdout.flush()
2023/12/12(火) 17:56:17.06ID:tcE92BOU0
print(flush=True)
2023/12/12(火) 23:45:57.11ID:C+wFRSZxa
>>854
intとfloat
2023/12/12(火) 23:50:46.81ID:C+wFRSZxa
>>867
if a==b
の話だからそれだとif節が4つの分岐処理できるようにしないといけないんじゃ
そんな言語嫌だ
920デフォルトの名無しさん (ワッチョイ ffb9-tASO)
垢版 |
2023/12/13(水) 00:30:55.74ID:l6shR1Bw0
RustのPartialEqが欲しそう
2023/12/13(水) 01:11:36.89ID:/DXrNli00
0除算といっしょで想定外な後ろ2つは
止まるか例外だすだけちゃうの?
2023/12/13(水) 08:17:29.51ID:S1FKlcqe0
でも設計者は真にした方が便利だと考えた
どういうケースを想定したんだろう
2023/12/13(水) 08:19:45.88ID:6xdHA+bAM
>>921
Pythonの演算なんだから3番目はNotImplementedを戻すだろう
それでも3つ分岐がいることになる
(そうじゃないなら例外にまとめてなきゃ変)
2023/12/13(水) 08:39:21.17ID:2i8DhGS8d
複数の分岐処理がしたいなら、match文でいいんじゃ?
925デフォルトの名無しさん (ワッチョイ 3746-vhj2)
垢版 |
2023/12/13(水) 11:33:11.42ID:h3rLFE4B0
O除算。

>>> 1 / 'O'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'int' and 'str'
2023/12/13(水) 12:54:06.42ID:oNl+0rt40
チェックしたほうが良いんじゃね。
ケーキ食べたいのに、スフレかもしれんし
2023/12/13(水) 13:56:39.90ID:0Tk5upMb0
お嬢さん
2023/12/13(水) 14:13:11.71ID:WrZJJMf/0
スフレチーズケーキはスフレ?ケーキ?
多重継承?
929デフォルトの名無しさん (ブーイモ MMbf-tASO)
垢版 |
2023/12/13(水) 19:44:31.54ID:AZIMh9+DM
class Cake:
kind = souffle
930デフォルトの名無しさん (ワッチョイ d7be-HI/Z)
垢版 |
2023/12/13(水) 23:02:45.82ID:scKOPc+Y0
Nuitkaとollvmをつかって難読化コンパイルできたけど需要ある?
931デフォルトの名無しさん (ワッチョイ ff93-tASO)
垢版 |
2023/12/14(木) 07:16:50.48ID:VrbATqem0
Pythonって難読化意味ある?
932デフォルトの名無しさん (ワッチョイ d7be-HI/Z)
垢版 |
2023/12/14(木) 09:15:34.70ID:6IAGuCnn0
Nuitka使ってる時点で解析しずらくなる
2023/12/14(木) 09:26:18.20ID:mwsN68xN0
秘密鍵をコードに埋め込みたい時とか
2023/12/16(土) 11:39:26.79ID:sPGHYPZJ0?2BP(0)

LINEのオプチャでつかえるBOT作りたいんやがどうやるん?
pythonでできると聞いた
2023/12/16(土) 11:50:39.29ID:1cAC/5Dza
アホみてぇな質問のしかた
少しはググれよ
2023/12/16(土) 13:20:03.76ID:ZMKoBGKMa
アホみたいって共感できるのすごいな
俺にはわからん。
2023/12/21(木) 11:14:36.20ID:coKFs4JJ0
Nuitkaにnumpy plugin使うとwarningでるのが気になる…
2023/12/21(木) 11:22:02.14ID:NZg9FfTP0
selenium使うと必ず謎のwarning出る
939デフォルトの名無しさん (ワッチョイ 634c-jnAL)
垢版 |
2023/12/21(木) 12:17:23.93ID:+bYKk0Px0
裏庭にwarningがでる
940デフォルトの名無しさん (ワッチョイ 162a-AQ+F)
垢版 |
2023/12/21(木) 15:15:31.26ID:p8AR9zsG0
>>939
近頃の若者は「ワーニング」を「ウォーニング」とナマるから、通じんべ。
941デフォルトの名無しさん (ワッチョイ e7be-DkQ9)
垢版 |
2023/12/21(木) 15:47:42.35ID:Sj73mPPq0
ここにはジジイしかいません
942デフォルトの名無しさん (ワッチョイ 1601-aw5G)
垢版 |
2023/12/21(木) 18:01:43.42ID:Z95EBtZI0
pythonって遅くね?
2023/12/21(木) 19:57:43.69ID:qrcYLDTk0
pythonは遅いよ
モジュールは早いよ
2023/12/21(木) 21:58:50.34ID:JI0UYSEL0
ボトルネックだけRustとかで置き換えてやればいいんだろうね

Mojoならもっと楽に置き換えられるかな?
2023/12/21(木) 22:05:47.96ID:bObiKTRM0
本家がPyPyに乗り換えればええのに
2023/12/21(木) 22:06:13.74ID:NZg9FfTP0
対話式に動かせる機能削ったらもっと高速化できたのに
今まで入ったことない分岐に入った瞬間にエラーで止まることもなくなるし
2023/12/21(木) 23:08:17.59ID:Y2jP7Dyr0
>>946
そんなに速くなるの?コンパイルがうまくなるとか?
2023/12/22(金) 00:42:37.84ID:wOpI+TvL0
VSCode の拡張機能・Code Runner は、
右クリックメニューから、選択したコード、またはファイル全体を実行する

設定項目、executorMap には、多くの言語の実行コマンドが書いてある。
"code-runner.executorMap": {

"javascript": "node",

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"python": "python -u",
"ruby": "ruby",

ここで、pythonには、-u が付いている。
多分これが無いと、すぐに表示されない。
標準出力がキャッシュされるのかも
2023/12/22(金) 00:49:19.70ID:+37DXQP6H
>>946
冗談じゃない
IDE嫌いの者にとってインタラクティブモードは生命線だ
950デフォルトの名無しさん (ワッチョイ 162a-6P6V)
垢版 |
2023/12/22(金) 01:28:54.44ID:CdWyrZLV0
>>946
> 今まで入ったことない分岐に入った瞬間にエラーで止まることもなくなるし

どゆこと?
2023/12/23(土) 14:30:00.14ID:+yR1xAXI0
split('\t')で取り込んでいちいちintするのも面倒なので、
map(int, split)にしたい
でも空ですらエラーにされる
想定外が来たらNullでいいから、楽に処理できないもんか
2023/12/23(土) 14:36:35.98ID:cGlPuzRM0
>>946
いやREPLから実行してもインタプリタ本体は同じだから
2023/12/23(土) 16:44:24.69ID:v4dsWN6K0
>>951
[int(x) for x in s.split('\t') if x]

or

[int(x) if x else None for x in s.split('\t')]

or

def to_int(s):
 try:
  return int(s)
 except ValueError:
  return None

map(to_int, s.split('\t')))

Pythonはパイプライン処理とは相性が悪いので
無理せずおとなしくPython風の書き方を従っておいたほうがベター
2023/12/23(土) 17:10:46.05ID:+yR1xAXI0
やっぱり自分用intを作るのが正解か
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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