Pythonのお勉強 Part66
レス数が1000を超えています。これ以上書き込みはできません。
!extend:default:vvvvv:1000:1024
!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後も落ちなくなった)
### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured Pythonでの描画の保存について質問です。
白地の窓の中にマウスで描画した図形をTiKZ形式で保存するアプリを作成したいです。
TkinterのCanvas Widgetで描画しましたが、ポストスクリプト形式でしか保存できないようです。
@TkinterのCanvas Widget以外で、描画した図形をTiKZ形式で保存できるWidgetはありますか?
Aもしくは、GhostScriptなどを使わずにポストスクリプト形式をTiKZ形式に変換する方法はありますか?
どちらか簡単そうな方を教えて下さい。 Pythonを使った機械学習の本を読んでいます。
仮想環境を使うことを強く推奨すると書いてあります。
いままで、AnacondaのPythonを使ってきましたが、仮想環境を一切使ってきませんでした。
今から、仮想環境を作ってそれを使っても何も問題はないですか? 仮想環境というのは、日常的にリリースしてる人がポータビリティテストする為のものだから
本読んで勉強してるとかそういうレベルの人には不要 使ってるライブラリが競合して困るとかなら渋々venv使う事はアリかもしれない
そもそもそういう事態に煩わさせられぬよう、anaconda (大体必要なモノ全部入り俺々環境)を使ってるのでしょう?
ただしPython自体の勉強もしたいなら、標準のpip/venvに執着して、パッケージ管理を学ぼう すみません、質問なのですが、
newline= ってpython3じゃないと使えないのですか? もの凄く簡単にwebアプリ開発出来るの無いですかね?
Djangoが一番解りやすいけどフロントエンド作るの面倒くさいと言うか難しい PHPでゲストブックでも作ってろ
立派なWebアプリだぞ >>13はhtml, js, css触らずにWebアプリ作りたいということか? cssって腐ってないか?
あれずっとメンテするの? YouTube で有名な、雑食系エンジニア・KENTA のサロンのRuby on Rails 初心者用コースでは、
Heroku, CircleCI, Bootstrap(SASS) が基本
最近の未経験者は、AWS Fargate, Github Actions, Terraform, Vue.js, TypeScript で差別化する
Railsの作者・DHH の動画では、React, Stimulus、Tailwind も使う。
他には、Bulma とか
ElementUI, Material-UI を使う香具師もいるのかな?
知らないけど フロントエンドのデザイン簡単なのはflutterじゃない? 実は勉強に金掛けない奴ほど全然成長しない
いつまでも無料学習リソース()を半端にかじってるだけ
プログラミングスクールに通いなさい プログラミングスクールに通ってたハッカーなんて世の中に一人もいないだろ… センスのカケラもない奴はスクールに引き取られて養分になってて貰えると助かる面はあるよね プログラム覚える奴って独学が普通だろ?
特にいまはネットがあるんだから、いくらでも勉強できるだろ。 目標もなく自分で学ぶ力もない軟弱者がスクールに通う
家で稼げるとか、響きがかっこいいとかのしょうもない理由でやってるんだろうな
実際はそんなことないのに 興味あるのに独学しない方がおかしい
学校や研修で学ぶ人は別に興味はなかったけど必要に迫られた人
絵を描くとか曲を作るみたいに、専門性は高いけどそれ自体楽しいことなので、
きっとみんな楽しくてやってるに違いないという思い込みがあるけど、
普通に金を稼ぐ技術だと思ってる人もいる ネットの情報はありがたいよね
ただ元ネタはだれだかわからないけど全く同じコードと説明まるぱくりで広告バンバンいれている人達多過ぎだよね 今回は、Pythonに関する内容だね!
どういう内容でしょうか?
Pythonの{thema}について詳しく説明していくね!
お願いします!
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます! 独学で系統的に勉強できてる人は限られてるけど、独学で勉強できる素養がないと向いてないとは思う >>35
スクールでお前が学ぶには難しすぎるからあきらめろ
ネットで素振りしているといい オライリーの入門 Python 3の次って何の本やればいいの?
機械学習とかそういうミーハーなのもやりたいけど純粋にコードとしてPython書いてく上でなんかいいのない? お勉強が目的じゃないならガンガン書いていくしかないだろ 写経するにしても、手本にならないコードもたくさん溢れてるからなあ
なるべくすげー奴のコードを真似する dクス
このあとは書いてくのがいいのね
fluent pythonとかeffective pythonとかあるし悩んでいたが
とりあえず書いてみるわ >>41
入門pythonはページ数はあるけど広く浅くで中身薄いから
しばらく実践した後でもいいから他の本かまとまったWebサイトで補完しといた方がいいと思うよ
effective pythonは入門2冊目に最適
fluent pythonは他言語経験者がガチめでpython学ぶ1冊目としてかなりオススメ
今なら原著第二版のearly releaseがベター 実際に物を作っていってこんなの欲しいなこんなのきっと頭のいい人が考えた言語だから何かしら用意してあるだろうといって調べるやり方だなあ
勉強して最初から知っとけば後から無駄な処理してたって気が付くことがなくなるんだろうけどモチベ的にまず作る派
まあジジイの趣味だから >>42
Pythonが1つ目の言語だからeffective pythonやるわ
ありがと JSONのような再帰構造にマッチさせてそこに含まれる値を入れ替えたいんですが、
re.sub()の第二引数に渡す関数をを再起的に呼べばいいんですかね? ちゃんとデータ構造に戻してから加工してシリアライズする エンジニア認定基礎試験3回落ちた
模擬試験は3つのサイト全部受けて80付近取れたんだが
向いてないのかな〜 >>49
本番でやたら間違えたという自覚があるなら大丈夫
自信満々で落ちたのなら勉強の方針変えたほうがいい 座学っていうか、教科書暗記系の勉強って身につかねえで
普段からなにか自分のコード書いてる? 便利ツール作ったとか、仕事でもいいけど
そういう経験値あるやつは教科書で範囲おさえるだけで受かるでアレ
漢検英検みたいなスッカラカンの内容だし >>50
やたら間違えたという自覚はあるんです。。
エラーと例外とクラスがめっちゃ苦手なのでそこをなんとかするよう復習中です!
がんばります! >>53
ホントそうですよねー…
お上から言われてやらされてる感覚で勉強してるのでそれも良くないんだろうなと
3回も落ちてプログラミングはホント向いてないと感じましたが、負けたままじゃ嫌なのでがんばります! >>51
コードは書いてますが、とにかく暗記で覚えようてしまうところがありますね。
流石に3回なので出てくる問題も同じものが多くありました。。 まあ会社的に取らざるを得ないんなら仕方がないな
エラー処理とクラスが苦手なら
不特定多数が使う想定でGUIのツール書いたりしたらいいじゃん
色々なツールを書いて、実力ついてきたら書き直していくと良いべ
手続き記憶ってめちゃ強いで
テストの文言がどうとか関係なく「は?この場合はこれ以外ねえじゃん」てなるからよ 手続き記憶にはならんけどな
あれは大脳じゃなくて小脳が記憶しとる 頭で記憶するより腕が覚えてれば何もしなくても受かる。 プログラミング始める前は世の中の意外なライブラリが個人用ツールが発祥だったりして驚いたけど、最近は自分も毎日何らかの効率化ツール書いてるから腑に落ちてきた >>47
json は文字列として扱えないよ。
先ずはimport json して、json.loads() でpythonのdictとして読み込んで、そのあとdictに対して処理していかないと。 >>62
ライブラリにあるjsonってjson以外にも使えるの? JSONのような
yamlなのかtomlなのか独自の何かなのか? 独自形式でしかもデシリアライズする手段を持たない何か >>63
値を変えたいっていってるけど、それが文字列かintがfloatかで処理方法が変わるって事。 どんな構造のデータなのかわからんけどパースできないのは欠陥じゃないか > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw だからre自体が問題なんでしょ
お前らほんと馬鹿だな
まあ再帰は正規表現の守備範囲じゃないから、外部でループなり再帰なり使うのが筋じゃろうね re.subで解析器つくるチャレンジ俺はすき
最適なモジュール・ライブラリ適用していくのも正しいとは思うが 牛の名前がついた道具使うよりも直接パーサ書いたほうが楽って感じの仕事しかないわ >>71
始めたばかりの頃は正規表現を駆使してそれやってたw
jsonが標準ライブラリなので流石に今はやらんけど >>47 なんですけど、皆さん確かにその通り、なんですけど、困った点として
1. JSONの変更チェックはソースコード同様テキスト差分でやっいてる
2. シリアライズ/デシリアイズすると元のデータとの変更の差分がよくわからない(多分
2. がクリアできればたぶんシリアライザで問題ないのですが、どうでしょうか。なにか
こういうツリー構造状のものの論理的差分をうまく表示できるものがあれば。
もしかして毎回同じシリアライザ/デシリアイザを使えばテキスト差分でも割とわかり
やすい可能性はありますかね? >>76
新旧のJSONが手元にあるなら
わざわざ正規表現で書き換える必要なくない?
よくわからん 新旧それぞれjson状態で比較するだけでいいのでは
内容同じだけど表現が変わって余計な差分が出るというなら、
もう一度同じ系でデータに戻してそのままjsonにすれば消える JSON構造維持できててもホワイトスペースの違いがあると
テキスト差分になるから避けたいってことなら
コミット前にかならずjq他で正規化するとか?
更新もjqでできる範囲ならPython自体いらんし jsondiffみたいなのあるよね
まあ再帰的に歩きながら要素をsetとして比較するとか 読み違えてなければ
なんでテキスト差分にこだわってんのか分からん >>77 結構な数の旧のJSONがあり、それを特定のルールでアップデートして新にします。
で正しくアップデートされたかを検証するために新旧を比較します。
>>78 内容が違う場合に人間が理解しやすい形で見たいという。
>>79 スペースや改行もそうですが、例えば辞書の要素をどういう順序で書き出すかは
シリアライザ次第 or 手書きをした人次第ですよね... あ、jqで正規化できるのかな?
jqを知りませんでしたので見てみますです。
ただしいて言うと正規化というのも... 実際には例えば位置情報を含む要素があったり
して、その場合位置順で要素が並んでいると本当は嬉しい、とかもあったり。
>>80 なるほど、ググるといろいろヒットしますね。検討してみます。 >>82
jsonの機能にフォーマットして出力ってのがあるよ。
新旧をファイルなり端末なりに出力して比較したら。 >>84
順序維持したまま辞書化したいニーズは多々あるし、そういうクラスも用意されてる。
確認してないから想像だけどjsonパーサも子要素の順序維持するんじゃないかな >>86
いやそういう辞書があってもいいけど、jsonで期待しちゃだめでは? >>84
差分を取りたいという話なのは理解してる? ・テキスト差分を人が見やすいようにしたい
と
・旧から新へ書き換えたい&検証したい
は別々に対応したほうがいいと思う なんでjsonのままザブングル取ろうとしてるの
読み込んでから比較できるようにしたらだめなの ていうか、そのファイルはjsonのようなファイルなの?
それともjsonなの? >>87
jsonは人可読であることも利点だから、読みやすく並べたかもしれない順序を維持するのも大事だと思うよ >>94
じゃあ文字列比較のためにソートするのも禁止じゃねえか 47には固有のルールがあるようだしそれに沿ったソートを書けばいいだけ >>90
> まあ再帰的に歩きながら要素をsetとして比較するとか
具体的にどうやるの?
jq -S でキーをソートして差分取るより簡単なの? >>97
手間はあるよ
で、80で親切にjsondiffも挙げてやっとるやん
まあなんでもいいけど、なんかソート禁止という条件が導入されたからソートしない方がいいよ >>98
set 関係ないやん…
引っ込みつかなくなってて笑える >>99
集合がわからんということですか?
それはまあ中学校で勉強してもらうしかないんですけど、なかなか便利ですよ >>97
日本語がわからんということですか?
それはま小学校で勉強してもらうしかないんですけど、なかなか便利ですよw
> 具体的にどうやるの?
> 具体的にどうやるの?
> 具体的にどうやるの? >>98
set使ったら順序保証されないじゃん?
jsonの同一性をどう定義するかだけど、jsonオブジェクトが同一でいいなら自分なら二つ読んでdumpsして文字列比較だな。
わざわざ木構造を探索して確認はしないわー。車輪の再発明だもの。 >>103
差分リストとか見たことないの?
どこを変更 した/された んだっけ? って言うのを見たいんだと思うよ >>103
もちろんされないよ
jsonの話と順序があるjsonの話とjsonの様再帰構造を持つナニカの話が出てきてるわけよ json.load(〜, object_pairs_hook = collections.OrderedDict)で読めばキー順維持できるし
json.dump(〜, indent=4, ensure_ascii=False)あたりで出力すれば人も読みやすいけど
縛りプレイしたいみたいだから違うんだろうね 質問者がほんとうに欲しかったものは全然違うんだろうなぁw あるべき姿ではないけど、差分で作ってるからなるべく変えずにやるしかない
というのは業務では往々にしてある
そっち方向に特化して、なるべく差分を少なく変更するツールを作ったりする OrderedDictはいまは必要なくなったらしいが
古い環境のことを考えて一応入れておくかな Python3.7以降辞書は順番を保持する事が仕様で規定されたが、一般的に辞書はそう言ったものではないから明確に順番を保持する意図があるならOrderedDict使うべき >>110
linux使ってれば、ファイルに落とした後 diff か sdiff で一発でわかるんだけど。
windowsってファイル比較ソフトとか使うの? 変更だからgit diffとかでしょ
CLIで確認するならgirattributeでjsonはフォーマッタ経由させとく どうも>>47です。色々なアドバイスありがとうございます! レス一つ一つの引用は割愛
させていただきますが、アドバイスを元に試してみます。
あ、JSONのようなと書きましたがJSONです。
辞書の可読性というのは、例えばほぼ碁盤目状に並んだ住宅配置みたいのがあって、
{ "山田邸": {x=,y=, ...}, "鈴木邸": {x=,y=, ...}, ...} みたいのが配置の順序で(キーボード配列
で言ったら q,w,e,r,...., a,s,d,f, .... 等)並んでいる状態のことです。
元の可読性を維持するには〇〇邸でソートして欲しくなく、やるならyでソートして次にxで
ソートするみたいな... しかしふと、この場合はそもそも配列のほうがよかったのかも。
まあとにかく、キー順縛りでいけるのかな?
あと、差分を表示するのも標準的なdiff、差分付近の表示でなく、例えばLinux上ならmeldの
ようなものを使いたく... と思ったら json-diff には -f (full) というオプションが。 >>121
dictionaryをJSONにシリアライズする前に(y,x)bナkey指定してsortすればいい
配列にしたほうがいいかどうかはアプリケーションの使い方次第 JSONだっていってんだから元の構造からArrayにしないとダメ
その周辺だけいまは大丈夫だったとしても
なにか加わったら破綻する可能性抱えることになる jsonの可読性なんか気にせずに、整形して見る仕組みを作った方がいい
差分をjsonのテキスト比較でやりたいならば、
専用のシリアライザを作るか、標準のシリアライザに統一して、
手書きからシリアライザへのジャンプの1回だけ頑張って差分が無いことを示す 設定ファイル的なものの書き換えツールを作ろうとしてるんでしょ?
そのツール上は整形して見れたとしてもツールを使って更新した結果が問題ないかどうかをテキストの差分比較したいケースがあるのは普通のこと だから、jsonからPythonオブジェクトとして読み込んで好きなようにソートして、比較すりゃいいだろ
そうしないっていうならもうPython関係ないんだよ
頑なにjsonのまま比較しようとするなら、どっかよそで聞いて来いよ 読み込んで、ordereddictに入れるときにソートして、キー比較して値比較してってのが簡単かな、再シリアライズしなくていいなら
10行ぐらい書けばいけそう a = [1, 2, 3, 4, 5, 6]
(a.remove(i) for i in (4, 6))
print(a) # [1, 2, 3, 4, 5, 6]
[a.remove(i) for i in (4, 6)]
print(a) # [1, 2, 3, 5]
なんでこうなるの? (a.remove(i) for i in (4, 6))
は何を返す?それを理解してないだけ もう一つお願いします
a = [1, 2, 3, 4, 5, 6]
for i in a: a.remove(i)
print(a) # [2, 4, 6]
aは[]になると思ったのですが‥] >>135
すいません
やっぱりわかりません
a.remove(i)しているのでaの内容が書き代わってると思うのですが‥
なにか根本的に理解が足りないのでしょうか (a.remove(i) for i in (4, 6))
はジェネレータ式
https://docs.python.org/ja/3/reference/expressions.html#generator-expressions
ざっくり言うと関数を作ってるだけで中身のa.remove(i) for i in (4, 6)は実行されてない(おまけに作った式も変数に保存してない)
なので1つ目のprint(a)は何も変更されてないaを表示してるだけ
gen = (a.remove(i) for i in (4, 6))
b = list(gen)
print(b)
を実行してみよう >>137
>>> a = [1, 2, 3, 4, 5, 6]
>>> for i in a: print(i); a.remove(i)
...
1
3
5
>>> a = [1, 2, 3, 4, 5, 6]
>>> for i in a.copy(): print(i); a.remove(i)
...
>>> a
[]
歯抜けになるのはPythonのarrayの実装がそうだからだけど
挙動が予測しにくいから一般的に同時に使う作法が誤り >>139
>>142
ありがとうございます!
角括弧の代わりに丸括弧を使うとジェネレーター式になるとは
今までタプルになると思ってました
>>141
>>143
仕様だったんですね removeすると番号がズレるから後ろからremoveするのがセオリー おう、これ全然消えねーんだけど何とかしろやゴルァァァアアアアアア
/bin/sh: -c: 行 0: 予期しないトークン `(' 周辺に構文エラーがあります
ねえっての、キチガイ ようキチガイ
shebangがないかBOMついてるか\rが入ってるかのどれかだろ レベルが低いなココw
他で聞いたら一発で通った(⌒▽⌒)アハハ! windowsのデスクトップアプリを作ろうとしていて、pythonのライブラリを使いたいけど、
KivyとかTkinterとかだとGUIがwindows風とは結構印象が違う。
画面デザインもやりにくそう。
こういう時、どうしますか? JavaとかもそれっぽいUIになるし
全てのUIが同じであるべき、という思想はむしろ危険 Pythonでautohotkeyみたいな事できますか ahkいろいろできて面白いけど言語仕様が腐り切ってるからな
どうせ書くならちゃんとしたものにしたいのは判る 自分もAutoHotKeyで色々作ってたけどPython伸べんきょのためにちょっとずつ移行していこうと思ってる どの程度を使いこなすというのかわからんが
自分のやりたいことは特に不満もなくできてるかな pythonのfor文めんどうくせえと思ってたけど使い始めたら便利だった >>155です。
昨日はありがとうございました。毎日長時間残業なので遅レスですみません。
>>156 >>157
フラッター、PyQtですね。週末試してみますね。ありがとうございます。
あとは、C#からpythonを呼び出すのはありですよね。
フラッター、PyQtの見た目、デザインのしやすさは未知数ですが、
C#の方が画面デザインは慣れていてるので、そっちも一つの方法かなと思っています。
ただ、マイナーなやり方をして、ハマった時の対処が面倒なので一朝一夕ですね。 ×一朝一夕
○一長一短
残業で疲れていて、頭が回っていません・・・汗 > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮民族はゲリ便をじゅるじゅると
うまそうに食うw PythonでWebサイトの自動操作をするプログラム作る仕事をもらったんだけど料金いくらが適正なのかわからん
ざっと見積もった感じ200ステップくらい >>176
seleniumを使うよ
200ステップもなかったわ
120ステップくらいでできそう ステップ数で見積もるのに驚いた
スクレイピング系はサイトの分析、仕様化、テストで8割以上なので
その部分の価値を考えて自分で値付けしないといけない >>178
ステップ数だけで金額見積もる訳ではないよw
ステップ数も判断材料ではあるけど、とりあえずコードの規模感を伝えたかったから
これまで組み込み系ばっかりやってきたからWebサイドの相場がわからんのよね 難しい話だね。
これ、複数人に見積だしたら値段が全然違うって事だろ? 山浦清透、2021/6
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
https://www.youtube.com/watch?v=tYbVl6N8oxI
クラウドワークスの案件
会社情報・求人情報の収集
mynavi: 14日で30万円
doda: 10日で20万円
納品物は、ソースコード・テーブル設計・SQL, Excel
YouTube のエンジニアチャンネルでも、30万円の案件を作っている動画があるけど、
実際には、やりたい人が殺到して、1万円ぐらいに下がる
やっている事は、Ruby のAnemone と同じ。
スクレイピングした内容を、データベースに保存していく 基本定価のない商売だからなまあ自分で使った時間で計算して
見積もりは>>178の費目に当てはめればいいんじゃないかな? >>179
ステップ数だけで見積もると思ったから驚いたわけじゃなくて
規模を見るのにステップ数を使うこと自体に純粋に驚いた
別にバカにしてるわけじゃないから気に障ったんなら悪かったね 規模とステップ数は普通に相関あるだろ
規模と工数にあんまり相関が無いだけで スクレイピングごときのステップ数(コーディング時間)なんか他の工程と比べて鼻くそって意味でしょ 今スクレイピングやっててこれ綺麗に出来るならwebなら何やってもまず大丈夫だという確信を得てるわ スクレイピングはヤバいよ
逮捕されるかもしれないから
今すぐやめた方がいいよ 脱初級向けの書籍あれば教えて下さい
Pythonらしいコードが書ける感じのやつ こんな面倒なことしなくても、もっと上手いやり方あるのでは?
というのがpythonらしさなので、まず問題意識を持たないと まあその・・・
問題意識があるんで参考になる書籍なりが欲しいんですが・・・ >>189
色々と自分でコード書きつつ
・Effective Python
・エキスパートPythonプログラミング
辺りを流し読みして見ると良い みんな偉いなあ。
俺はラズパイでタッチパネルのアプリを作るので初めてPyQt5を使いました。
それまでvs2019のC#でした。
難しい書き方はやれません。 組み込み系は何がいいんだろう
趣味ならもうメモリとか速度とか気にせず何でもいいのかな
売り物は未だにただのCでやってるけど 5chへの書き込みしてみたいんだけど、
urllib.request.Request
使って動かしたら処理エラーにもならないんだけど書き込みも成功してない。
何が悪いんだろう。。。 >>197
レスありがとう。
seleniumでブラウザ操作しての書き込みは簡単に出来ました。
ブラウザ使わないサーバー処理出来ないものかと。
>>198
何罪でつかまるの?
運営への業務妨害とか? ブラウザにできるんだから、同じことを実装してやれば当然できるけど、
膨大な再発明が要るのでやりたくない もうすぐキチガイがやって来て詳しく説明してくれるだろう 結果を得ることが目的なのか、それとも仕組みを学びたいのかで >>192
ありがとう
エキスパートPythonプログラミングがマッチしてそうなので買ってみます >>203
両方ですね…。
httpのデータ授受が問題だと思ってるのでどこに引っかかっているのか突き止めたい。
突き止めた上で出来たという満足を得たい。 推測だけど、5ch はブラウザのユーザーエージェントとか、クッキーとかで判断しているのかも
ツールから投稿されると、サーバを落とされるから、
ブラウザ以外からのアクセスをはじくのかも 初心者です
pythonでclassまでは勉強し終わったのですが、そこから先は何を勉強すればいいですか? 他になにをやったのかがわからないのに答えられるわけがねぇだろw そもそも勉強するもんじゃなくて作りながら学んでいくもんだろ
次はクラウドワークスとかで適当に案件受けとけ まずは、数字が入ってるファイルから読み込みを行ってソートして出力だな。
できればソートも自力でね。 乙。Pythonしたかったら、Python関連の本片っ端から読んでいけばいい >>209
>>210
したいのは大学で使う機械学習です
とりあえず作るのを決める→必要なやり方をネットで調べてく
みたいな感じですか? 機械学習ライブラリやれ
scukit-learnとnumpy scikit-learnはちょっとAPIが優し過ぎて、pythonも初心者だと何やってるか分かんないと思う
まあ公式サンプル良く出来てるから、一日2つ程度写経とパラメータイジりをやれば概観は掴めると思うよ
https://scikit-learn.org/stable/auto_examples/index.html
俺はこれを2ヶ月くらいで全部やったけど、とりあえず使えるレベルには達した Pythonはバズってからネットはゴミ情報の山だから、グーグルは封印しといたほうがいい また補足、何度もごめん
scikit-learnは実用に値するライブラリではないことは頭に入れておくべき
あくまで機械学習のワークフローを学ぶための学習用環境
だからscikit-learn固有のAPIの呼び方を覚えよう、というのはあまり意味がない、と心得るべし >>215,216,218,219,220
ありがとうございます勉強してみます google, amazon, microsoft の公式の機械学習チュートリアル
の評判は近頃どうなの? ちゃんと機械学習やるなら数学的背景も知るべきだし、
そこすっ飛ばすならnumpyすら知らなくていい 俺でもできてしまうんだな
そう、fractionsモジュールならね >>196
ほとんどのサイトは、HTML を送って来てから、
script タグに書いてある、JavaScript(JS)ファイルをダウンロードして、
文法を解析して実行して、HTMLの内容を変えていく
だから単に、HTMLを取得しても内容が入っていない。
Ajax でJSが実行されて、外部のデータベースからデータを取得して、HTMLにはめ込む
JSを実行できる環境(V8 エンジン)が必要。
それを含んでいるのがブラウザとか、Electron >>220
機械学習の定義によるだろ
DNNには適してないのは明らかだが
そこまで必要でない要件などいくらでもある 数学勉強したいんだけどどうすればいい?
行列ってのは確か授業でやったけど留年して退学したレベル 高校数学は本質的でないからなあ
行列なんて連立方程式を解く為のもので、2x2行列では大したことはできないのに、
そこで終わってしまっている 今の子は高校で行列を習ってない
今年から復活するとか >>230
「Pythonゲームプログラミング 知っておきたい数学と物理の基本」
とりあえず、この本の目次を見てみれば? (hoge == 'foo') or (hoge == 'bar')
hoge in ('foo', 'bar')
これが等価と知ったことが最近の収穫 正規表現でも似たような書き方をしようとしてもにょれ いやいや、高校数学からの積み重ねだよ
高校数学で大学学部レベルまでの書籍で勉強してる人も多いから、なにが高校数学かわからんが
とりま、高校で挫折したなら、大学受験用の参考書
大学学部レベルなら線形代数の書籍か
いずれにせよ、勉強に必要な書籍すら選べないようでは、とは思う というより、習ってないという文言が気になる
自習でわからんところはわかる人に聞く
書籍でも論文でも、直接、個人にコンタクトできるから 行列をやらない代わりに複素平面が増えた
やれることが限られてるなら、複素平面の方がもっと重要
複素関数やらなくてどこまで踏み込めるのか知らんけど
行列でベクトル回転させるより、オイラーの公式の方がよっぽど面白い >>237
何するにも割とマジで線形代数が必要になってくる気がするが 高校数学なんて大学入試の試験範囲だから
どれだけ勉強したかを測るのには積分やらすのが一番
覚えてないと解けない問題が山のようにある 昔と違って今はQ&Aサイトとかたくさんあるから
分からなかったらそこで聞けばいいだけ 行列、線形代数、そう複素平面のあたりと、
微積はまた違うから
微積も必要だし微積も大切だが、ベクトルの微積も当然に出てくるが、とりま、行列のどので挫折したかによる
とはいえ、挫折した地点に戻れずどうやって学習したらいいかも含めて自学せなあかん
オイラー偉大は確かだが 記号だけでも高校で偏微分やっといてくれよ
大学1年生がまだ偏微分を知らない段階で他の講義でばんばん出てくる 行列は結局、連立方程式の簡略表記でしか無いんだよな
では行列を活用して5元の連立方程式を解いてみましょうって思ってもそんなもん手計算できない
3x3行列の逆行列で限界
じゃあもう連立方程式のことは忘れて、逆行列が手で計算できる2x2行列に限定しましょうってなって、
そうすると扱う対象は平面上の点なので、回転したり拡大したりの方向に特化して遊ぶしかない
行列の存在意義はそんなんじゃない お前ら凄いなあ
算数でくじけた俺には何言ってんのかさっわりわからん 早速東大の本屋が60年前から出してる線形代数入門買ってきた! 高校で行列をカリキュラムから外すなんてとんでもない
という意見に対して、どうせ本質的なことはやれないんだし、
浮いてるから無くしちゃっても全然困らんよ、という話 >>255
なるほど、その意見には同意できる。対角化とかを手続的に覚えてもしょうがないよなあ。 芸術高校や商業高校みたいに数学高校があっても良いよね pythonで線形代数の数値計算知らずに困るのは、何でもgルーチンに投げちゃう事くらいでない?
3重対角や三角行列は別に呼ぶとか、ちゃんと条件数チェックをするとか
そのへんが一番大事 抽象数学としての線形代数を学ぶには行列はむしろ理解の妨げになると思うし、線形代数の具体表現の一つとしての行列は掃き出し法だけやっとけばいいと思う
numpy引くときの落とし穴と効率のよい引き方の学びが全て凝縮されてる numpyにはeinsum等配列表現を隠蔽してくれる関数があるから、線形代数の学習にとても教育的だと思う
とりあえず行列で考えてしまう癖が付くと、多重線形がイメージ出来ずに詰む 最近、行列の結合法則も知らずにフォントまわりの実装始めてドハマリしてた蟻○間とかいうやつを見かけた気が…
行列なんて色んな分野で四則演算のように当たり前に登場するんだから高校の指導要領でいいんだよ 昔、テトリス作ってて回転させる時どうやろう?って考えてたんだけど、なかなか良い案がうかばず(予め回転させておいた図形を用意しておくとか)、
プロ?のソースみたら行列処理でパッと回転させてた。
数学って大切だなって思ったよw AtCoderとか、プログラミングを競ってるように見えて、いかに数学知ってるかだしな >>248
概念としてでも、全微分と偏微分の説明がある方が理解しやすいと思うんだけどね。
高校数学で微分法のやり方だけ教えられても、なんのこっちゃってなるわな。 >>263
数学知識はアルゴリズムでは有利だろうけど、
データ構造の部分は補完できない気がする JupyterLab上でCythonとNumbaを混ぜて書くのって、皆さんどうされてますか? >>266
配列はベクトルだし辞書は写像だぞ
クラスもそう言ったものの組で表せる 型ヒントでTrue, False, 0, 1を書きたいときはどうすればいいですか?
単にx: boolだと0か1を入れようとしたとき怒られてしまう requests.get
が
has not うんたらだと
ファイル名を変えろとあるが、ファイル名の何が引っかかってるのかすらわからんわ
ほんとくそ
クソすぎPython >274
文字列として if x in ['True', 'False', '0', '1'] にする。 >>274
Union[bool, Literal[0,1]] > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw win10の話
batファイルに
python script1.py
python script2.py
pause
みたいに書いても、1行目だけ実行して終わってしまう
明示的にpythonのパスを指定すれば大丈夫
何故? where python
の結果とパス指定したpythonがちがうんでない shims/python.bat が動いてるみたい
余計なことを call python ~
batはだいたいcallしたらどうにかなる >>281
1行目と2行目並行してうごいてたりしない? そうはならない
batからbatを呼ぶとそっちに処理が移って戻らない >>287
基本shのexec相当になるってこと?マジか知らんかった cmdスクリプトはcmdが解釈できるからcallするセマンティクス(サブルーチン)、exit /bで明示的にリターンする
非cmdスクリプトなら解釈できないので当然使えないので、コマンドのセマンティクスになる
pythonを単にコマンド的に使いたいのならエイリアスにするか
PS> nal python -p \path\to\python.exe
(cmd使いなら多分
doskey python=\path\to\python.exe )
あるいはグローバルな変更になるけどシンボリックをPATH通ってるところに置くか
PS>ni python -v \path\to\python.exe -i symboliclink >>286
非同期にプロセス走らせるのはstartコマンド >>289
プロセスを置き換える訳ではないから違う
cmdはcmdスクリプトを直接解釈できるからそもそも化ける必要が無い、shなら.(source)に近い Pythonはpyとかpython.exeとかpython.bat?(俺環にはなかったはず)とか色々cliがあってややこしいね data = db.idx[10]
print(data.idx) #10
みたいなことがやりたいんですが
外部ライブラリなしで実現できますか?
pandasありゃ事足りるんだけど
data.name[src.name].state = False
みたいな感じに書きたい
print(data.get(name=src.name).id) とかでも… FastAPIのdependsのようにメソッドへ依存性を注入するライブラリやデコレータってないでしょうか? >>294
組み込みでやるならmy辞書クラスにドットアクセス機能つけたらいいよ
チェーンもできる。使いやすい >>294
collections.namedtupleで我慢するか
適当に拡張する 環境がわけわかめになってる
VS code EditorでPowerShell使って、WSLの中に入ったのか、PowerShell使ったのか
とりまAnacondaで環境作ったのに、
どこを定位置にするか Dockerで作ったほうがいいのか、コラボラトリーも便利だし ランタイムだけなら小さいから両方入れればいい
俺は特にwslに用は無いんだが、リモートコマンドを試す為に入れてみた
変数のスコープ(ローカル/接続先)とか今まで気にしたことなかったので勉強になります smtplibでメール送るプログラム作っているのですが
こんなBodyの中に変数埋め込む事できますか?
body = u'''
本文1行目
本文2行目
''' 今時旧石器時代のPython2使ってるなら我慢して%フォーマットとかstr.format使ってくださいよ
旧石器時代の遺物なんだから Ruby on Rails で初心者なら、クラウド開発が簡単。
Heroku, Cloud 9, CircleCI/Github Actions とか
ローカルPC は、OS の設定が難しい
WSL2, Ubuntu, VSCode の拡張機能・Remote WSL とか、
日本人が作った、バージョンマネージャーのanyenv で、
rbenv, goenv, nodenv, pyenv, tfenv(Terraform)とか。
同様のツールに、asdf もある
WSL2 なら、Windows 10 Home でも、Docker Desktop を使えるようになった >>306
Ruby の話題は、Ruby のスレへ書き込んでください! dataを入れるリストをdatasにしようと思って、dataは複数形だと思い出す >>308
昨日の俺かよ
イキってギリシャ語やラテン語をそのまま輸入するから変なことになる >>303
ありがとうございます。Python始めたばかりなので
なので参考になりました。f’’’で解決しました。 参考にしたであろうperlとかでも、
"文字列中に $var を混ぜる"
とかできたんだから、python1でやれてて当然なのに Perlを反面教師以外に参考にしてるなんてRubyくらいやろ 標準ライブラリのtemplateもある。formatでできることより単純な差し込み向け。 >>308
なんでもsつけて複数形にするのはよく見かけるわな
メガネとか靴とかもとから複数形の物もあるし混乱の種
複数形は集合を表すものじゃないんだから使わないのが一番 nameのリストの名前
name_listで特に困らない
ちょっとハンガリアン アドレス帳をaddressesなんて言わんしな
単純にはaddress listでいいわ
データベース的にはfield, record, tableという構造になってる
これに即して命名するのもあり perlだと$nameと@nameは別扱いなので、
push @name, $name;
とかやってた
それはやれてしまっていたというべきで、どう考えても混乱の元だから、
やれてもやるべきではなかった そりゃアドレス「帳」ならAddressListだろうよ
例えばメーリングリストに含まれるアドレスを処理するために配列に取り出すとかした時の配列名とかの話だろ 特定のホットキーを押したら、ウィンドウを動かす的なの
作ろうと思ったんだけど、もしかしてPythonじゃ遅すぎて無理? > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw RubyはPerlと同じ罠にひっかかって
ユーザーがぐちゃぐちゃにしたなw 配列なら○○Array、リストなら○○List
常考だろ? printに()を付けるようにするのはどうしても必要だったん?
urllib.urlopenがurllib.request.urlopenになったり、pythonは2→3で必要文字数が無駄に増えて退化したように感じるんだけど 関数のほうが式として使えるから、文としてしか使えない2のprintよりいろいろ便利だよってことみたいだけど a = ["hoge", "foo", "hage"]
[print(x) for x in a]
昔こんな使い方したことがある 2の文字列の扱いとか面倒だったし3を忌避する理由がわからん いまさら1.5や2にはもどれんけども
最近なんでも取り入れて糞化がすすんでる C++のマジそれ誰が実践で使うのっていうここ5年ほどのライブラリにくらべれば、まだPythonはマシな方。 未だに2と3どちらでも動かせるスクリプトをメンテしてるんだが、
モジュールのインポートで書き分けている(urllib/urllib2など)と、
そのあたりを理解できない頭の悪いPylanceとかが
インポートの問題が解決できないとかうるさい
環境に応じてtryしてるんだから理解してくれよって感じ 頭が悪い以前にそもそもpython2には対応してないかと。 >>337
3で使われていないモジュール名は理解できないということか
なるほどね
おとなしくJediにしておくかな 2でスタートしたツールは未だに2が多いな
printとか自力で直しても、なんか謎のバグで動かなくて、
まあいいやってなる 長い文字列が
キーワード 文字列1 キーワード 文字列2 ...
みたいに並んでて、
[キーワード 文字列1, キーワード 文字列2, ...]
みたいにリストで切り出したい
固まりの終わりにも別のキーワードがあれば正規表現の .+? でうまくいくけど、
そういうのは無い
愚直に検索して見つかった位置から切り出すしか無いだろうか >>341
キーワード□文字列1□キーワード□文字列2□...(□は空白)
ってこと?
まさかと思うけど文字列nは任意の文字列(空白やキーワードなんかも含む)ってことはないよね? https://docs.python.org/ja/3/library/re.html#re.findall
re.findall(r'(¥S+)¥s+(¥S+)', 'キーワード 文字列1 キーワード 文字列2 junk ') 質問なんですが
# -*- coding: utf-8 -*-
import glob,os,re
file = glob.glob(‘C:\Users\name\Desktop\*.jpg’)
で取り出したファイル名を使ってファイルを開こうとすると
ファイル名が日本語の場合文字化けしてファイルが開けませんでした。
文字化けを直すにはどうしたら良いのでしょうか?
print(file)した時に文字化け表示される文字は
'C:/Users/name/Desktop\\\x83A\x83\x8a\x83G\x83N\x83`\x83\x83\x83b\x83g\x91\xce\x89\x9e.JPG'
こんな感じです >>341
単純に前から2つずつ取っていけばいいだけように見えるから
もう少し仕様の詳細を書かないとと何で困ってるのかよくわからないな
正規表現の.+?でうまくいく想定なら求めてるのはlookaheadなのかな?
re.findall(r'(キーワード .+?)(?= キーワード|$)', target_string) |$ か、なるほど
今ひとつすっきりしないので、キーワードでsplitして先頭を捨てた
キーワード部分は必要なら後からくっつける くだすれがありましたのでそちらに移動します
スレ違いすいませんでした レコードの先頭だけ識別できて、次の先頭の直前または末尾までをレコードとする
構造を書き下すと、|$ そのままなんだよな
実装が面倒なんじゃなくて構造が本質的に面倒なのか
書く側としては素直なのに
pythonの字下げが終わるまでがブロック、も似たところがある 最近Python入門しました
ドットインストールのPython講座をデータ構造編までやって、今日からスッキリシリーズの機械学習に取り組んでます
パイソニックな書き方に早く慣れたい 機械学習やっててもパイソニックな書き方なんて身に付かないぞ
PandasとJupyterばっかり使ってる奴なんて、プロのデータサイエンティストでもPythonの使い方はだいたい無茶苦茶 他の言語で言うところのスマートな書き方って奴で、初心者と中身のない奴が拘ってる印象 pythonでより短く書ける程、それはいいコードだ そうやってリファクタリングしないから上達しないんだ インタープリタとしてなるべく一行に色々書きたい気持ちはある >>347
>>350
Python の質問だから「くだすれ」よりも、このスレで良いと思う >>361
自己修正
「くだすれ」は、【まず1嫁】くだすれPython(超初心者用) その56
の事だったのか
それなら、そちらで良い 商品の名前とコードがある
name[i]とcode[i]で管理していたものを、クラス化して
product[i].nameとproduct[i].codeに変更した
かっこいい
新しい商品をappendする時にコードが既存かどうか調べたい
new_code in code で判別できていたものができなくなった
駄目じゃん
リストのインスタンス変数だけのリストって書ける? code_list=[p.code for p in product] appendの度にnew_code in code_listで判定するのは効率悪い。
codeのsetを分けて作って判定に使用する方がいい product = {}
product[code1] = name1
product[code2] = name2
product[code3] = name3
#new_codeが新規だったら、new_nameを追加
if( not product.get(new_code) ):
product[new_code] = new_name
では?クラスじゃないけどw 実際には付随する情報はいくつもあるので、クラスでないと都合が悪い
原始的なデータ構造は効率よく書けるけど取り回しが面倒
凝ったデータ構造は効率が落ちるけど簡潔に書ける
というトレードオフをいかにかいくぐるか Productsクラスにクラス変数でsetのcode_listを作って、
クラスメソッドに判定メソッドを作る、かな それならlistを拡張したProductsみたいなコンテナつくって
append(): codeが重複してたら例外発生、setに追加、super()
__contains__(): code in setを返す じゃ、productにnameじゃなくて、クラスをいれたら?
クラスをcodeで管理。
product[code] = ClassProduct()
product[code] .name = name
product[code] .stat = stat
・
・
codeがわかれば、必要なクラスも直ぐ抜きとれるし。 確かに
iは何の意味も無いし、codeが一意であることは保証されてるので、
辞書にするのは正解かもしれない
存在しないcodeでアクセスしようとした時のエラー処理がいちいち要るけど >>371
> 存在しないcodeでアクセスしようとした時のエラー処理がいちいち要るけど
そもそもそれってバグじゃないの?
バグじゃないとしても何らかの処理は必要だろうし >>367
一般的に効率を求めるならn×n型の正方行列でデータをモデリングするのがいい
取り回しのしやすさも大事だから多少崩すのはあり
製品名と製品コードだけの言わゆる縦に長いリストは事前にB木のような検索しやすい形に落としておくのがいい
どこまでこだわるかは知らんがな まあ、速度が気になるほど大規模で複雑になってきたら、
素直にsqliteとかにするだろうな openpyxlでExcelのセル値を取得して
その値をwin32com.clientでoutlookメールの本文に
入力しようとしました。
取得しないといけないセルの値が複数あって
for文で繰り返そうとしたら、mymail.bodyごと繰り返すことになって最後の値しか入力できなくね?ってなって詰みました
そもそもプログラミングの考え方的な勉強が足りてないきがする… 複数の値をいったんどこか(配列や文字列)に格納しておけばいいんじゃね? >>375
> for文で繰り返そうとしたら、mymail.bodyごと繰り返すことになって最後の値しか入力できなくね?ってなって詰みました
for ...
mymail.body += …
ってやればいいだけじゃね? 10年ぶりにプログラミング学習勧めてるけどpython面白いなー
5chではそんな流行ってない感じ? 面白いかというと、普通だなあ
もっと変態性があった方が面白い 10年前と比べて5ch(2ch)自体が流行ってないのでここを見る価値はほぼほぼ無い 配列のスライスで開始は含まれるけど、終了は-1までしか取り出されないので不思議じゃないですか。
。なんか意味があるんでしょうか。 assert L[a:b] + L[b:c] == L[a:c]
これが成立するように決められたので後ろは-1なのだ A = A[:len(A)]
で同じってのもスッキリ rangeの文法も未だに入ってない
perlで1 .. 10
の感覚でrange(1,10)
とやってしまう
for文のエッセンスだと思えばいいんだけど 親ディレクトリ
├子ディレクトリ1
│ └○○.py
├子ディレクトリ2
│ ├△△.py
【△△.pyにて】
import 親ディレクトリ名.子ディレクトリ名.○○
でimportできるのがモヤモヤするのだがそういうもんだと割り切るしかないのだろうか・・ >>387
import sys
できるのは違和感ないんだよね?
sys.path
をプロジェクトルート(親ディレクトリ?)からの対話モードかプログラム内で表示してみて 京都大学、Pythonの基本を解説した無料の教科書「素晴らしすぎる」「非常にわかりやすくて良い」
ttps://ledge.ai/kyoto-u-ac-python/ とにかく何か面白いものを作ろう、というアプローチは正解だな
逆に言うと、面白いものが作れないなら勉強なんかしない
次点で役に立つもの
次次点でいつか役に立つもの プログラムがち初心者です
すごく初歩的な質問かもしれませんが
パスワードやアカウントの管理プログラムを作りたくて
とりあえず色んなサイトを参考に手探りで書いては見ました
IDアカウント
string = input("安倍カード")
string = input("abeshinzo14")
print(string)
パスワード
string = input("安倍カード")
string = input("purinkure")
print(string)
ただこれだとパスワードが知りたくてもパスワードで文字入力enter押しちゃうと
IDアカウントの「abeshinzo14」が表示されてしまいます
パスワード文字入力なら「purinkure」が表示されるようにするには、どうしたらいいでしょうか? >>391
とりあえずそれぞれ違う変数に入れたほうがええんちゃうかな >>393
こう?
string = input("安倍カード:")
ID = input("abeshinzo14")
print(ID)
string = input("安倍カード:")
パスワード = input("purinkure")
print(パスワード)
string = input("安倍カード:")
暗証番号 = input("92614")
print(暗証番号) とりあえず書いたコードそのまま貼り付けてくれないと何をやったのかよく分からん >>395
これがそのまま貼り付けた奴なんだけど…… >>396
え?Pythonてマルチバイト文字をエスケープしなくてもエラー出ないんだっけ??
IDアカウント
とか
パスワード
とかを行頭にそのまま書いて.pyで保存して実行してもエラー出なかったり、変数名に
暗証番号
みたいなマルチバイト文字を使えるん?
他の言語から入ったから先入観でダメだと思っててそんなことしたことなかった
帰ったら試してみる やってみたら出来た
マルチバイト文字を変数名に出来るの初めて知った >>391
暗証番号の下りがちょっとわからなかったんだがこういうことかな
違ってたらすまん
https://colab.research.google.com/drive/1kpMrSN0u-FUxmJja8DoeTnq-FWV8tx-C
items=[
{"id":"abeshinzo13","pass":"purinkure3"},
{"id":"abeshinzo14","pass":"purinkure4"},
{"id":"abeshinzo15","pass":"purinkure5"},
{"id":"abeshinzo14","pass":"purinkure44"},
]
id = input("idを入力してください: ")
print(id)
print(*[ item for item in items if item["id"]==id ]) 猫も杓子もpythonだからpythonを始めることにしたよ
おすすめのIDEと入門書籍を数冊教えておくれ >>398
今時は多くの言語で識別子に漢字とか使えるぞ 使えるけど使わないよな
ファイル名くらいは使うようになってきた >>399
>>391
だと例えば「安倍カード:」が表示されて
enter押すとID「abeshinzo14」が表示される
これを特定の文(IDとかIDアカウント)を入力すると
ID「abeshinzo14」って表示が出るようにさせたい
今のままだとパスワードとか打ってもID「abeshinzo14」って出ちゃうので マルチバイト文字はトラブルの基だから使わない方がいいと思うけどな
ひらがなの「へ」とかたかなの「「へ」とか似た文字が多すぎる そんなこと言ったらIとlと1が似てるからアルファベットも禁止 >>400
無料でやるならVSCodeにPython関係の拡張機能入れればOK
有料でも良いならPyCharmが一番使いやすいし、機能も多い
>>403
超単純に実装するならdictionaryを2重で使って
キー(安倍カード)とバリュー(ID:abeshinzo14,パスワード:purinkure)みたいな構造にする
真面目に作るなら専用のクラスを作って、ID、カード名、パスワードとかを一元管理する
(というかアカウント管理とかはWeb系のフレームワーク使ってたら専用ライブラリがあるので、普通はそっち使う)
とりあえず根本的な問題として基礎的なプログラミング知識が欠落してるっぽいから
素直にチュートリアルを一通りこなして、全体的に何が出来るかを身に着けた方が良い >>406
やっぱ基礎からして終わってるか……
本買うしかないのかね
ありがとう >>407
Pythonは公式ほかWebサイトが充実してるから本はいらんおもう
大学の講義ノートもいっぱい公開されてる >>409
webサイトは意味不明なのが多すぎる
何を参考していいのか分からん わかるw
だから公式サイトか適当な大学の講義ノートでいいんじゃない?
Python関係なく非公式なサイトは知見を得るためで教科書がわりにしない方がいい なんか変なエラー出た
みたいな時はぐぐるとあっさり解決したりする
デバッグにネットは便利 >>403
こういうことか
管理はやりにくそうだが
https://colab.research.google.com/drive/1Pt_OpflcqhA7ZoshdtiLzQgBfs59SbsM
items={
"安倍":[
{"id":"abeshinzo13","pass":"purinkure3"},
{"id":"abeshinzo14","pass":"purinkure4"},
],
"岸田":[
{"id":"kishida13","pass":"purinkure3"},
{"id":"kishida14","pass":"purinkure4"},
],
}
def ck(card):
res=input(f'{card}カード: ')
res = ck(card) if res!="" else input('"アカウント" "ID" "パスワード" いずれかを入力してください。')
_items=items[card]
if res=="アカウント":
return [ item for item in _items ]
elif res=="ID":
return [ item["id"] for item in _items ]
elif res=="パスワード":
return [ item["pass"] for item in _items ]
else:
ck(card)
return
print( *ck("安倍") )
暗証番号追加したければ{"id":"","pass":""}のとこに暗証番号のキー追加と
条件分岐のとこで増やしてやるだけ 訂正
>>413だと二回目のinputで無い値を入力するとエラー吐いてしまう 途中で送信してしまっていた
→ return ck(card)
更新しといた
>>413,414 >>410
ちょっと前に紹介されてただろ ⇒ >>389
すでに実行できる環境あるなら最初の方はすっ飛ばして3章から読めばいい そもそも入力めんどくて効率落ちるだろ
少なくともローマ字打ちで補完してくれる機能がないと無理 コーディングしている中で変数名を決定してる時間なんてごく僅か
あとはコピペとか一覧から選ぶだけなんだから何バイト文字だろうが同じ 最近ファイル名に日本語いけることを知った
使わんけど
テスト.py
print("hoge")
main.py
import テスト
↓
hoge https://www.python.jp/train/string/method.html
これの一番下の練習問題が解けない……
text = input("A") # 変数 text に文章を入力
lower_text = text.lower("A") # 入力した文字列を小文字に変換
print(text, "を子文字に変換すると、", lower_text, "になります。")
これだと何故かエラーになる
何が間違ってるのか >>425
text.lower()でしょ。引数は受け付けない。
エラーが出たらエラーも内容書かないと。
つか質問内容的にこっちでしょ。
http://mevius.5ch.net/test/read.cgi/tech/1640536690/l50 引数とか変数の代入とか関数とか、どこに書いた値がどこに入るのかという、
基本の基本の基本を勉強しないと
y = f(x)って書いておいて、yをさらに変換したいのに、
z = f(x)って書くようじゃ数学から勉強しなきゃダメじゃない?というレベル クラス関数は初学者には分かりにくい
俺はオブジェクト指向じゃない言語から入ったから、むしろクラスを理解するだけで「そういうもの」と分かったけど、
初学者は関数に引数として変数を与える場合と、変数のクラス関数を使う場合の区別の仕方が難しいんじゃないかな >>428
A
Traceback (most recent call last):
lower_text = text.lower("A") # 入力した文字列を小文字に変換
TypeError: str.lower() takes no arguments (1 given) method
りぴーとあふたみ?
めそっど
めそっど
おけ >>432
Traceback (most recent call last):は
text = input(“A”)を実行した後何も入力していないから
AAAって入力してみ
その後、上に書いた通り
lower_text = text.lower()で実行 そこじゃねーよ
オブジェクト指向の文脈なんだから関数かメソッドかなんて言語によっても呼び方違うし正直どうでもいい >>432
初心者のしがちなミスですね
print(text.lower())
で、小文字でaと出てくる筈です
()が付いているからついその中に代入しないといけないかと思われたのでしょうが、
これはオブジェクトのメソッドで、引数なしで動くものなので
文字列変数の後にピリオドでつなげて、
()の中は何も書かなくて大丈夫です
まあ、少しずつ文法覚えていって、
分からなかったら検索して用例を見ましょう >>435
ごめん正解はこのままでよかったのね
text = input() # 変数 text に文章を入力
lower_text = text.lower() # 入力した文字列を小文字に変換
print(text, "を子文字に変換すると、", lower_text, "になります。")
適当にAIUEOって入力したらできた
AIUEO
AIUEO を子文字に変換すると、 aiueo になります。 詰まったら分解して考えるといいかと
(1)text = input("A")
(2)lower_text = text.lower()
(3)print(lower_text)
この程度だと出てきたエラー見て解決できるのが大前提ではるが
それを置いておくと
(1)inputのドキュメントみる
(2)lowerのドキュメントみる
(3)printのドキュメントみる
ドキュメント見るのが億劫なのであれば少なくとも
(1)inputで試行する
(2)lowerで試行する
(3)printで試行する
をやればいい
例えば
(1)
text = input("A")
print(text)
(2)
text="AIUEO"
print( text.lower() )
(3)
text="AIUEO"
text="OEUIA"
print( text )
などなど。
いきなり(1)(2)(3)合わせ技から入るとそもそも何がわかからないのかがわからない状態に >>433
あー、確かに言い方はおかしいな
だけど正確に簡潔にはどう言えば初学者に伝わる?
文字列を入れた変数は文字列型(クラス)のオブジェクト(インスタンス)で、
その文字列型のクラス関数(メソッド)を…
ファルシのルシがコクーンでパージされたレベルだと思うわ
変数の型宣言とかの「省略できるようになった」ことが、省略されてるだけで実際には処理されてるってことを知ってないと分からないと思う
Pythonは書くのには便利だけど初めて勉強するのにはどうだろ
関数とか条件式の定義の始まりとか終わりもなんとなく分かりにくいし
面倒くさいけど宣言しなきゃ変数を使えなくて{}で囲まなきゃシンタックスエラーが出る言語の方が、
理解はしやすい オブジェクト指向とはそういうもんだと飲み込むしか
プログラミングのパラダイムシフトなんか2回しか起きてないんだから
BASICみたいな何でもありから、pascalみたいに構造化されて、
それで行き詰まったからオブジェクト指向になった
どこかの言語でマスターしとけば当分使える > その文字列型のクラス関数(メソッド)を…
>>> text.__class__.lower(text)
↓
>>> str.lower(text)
'aiueo'
コードの構造や統一感からこう書くときもある?わからん >>440
分かりました
プログラミングって方程式が得意じゃないと難しいですね python.jp は公式サイトではなく
雑多な趣味サイトのひとつなのでよろしくお願いします。 import webbrowser, time
[(webbrowser.open('=q?/moc.ogkcudkcud//:sptth'[::-1] + x),time.sleep(21)) for x in [
'兵願志02%旗日旭02%wt!'[::-1],
'省務外02%旗日旭のてしと化文統伝02%ty!'[::-1],
'画動ーリフ】VT項条間水【】旗日旭【回1第』編結完題問史歴アジア東『02%ty!'[::-1],
'reV02%NPJ02%VM02%eineG02%ty!'[::-1],
'wJ-fwbL_c4A02%ty!'[::-1],
'】NAPAJめたるな【出続々人るす惑困」!ろだ話り作「→」すまり語を実真に後最。すで人老の歳59「】応反の外海【02%ty!'[::-1],
'】VT項条間水【回885第』るすにから明てべすを密秘の下投」)年3102(弾爆識認史歴「で会国が員議院議衆彬成山中『02%ty!'[::-1],
'版地外02%蔵聞02%ihasa!'[::-1]]
] >>447
その癖ググるとpython.orgより上位に出るんだよな Stackoverflowよりコピーサイトを上に出してくるマヌケ検索エンジンだから仕方ないだろ macのAutomatorにマウスやキーボードの操作を記録して再生できる機能を再現させたい
ざっくりでいいから作り方教えてほしい
pyautoguiは多少覚えてます 最近必要に迫られてselenium使ってみたけどなかなか面白い
ちゃんと動くようにしようと思うとエラー処理の固まりみたいになるな >>451
Automator上からCLIのcliclick叩くのもシンプル
Python関係なくなるけど
>>452
Playwrightという選択肢も tensorflowを2.8に上げるに伴って対応CUDAを日本語で調べたのが失敗だった
Google一番上に出てきた金子なんちゃら研究室の通りにCUDAとcuDNNのバージョン入れたらGPU使う動作でデバグできないエラー出てかなり悩んだわ
結局あれやこれや試したあと環境見直すときにTFの公式ページ熟読してバージョンが一致してないことが発覚
pythonに限ったことじゃないけど情報を集める場所は考えたほうがいいわ AIプログラミング初心者のための勉強ってどんな教材がいい?
ネットの月額教材は月額万単位のものも多いし、書籍はTensorflow1.xにしか対応してないものも多くて何を使えばいいのかさっぱり やりたいことがあればそれに突き進めばいいんだけど
英語が苦じゃなければいきなりKaggle
あとはこんなの
https://campaigns.google.co.jp/kids_ai/ ん10年ぶりに何かつくろうかとpython触ってみて
動的にクラスが作れるのはびっくり seleniumのwebドライバはサウンド機能もあるので、
起動すると音量ミキサーに追加される
でも閉じる時に何故か消えてくれないので、
何度も起動してると音量ミキサーにブラウザが無限に並んでえらいことに AI教材の件
教えてくれてありがとう
いろいろ試してみる driver.close()の他にdriver.quit()も要るのか >>453
ありがとうございます。
やはりpython内でできるようにしたいので他の方法を考えてみます。 すみませんPython初心者ですが質問です
MAX/MSPから常に値をOSCで送って、配列を長くしていきたいんですが、
.appendしても配列が常に更新されて長さが1のままです
ソースは下です
https://dpaste.com/2F4FM24EE
OSCで値が送られてくるたび配列に格納していきたいのですが、それでトライ&エラー的に
変数aをインクリメントしようとしてるのですが、ずっと1のまま
なぜでしょうか
教えてください >>464
pythonの基本的な書き方確認すればええよ >>465
レス有難うございます、もう少し具体的に教えていただけませんか。。 >>466
いや全然わからんわけでしょ?
現状では無理よ ではPythonではなく一般論として、まず普通関数が呼び出されたらそのつど実行されますよね
そこで単に呼び出されるたびに数字をひとつづつ足したものを表示していけば数字は増えていくはずなのに、
そうなっていない
これはなぜなのですか?
Pythonに特有の現象なのですか? >>468
数字を一つずつ足す関数が書けるんですか? >>469
関数を呼び出すたびに
a += 1
これでいけませんか?
文法的な間違いはないようですが >>471
インデント、ほかの言語と違ってかなり重要なんですね、有難うございます
揃えましたが、結果的には同じようです・・・ >>473, 474
有難うございます、インデントを揃え、スコープもググったうえで関数内の変数をグローバル変数にしましたが、
11111111111111111111111111111111111111111111111
と出ます
ソース↓
https://dpaste.com/G7LWT56FW
なぜでしょうか・・・ あ、上のソースで出来ました・・・お騒がせしました。
みなさんありがとうございました。 forのループのやり直しってできないのかな
continueはやり直しではなく、残りの処理を飛ばして次のループになってしまう
そうではなくて、今のループをもう一度 それ、ちょっとミスると無限ループだよね
何をやりたいのか分からないけど、例えばforループの中での処理を関数で定義しておいて、
条件を満たすときだけその関数をもう一度呼び出すとかじゃダメなの?
def funcA(int):
hogehoge
fugafuga
for i in range(20):
funcA(i)
if hoge == fuga: funcA(i) やりたいのはエラー時のリトライだけど、どうやっても無限ループの可能性は残るので、
リトライ回数とか見て抜ける仕組みはどうせ必須で、
それならwhileループをもう一重増やしても大差ないし遥かに読みやすい
需要が無いから機能も無いんだろうな ループじゃなくて、キューを用意した上で動的にスケジュールすると考えた方がよいのかも 単純にwhileで成功時のみカウントをインクリメントするか リトライ処理の書き方
for _ in range(リトライ回数)
処理
if error:
continue
break
else:
エラー処理
正常終了したら必ずbreakで抜けるというのは、驚きなく読まれるだろうか whileを使え。
無理矢理、力技やると後から見てワケわからん状態になるぞw forでもwhileでも本質的には変わらない
正常時にbreakで抜けるのは慣用句かどうか 複数のif文をループ内で続ける場合は
breakを使えば次のif文はelifでなくてもいいという違いはあるな forとかWhile文にelse文付けるやり方って可読性落ちるからやりたくねーな……
よく見かける書き方だとこんな感じでね?
While isError AND リトライ回数 < リトライ上限: StopIterationやAttributeErrorも正常系でつかうし
こねくり回したコードになるならbreakでスッキリ書きたいしありかな よくわからんけど関数化してデコレータでリトライすればいいんじゃないの? limit = 00
count =0
while True and count <= limit:
__count +=1
__try:
___for
__except: >>492
ループ抜けた後に、結局処理できたのかできなかったのかはカウンタ見るの? >>486
普通こうじゃないの?
for _ in range(リトライ回数)
処理
if success:
print('正常終了')
break
else:
print('リトライオーバー') >>496
カウンタで見ても良いけど、
結局ループ抜けた直後はisError(エラーかどうか)の値は変わってないから
そっちで判定しても問題ない どっちにしても流用してる感があるなあ
エラーかどうかが戻り値や式なら変数に入れなくてもいいのに、
後で参照する為に変数を増やさないといけない
それより、elseの方が明示的 運悪くクソコードで学んでしまってそこで止まってるんだからしょうがない
切り替えていこう >>500
>後で参照する為に変数を増やさないといけない
変数を増やすことに抵抗感じる人とかおるのか……
そら極端に細かく分ける事はないけど
エラーチェック結果ぐらいは変数に入れてもええやん 新しい職場でpyspark使うことになったけど日本語ドキュメント少な過ぎて困る
せめてpandas主体ならいいのにデータ量多くてpandasだと処理しきれないことがある >>478
breakで不適切な数値の時に対処してないかな?
passかcontinueで pylintかけると、
continue, breakで抜けてる場合は
elseは余計と怒られるな >>478
やり直しのためのループとメイン処理のループは目的が違うんだから一つにまとめず分けたほうがいい
結果として2重ループになるわけだけどもインデントが深くなるのを避けるために関数化 continueで終わった時もelseは実行されるでしょ
そこに混乱は無いと思う
breakとelseは当然排他するけど、その性質を使いたいのに使うと怒られるのか >>505
それelseのインデント位置が間違ってない? macで作ったpyファイルをmac内でexeファイルにする方法ってあったけ?
pyinstallerでappはできた breakしてないのにelseしてたら、
そんなもんループの外に書いても同じだから紛らわしいだけだけど、
普通はわざわざelse付けるのはbreakしたことをフラグで覚えるのが嫌だからなので、
自明でもなんでもない >>510
https://pyinstaller.readthedocs.io/en/stable/
> it is not a cross-compiler: to make a Windows app you run PyInstaller in Windows;
Wineか仮想マシンでやるしかなさそう for_else有り
https://ideone.com/zfxztw
for_else無し
https://ideone.com/nnc884
まあどっちが見やすいかって話やね
確かEffectivePython辺りだとforとかwhileみたいなループ処理にelse付けると
読みにくくなるから止めろっていう風には書かれてたな 読みやすさでいうとこういうコード自体ユーザコードで書かないでほしいけどね
is_errorみたいな状態変数が不用意だし
読み解かないとリトライ処理だなーてわからんから見通しが悪い
>>494みたいに処理側にretryデコレータつけるとか
命名がはいる余地をつくって明示的に書いてほしい elseありの方は、エラー無しの時にbreakして、continueは省略できる
is_errorのフラグが前提になってるから大差ないように見えるけど、
is_error = process() みたいに戻り値で判るならフラグも省略できる effective pythonの言い分
https://i.imgur.com/AhPKvgG.png
やっぱり直感的ではないよね
で>>486の疑問に戻る キーワードがelseではなくuncompletedとかならまだ読めただろうに final とかならまだわかるけど uncompleted とか意味不明
動作理解してる? ループが最後まで回ったら完了なのか途中でブレークしたら完了なのかは場合によるんだからcompleteなんてキーワード使ったら余計混乱するんじゃね? ああ、逆
uncompletedでない時だから普通にcompleted
finalyだと何でもいいから最後に実行に思える
elseだとそうすら思えない たぶん、議論の前提が噛み合ってない
・for/while文の中のif文のelse
・pythonでのfor/while文のelse 古い言語での常套句みたいなのがあって、
pythonならそんなことしなくても言語仕様で書けるよ、という提案がいくつもあって
それらの多くは便利だと取り入れられたけど
ループのelseはもう少しなんとかならなかったのかと >>516
early returnしとけばいいと思う
for i in range(max_tries):
try:
return fn(*args, **kwargs)
except errors as e:
if i + 1 >= max_tries:
raise RetryOverError from e
else:
print(f"Will be retried after {delay} sec...")
sleep(delay) これでよくね?
for i in range(max_tries):
try:
return fn(*args, **kwargs)
except errors as e:
print(f"Will be retried after {delay} sec...")
sleep(delay)
raise RetryOverError from e >>525
リトライオーバー時に不必要なdelayが入って
リトライしますよってメッセージも出ることになるよ あと細かいけどfrom eのところでeがスコープ外になるはず >>512
ありがとう
大人しくwindowsの方に環境作り直すわ うまく処理できませんでした
とう結果をどう扱うかはその場では判断できなくて、ずっと上まで持ち帰る必要があるんだよな
それをそのまま実装すると、エラーリトライの結果を受け取った関数がまたリトライして、
その結果を受け取った関数がまたリトライして、みたいにリトライまみれになる
だからリトライなんか気にせずに必ず成功する体で実装して、
末端がエラーをraiseして、それを適切なレベルの人が拾う
という仕組みがあるべき姿な気がする >>529
せやからリトライとメイン処理のループの目的が違うんだから分けなきゃわけわからんことになる for _ in range(リトライ回数)の中を関数化するのはダメなん・・? >>528
Github ActionsのWindowsランナー使えば >mac内で
ブラウザ使っちゃいけない縛りがある場合はあれだけど
google colabでは一応実行ファイルは作れた >>510
できた実行ファイルの動作確認はしてないすまん
https://colab.research.google.com/drive/1z8aScMiKu7NBclJ7xv88WovewhJyzTDf なんでvenvで検索してんのにpyenvが出てくるのか分からんわ開発者にはちゃんと意味のある命名して欲しいわ本当に 以下を参考にOpenCV使って類似画像を見つけられるようになった
https://qiita.com/best_not_best/items/c9497ffb5240622ede01のfeature_detection
だけど数が多いと処理にすごく時間がかかる
どうすると処理を短くできるでしょうか? 実行中にCPUやGPU(有効になってる場合)は使い切ってる?
使い切ってないなら並列に実行すれば短くなる可能性あるよ
ただ、ファイル単位の並列実行なら大して難しくないけど、画像を領域分割してだと割と難しいかもね
使い切ってるなら別のアプローチが要るね
検出パラメータの調整、強力なハードウェア、途中計算のキャッシュ、検出結果を再利用できるようなアルゴリズムの開発…
再利用できるようなアルゴリズムっていうのは、例えば素朴なレーベンシュタイン距離で類似度を計算しているとする
で、dist(a, b)で計算される距離が10で、dist(a, c)が255だったら、少なくともdist(b, c)>=245は距離を直接求めなくても分かる
というような奴 ImageHashだと速い
見つけてきたものは確かに似てるけど、
似てる筈なのに見つけてくれないケースもある >>535
要件によるけど、そもそも抽出した特徴点をDBに保存しておいて、新規画像が来たらその特徴点抽出だけ行い、DBに保存した特徴点群との比較を行えばよいように作る
さらに言えば特徴点はどうせベクトルだろうからあり物の近似最近傍探索ライブラリを使う >>536-538
ありがとうございます。
最終的にSimiPixの様な物が作りたいと思っています。
https://www.vector.co.jp/soft/winnt/art/se363819.html
すぐできそうなことは並列処理とImageHashとデータベースですね。
近似最近傍探索はあまりわからないのですがこの辺りを調べてみようと思います。
https://qiita.com/wasnot/items/20c4f30a529ae3ed5f52 >>539
YahooのNGTってライブラリもなかなか使いやすいので見てみて 質問です。
flaskやりたいのですがpycharmだとプロ版じゃないと使えないっぽいです。
vsではできますか?
またvs以外でflaskできる環境があれば教えて下さい。
*マルチgpu対応ならグラボ3枚買いたいです!
宜しくお願いします。 3枚じゃ重くて開発できないよ
最低5枚は刺さないと >>544
ありがとう!
>>545
マルチGPUでcudaとか使いたいので複数枚希望してます。 初心者の質問失礼します。
MAX/MSP からリアルタイムで値を送ってそれを配列に格納するところまでは完成したのですが、
配列を格納している関数内でprintするとちゃんと値が入っています。
しかしその関数をスタートさせてる関数のなかでは、グローバル変数として扱ってにも関わらず、全く値が入っていません。
ソース↓
https://dpaste.com/9WVLDX4X5
このfrag1という関数で、MAX側でフラグを1にしてやったときプロセスがスタートして値が格納されるのですが、
MAX側でフラグを切ってif条件分のelseにいったところでその配列をprintしてやっても、何も格納されていないようです。
どういった原因が考えられるでしょうか・・・ >>548
レス有難うございます。
sendfrag自体は問題なく機能しています、つまりMAX側でフラグを変えれば、Pythonのif条件文周りは問題なく機能しています。 別プロセスだから共有メモリやプロセス間通信使わないとだめなのでは? 最初関数すら無いような状態で作り始めて
一部を下請けにしたくて全体をmain()にして機能で切り分けていくと、
スコープから外れてどんどん動かなくなる
ちゃんと作ってあれば少ない引数の受け渡しで改造できるけど、
設定とかにどうしてもグローバルが残る この規模ならグローバルでぜんぜんいいけど
>>550のとおりmultiprocessing提供の共有メモリつかわないとダメなだけ 変じゃなければ、範囲選択して自動で関数化すれば引数付きで関数になるのでは? 皆様
有難うございます、共有メモリが簡単かなと思ってやってみようとしているのですが、定義した共有のための配列をProcessの引数に指定すると思うのですが、
そのProcess自体は値を受け取る関数なので値を格納する関数ではないですよね。
OSCを扱うのでなければそういった煩雑な問題は出てこないですが、
この場合実際に値を配列に格納する関数に共有メモリの配列を渡す(引数として指定する)のはどうしたらよいのでしょうか。 tkinterのmessagebox.showinfoでポップアップを出す
でも動画を全画面にして見ていると、音はするけれどポップアップが出ないことがある
cmdから拡張子の関連付けで起動した時は正常で、
ファイラーから直接py.exeが起動してる時は出ない
何が違うんだろう 起動の仕方で最前面の扱いが変わるとして
最前面にできないからといってポップアップだけでも出しておけばいいのに、
それすら諦めるというのは挙動としておかしい 起動した場所(プログラムやウィンドウ)が違うんだから
もし思い通りにしたければ基準点を指定したり
システム上で最前面にすればいいだけでしょう デコレータというアイディアはpython独自?
強力というか何でもありというか、言語仕様の根底を揺るがす概念だと思うけど 仕組みはシンプルなんだよな
@デコレータ
関数定義
と書くと、関数呼び出し時にデコレータ(関数)と処理が置き換えられるだけ
それでちゃんと動くのかは全てデコレータ側の責任だけど、
そうやって1枚外側を作れる効果が計り知れない アノテーションとか属性とかいった名前でいろんな言語に存在するよ >>562
独自じゃないよ、GoFのデザインパターンの1つ
デコレータ専用の文法を用意してデコレータでAOPを実現してるのはたぶんpythonくらい
クロージャだけでもデコレータは実装できるけど
pythonの場合はclassmethodみたいなのが読みにくく面倒くさ過ぎたので
@でアノテートする文法が導入された デザインパターン? はて?
という感じだけど
1995年に本が出ている
その頃pythonはまだ1.0
デコレータが導入されたのは2.4あたりの2004年
Javaの真似らしいけど、Javaとデコレータがいつからあるのかは知らない get-pip.pyのプログレスバーがなんかカッコイイ javaよりc#が先だろ
勝手な想像だけどqtのスロットをみてmsが汎用化したんじゃなかろうか デコレータの実現方法は多分それぞれの言語で違ってて
pythonのはただのシンタックスシュガーだよね
こう書いてあったら関数を引数にして呼び出すだけっていう
デコレータの為に何も特別な処理は追加されてない Pythonでデザインパターン勉強する良い方法ありますか? 残念ながらpythonじゃ無理
rubyを使いましょう 途中経過もいろいろ表示しつつプログレスバーが崩れない方法は無いものか もうデザインパターンって概念Javaでしか通用しなくね
同じOOPのC++は言語自体デロデロで〜イディオムみたいな言い方してるし 変数名ぶつかりまくるから構造化するぜ
という流れの時は、なるほどそれは確かに合理的だとみんな賛成しただろうけど、
もっとライブラリの使いまわしが楽なようにオブジェクト指向にするぜ
の時は、アイディアは判るけどネーミングどうなん、みたいな受け止めで、
当初の継承しまくりのオブジェクトな感じは早々に破綻して、
なんとかオブジェクト指向を生かすような実践的な方法論が必要で、
それがデザインパターンなんじゃないかと モデリングの柔軟性が高すぎてハチャメチャになったから
よく使うものをテンプレ化しようぜってだけで
なんとかの流れはよーわからんな >>575
デザインパターンの考え方は今でもどの言語でも役立つよ
クックブックや逆引きのレシピ本みたいに実装方法しか見てないなら役立たない というか、役に立つパターンやイディオムを共通言語化して、
いちいち説明しなくても分かるようにしようぜ!っていうのがデザインパターン
中身自体は大昔から変わってない プログラムとかやってる人はノートPCを使っている人が多いと思うけどおすすめある?
Mac以外であれば教えてください 基本的にMacを選ぶべきだけど、次点はLinuxとの相性でThinkPadだな pytorch がCUDA推奨だから、アリエンワー >>581
ちょうどThinkPad見てた
Zを待とうかと思います 最近というかずっとだけど
いまはWSLあるからWindowsのがいいかもね
Macは余計なことできない点が良い
> Linuxとの相性でThinkPad
20世紀のノリで適当書くやつ python講座みたいなのネットでやってる人はmacが目立つな
何作ってるんだろ LinuxならわかるけどMacが開発に向いているってのはよくわからんな。
たしかにMac使っている開発者は多いけど彼らは単に好きで使っているもんかと思ったが。 昔のThinkPadはパーツリストも公開していて
自由に拡張や改造ができて便利だったな 7割以上はwindows使ってるのに基本的にはmacとかイミフ。windowsでまったく問題ないから。
あ、僕はmacです 実行とコーディングは別環境がほとんどだから好きな方でよかろう 機械学習もwindwosでやってるけど特に困ることがない >>592
そこが調査した8万人の話だな
Visual Studio Codeが7割ってすごい人気だ
ところでノート持って出歩く? 大抵の家はPC用の机なんて用意してないからノート
使う時だけ食卓に広げて終わったら本棚に片付ける
作業性は低い >>596
勉強になります!
自分で考えても室内で持ち歩くぐらいだから15〜17インチぐらいにしようかと思います macじゃないとiphoneアプリ作れないんだから仕事でやる人はmacじゃないとダメでしょ iPhoneアプリはそもそもpythonで作らない方が iOSのアプリはmacじゃないと作れないわけ無いだろ クロスプラットフォームも進んでるし仮想マシンも進んでる
winでもmacでもなんも変わらんという状態で敢えてmacを選ぶのは、
イキりたい欲求の現れでしかない 特許あるのかしらんがトラックパッドの操作感はApple一強だし
M1 Airのコスパ良すぎる macイキりはよくわかる
やっぱwinでもいいんだね、ありがと 機会学習とかまでやるならMacはないでしょ?
Mac使ってる人は単に軽量薄型を求めている印象
あとこんなんあった
PC Watch: Lambda、Razerと共同開発のディープラーニング向けノートPC.
https://pc.watch.impress.co.jp/docs/news/1402848.html winpython のjupyterlabのx86版がどうやっても起動できないんですが
できている人いますか?
dot.exe版インストーラーみたいなものしかなくてx64 OSからでもx86 OSからでもx86版は起動しません。
インストーラー同梱のスクリプトを操作したからなのか一度出来ていたんですが環境構築をやり直したら
出来なくなってしまっていて困っています。 >>611
https://winpython.github.io/
リリースノートを読む限り、dot版はPython以外のライブラリ類は同梱されてないみたいよ
dotがついてない奴はライブラリ類が同梱されてるけど、jupyterlabは入ってたり入ってなかったりする
なぜ…このような分かりにくいことを…?
で、肝心の32bitのPythonでjupyterlabが入ってるやつはないっぽい
諦めるしかないんじゃね?
まあGitHubのリリースやSourceForgeのファイルリストを全部確認したりはしてないので
君は諦めてもいいし、一縷の望みに掛けて探し続けてもいい >>613
Jupyter Lab.exe自体はdot.exe版にもありますし(エラー出ますが)
pipとかでライブラリをインストールすればできる想定っぽいですし、
何より一度は動作を確認しているんでもう少しやってみます。 御自慢のM1もpytorchが正式サポートされるまでは
検討対象にも入らないな。
ザビエルAGX君を凌駕したらまた薦めてくれたまえ そもそもMacを買う理由がないんだよな
AIプロセッサーもCUDAとかインテルしか使われないんじゃね? pythonならwindowsかmacかじゃなくてwindowsかubuntuかじゃないかな WSLがあるからubuntuがいいならwinでいい お試しでgoogle colabから始めてもいい
時間制限も言うほど気にならないし
githubに上がってる.ipynbファイルはほぼそのまま使える OSの違いでそんな困るようなことって何があるか分からん(初学者)
pip3かpipぐらい?
エスケープ文字にかんしてもPathモジュール使えばいいやん
他に何かあれば教えてください >>448
import webbrowser, time, urllib, random
lst = [ ['sit', 'e:ko', 'kk', 'ai', '.ndl.', 'go', '.jp '], ['世耕弘一','神近市子','小泉純也'] ]
kok = ''.join(lst[0]) + ' '.join(lst[1])
[( webbrowser.open(''.join( ['gkcudkcud//:sptth'[::-1],'=q?/moc.o'[::-1]] ) + urllib.parse.quote(x)), time.sleep(random.choice(range(21, 39))) )
for x in ['0uhM5AR4db0 ty!', 'IPA 録議会会国 wt!', '!g ' + kok]
] vsCodeのRun Current File in Intaractive Windowでテストコードを実行したら
print("プラグイン実行開始")
print(str)
print("プラグイン実行終了")
の部分でstrだけが出力されて目が点になった
コンソールだと問題ないのでvsCodeが裏でアレコレやってる副作用だと思うが、
複雑なコードだとバグとの切り分けで悩みそうな・・・
>>621
コンソールの文字コードとかパスの文字コードとかテキストファイルの文字コードとか
テスト用のファイルは"テスト 予定表.txt"とかにしとくとデバッグが捗る、かもしれない Python触り始めて2ヶ月(プログラミングがはじめて)でクラスくらいまでできるようになったんだけど、
中級者の入口って感じの人間におすすめの書籍ある?
この3つが良さそうなんだけど違いがわからないんだ
Python実践入門
エキスパートPythonプログラミング 改訂3版
Pythonプログラミングパーフェクトマスター これだけネットにいろいろ溢れてるのに本なんか要らんやろという気もするけど、
effective pythonは買った
何かを系統的に網羅したい、みたいな時は本の方がいいけど、
大抵は知りたいことができたタイミングでぐぐれば解決してしまう エキスパートPythonプログラミングは持ってるけど、
どう考えても希望するような本じゃないからやめた方がいいよ
自分もeffectiveを勧める 初級の網羅的な本、というのを買わずにネットで済ませているので、
組み込み関数って何があるの?
文字列のメソッドって何があるの?
組み込み関数のオプションって何があるの?
みたいな部分が欠けてる
実は簡単な解決が用意されてるのに知らずに自作したりする
丸暗記は無理でも、一度目を通すだけでもそういえばあったかも、と気づけるのに まぁ俺みたいにそういうのが退屈で挫折するタイプは都度ググるスタイルで本当に基本的な部分だけ理解してやっていくのがベストなんだなと最近思う はー面倒くせえ絶対ライブラリかなにかあるやろpythonさんよぉ?→ないんかい!!!
このフローが大事 本は何か面白いこと書いてあるん?
基本的にリファレンスだけで済む言語だと思うんだけど >>625
>Python実践入門
1冊目に読む入門書
1冊も読んだことないなら読んで損はない
公式のチュートリアルに比べれば遥かに良質
>エキスパートPythonプログラミング 改訂3版
中級者向けのネタを浅く広く紹介する本
質は良くないのでお勧めしない
原著はいつものセールで$5
円安なので$5が4000円也
>Pythonプログラミングパーフェクトマスター
知らない
プログラミング始めてみたいだからPython実践入門かもっと簡単なやつを1冊は読んだほうがいい。
Effective Pythonは2冊目に読む入門書 公式チュートリアルも一応目を通すといいと思うが
プログラミング初心者向きではないので公式から始めるのはすごく効率が悪い ありがとうございます!ありがとうございます!
公式ドキュメントとっつきづらくて敬遠して、
Udemyで勉強してました。
UdemyはPython3.6とか古い情報が多く本探してたんです。
Effective買ってみます 自分は気になった本は合う合わないあるから片っ端から電子書籍で買って積ん読しちゃってる・・・ 文字列囲う時にダブルクォーテーション派なんだけどpythonのコーディング規約にシングル使えとかある? ない
String Quotes
In Python, single-quoted strings and double-quoted strings are the same. This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability. 基本はシングルだけどどうせblackがダブルにしてしまう print(f"can't open file {file}")
と書けるので多分ダブルの方が優れている
'は本当はクォーテーションマークではなくアポストロフィ import pandas as pd
def printH(self,n=1):
_return self.head(n)
pd.DataFrame.printH=printH
df = pd.DataFrame([{"a":22,"b":33},{"a":44,"b":55}])
df.printH()
こういう既存のクラスに(複数行)メソッドを追加したいときって
(上の例だと)def printHのように分けないといけない?
なので
import pandas as pd
adding_method_to_DataFrame = lambda f:setattr(pd.DataFrame,f.__name__,f)
@adding_method_to_DataFrame
def printH(self,n=1):
_return self.head(n)
df = pd.DataFrame([{"a":22,"b":33},{"a":44,"b":55}])
df.printH()
こうしたけど何かしっくりこない
要は「複数行にまたがる無名関数」さえあれば
pd.DataFrame.printH=無名関数
みたいにできるのに・・と渋々仕方なくデコレータ使ってる気がする
何かうまい方法ないかな
なければなくてもまったく困らないけど 公式のチュートリアルに出てくるぐらいの専門用語は
理解しておいた方がいいと思うけどな 日本語の文字列が長すぎると
Non-UTF-8 code starting with '\xe3'
のエラーになるの何なんだろう
分割すると正常 3.8.5だった
なんでこんな古いの使ってるんだ? そんな古くもない
LTSなOSつかってたらもっと古いのもある
だから開発用途だとターゲットにあわせたバージョンを導入するのが筋 f'{var=}'
が書ければ、機能的にはあんまり新しいの要らないしな
matchは使えるのかな := は使ったことないけど、よく考えたら使えそうな箇所いっぱいあるな
m = re.search(...
if m:
みたいに仕方なく書いてる箇所無数にある f文字列はformat()で事足りるし、
セイウチも一行増えるだけで、なくても困らんしな 互換性のほうが重要
バージョン依存のトラブルにいちいち対処していられない サポートを外れた2.xとサポート中の3.7とで同じ扱いをするつもりならそうだな 過去に使えたものは今でも使えるだろ
OSとかのサポートと同じに考えてはいけない >>623
import webbrowser, time, random
[( webbrowser.open(x), time.sleep(random.choice(range(21, 39))) ) for x in [
'8.51412=emit&15364=di_iled&=epyt_aidem&LV=xe?php.xedni/pj/pj.og.vtniiguhs.www//:sptth'[::-1],
'82602002610X350504511/txt/elpmis/pj.og.ldn.iakkok//:sptth'[::-1],
'/7138538911/2swen/igc.daer/tset/ten.hc5.42swen//:sptth'[::-1],
'82602002610X350504511/txt/elpmis/pj.og.ldn.iakkok//:sptth'[::-1],
'D352%MAC=ps&nohtyP+__+stols__=yreuq_hcraes?stluser/moc.ebutuoy.www//:sptth'[::-1],
'3.0004=emit&20935=di_iled&=epyt_aidem&LV=xe?php.xedni/pj/pj.og.vtniiguhs.www//:sptth'[::-1],
]] > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw 横浜市立大学に通う大学生です
pythonを使った最初の成果物です
ぜひつかってみてください
http://nohakai.pythonanywhere.com/ >>662
これが何かわかったほうがいいと思います。 web上にある画像の縦幅と横幅を取得するにはどうするといいでしょうか? スクレイピングでaタグのhrefやらからurlを取得するとき
ざっくりわけて
@すべて
https://hogehoge.com/foo/paa
Ahttps:だけがない
//hogehoge.com/foo/paa
B相対パス
./foo/paa
があるけど
ABも@のように変換、をうまいこと処理できないかな
ゴリ押ししかなさそうか >>668
urljoin(current_url, found_url) >>671
pythonの一番のキモやね
電池付きでなんでもござれ >>670 ありがとう
urljoin("https://fuga.com","//hogehoge.com/foo/paa")
てっきり"https://fuga.com/foo/paa"にするものだと勘違いしてurljoin避けてたけど
改めてやったら"https://hogehoge.com/foo/paa"になってくれた
これでドメインが異なるリンクの場合もすべてに対応できそう tabnine入れたらクソ重い
これ使いたいがために良いスペックのPC欲しくなってきた
Mac買うか 気象予報のプログラムで参考になるサイトありますか?
このようなものを作りたいです。
ttps://cmap.dev/#7/35.810/140.316
参考になるサイトや文法があれば教えて下さい。 数理計画モデル分析における気象リスク評価方法
これがカギになるかもな。
tps://www.weather.gov/enterprise/weather-data-software-5a
これであと120時間あれば完成する。
処理が膨大だから某研究所でやらなきゃあかんっぽいな。 tps://www.nag-j.co.jp/naglib/pdf/NL2022-001.pdf
これ買えばはやそうだな。 面倒だからunreal5を使うわ。
そっちの方が楽。 UTF-8のデコードについてどなたか教えてください。。。。
print(b'\xe3\x81\x82'.decode('utf-8'))
で、「あ」と出力されるところまでは理解できたのですが
srt1=xe3
srt2=x81
srt3=x82
と文字データが3つあるとき、これらを
bytearrayに変換してデコードまで持っていくやり方が
わかりません・・・
\\\ srt1=xe3
というプログラムは動作しないので何がやりたいかわからない >>682
srt1="xe3"
srt2="x81"
srt3="x82"
です。失礼しました。
とある状況下で、上のような文字列3つを
b'\xe3\x81\x82'
みたいにbytearray化させてデコードしなければならないのですが、
それができず・・・ int(str1[1:], 16)とかで数値にしてbytes([227, 129, 130]) bytes.fromhex(str1[1:] + str2[1:] + str3[1:])でもいい >>685
わあああああああああああ。。。。。いけた・・・・!!!
ありがとうございました。助かりました 涙 >>689
はいっ!勉強します。リンクまでご丁寧にありがとうございます・・・! b'\xe3\x81\x82'
srt1="xe3"
srt2="x81"
srt3="x82"
xe3, x81, x82 など、x だけは付かない。
16進数表示は普通、0x
例えば、Ruby で、
"あ".each_byte { |byte| p byte, byte.to_s( 16 ) }
出力
227, "e3"
129, "81"
130, "82"
単に、10進数の129 は、16進数の81 と言うだけ https://techiedelight.com/compiler/?Whtw
ラジオボタン0-1
ラジオボタン0-2
が選択状態にならないのですがなぜなんでしょう?
マウスオーバーでようやく選択状態になります 訂正
ラジオボタン0-0
ラジオボタン0-1
でした >>692 さらに関数の中に入れると
ラジオボタン1-0
ラジオボタン1-1
も選択状態が解除されました
https://techiedelight.com/compiler/?BHer >>694
int_vがGCされてしまうから生存期間が長いどこかに保存しておく必要がある >>696
そうなんですね
コード総書き換えレベルの面倒なことになりそうだったのでpysimpleguiに代えました
ありがとうございました GUIっつっても、設定を変更したり入力を指定したり、
みたいなことはconfigファイルとかでやった方が便利で楽なんだよな
スライダーで値をアナログ的に変えたいとか、
モジュールとモジュールをマウスで線で繋ぐと構成がグラフィカルに表示されるとか、
本質的にGUIである必要があるもの以外はむしろGUI面倒なだけ そうなんですよね
私も少なくともpythonではGUIはほとんどやりませんね
API前提でwebアプリ化した方が後々メンテナンスしやすいし
そもそもGUIいるかどうかを後回しにできますしね
今回は友人にちょっとしたツールを作るために配布含めて最適かなと思い手を出しました
dockerでもいいですがやはり極力お手頃な手段となると
ランチャー+pythonかな、と
「これをダブルクリックすれば普通のアプリのように使える」
みたいな あるオブジェクトのプロパティを使いたい時にそのプロパティがNoneだった場合に例外が発生する
この問題を解決する場合どうすればいいか?
プロパティを呼び出す前にifでNoneかチェックすればいいのか? try~exceptで例外処理を加えるか、if ~ == Noneでチェック。 駄目条件と比較して抜けるのはpython的にはちょっとダサく見えるかもね tryの方が他の隠れたエラーも回避できるからとりあえずいいんじゃね?
例外要因がNone以外なら何らかの爪痕残して動作し続けると。 因みにNone判定は==よりもis使うほうがpythonicらしい
どっちでも同じだけど ここだけでも考え方固定しとこうよ
If 〇〇 is Noneで tensorflowでGPU計算してるんですが、
タスクマネージャー見ると4GBの専用GPUメモリしか使ってくれません
共有GPUメモリのほうが24GBあるのでそっちも使ってほしいのですが、
どうすれば共有のほうも使ってもらえるんでしょうか? Noneは使わない方向で考えた方がいいらしい
エラー用の戻り値と正常で0や空文字列を返す場合を厳密に区別するのを忘れていつかバグる ページロックすればホストのメモリも使えるけど上限があった気がする tupleあるから成否と返り値返すのは素直に書けるけど
他みたいに標準化されてないから導入するのは躊躇する
クラスにするのもなんか野暮ったいし >>709
それはNoneと比較することの説明じゃなくてNoneを使わずに直接ifの条件に突っ込んだ場合の説明では >>700
例えばpilのimageオブジェクトにn_framesっていうプロパティがあったりなかったりする。通常はない
フォーマットを問わず静止画像だけ対象としたいとき
if hasattr(im, 'n_frames') and im.n_frames == 1:
__対象処理
else:
__非対象処理
などとする
いきなりim.n_framesを触ろうとするとあとりびゅーとゑらーにぬる もしかしてPythonの文字列型って\rも\r\nも内部的に全部\nに変換してしまうのか?
改行コードが混在しているテキストファイルをバイナリで処理しなきゃいけないとか勘弁してほしいんだが >>714
ioが標準動作がそうなだけでstringは各改行コードを保持する
https://docs.python.org/ja/3/library/io.html
の特にnewlineのあたり読んでみて >>715
とりあえずopen()が良かれと思って悪さしているって事はわかった
thx class Hoge: pass
def hoge(): pass
ary=["string","",123,0,[1,2,3],[],{"a":1,"b":2},{},None,hoge,Hoge]
for n in ary: print(type(n),type(n).__name__)
こういうので条件分岐するとき何か罠あるかな class Hoge: pass
def hoge(): pass
ary=["string","",123,0,[1,2,3],[],{"a":1,"b":2},{},None,hoge,Hoge()]
res=["str","str","int","int","list","list","dict","dict","NoneType","function","Hoge"]
print([ (type(a),b,type(a).__name__==b) for a,b in zip(ary,res) if type(a).__name__==b ])
改めてやってみたらclassはtype(Hoge)で<class 'type'>を返した
条件分岐で使う多くの場合はインスタンスの方だった アンドロイドスマホにtermux入れてpythonダウンロードした。
これでスマホでpython使える。
さてぇ何しようか?w 質問です。グーグルコラボで、ファイルをアップロード・ダウンロードして
IPYNB ファイル (.ipynb)は無事ダウンロードしたけど
IPYNB ファイル がひらけません。
教えてえらいひと! >>720
jupyter notebookをインストールするしかない
そしてjupyterのインストールはanacondaを入れたら一緒に付いてくるが
公式のpythonだけだとpipインストール jupyter notebookって便利か?
使いかけたけど思ってたのと違うからやめた jupyter labの方が見た目がいいよ
なんか設定がおかしいみたいでf文字列閉じるときとかにクオーテーションが3つになってアアアアアアアア(怒) 2022-05-01 18:14:51.136506: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
これは何を意味していますか?
毎回出るのですが不具合ないので放置してます 集合は、シークエンスと考慮されている電流ではありません
しかし未来でわ変化する可能性があります、ですのでそれらを使うことは避けることを考えておいてください >>724
set型(集合)は現状sequence(listとかtensorとか:[i]で中身参照できるヤツ)と見做されないが、これは将来変わる可能性あるから直したほうがいいゾ、と言っている
バージョンアップで不具合が出るかもしれない >>727
どれのことだかわかんないんですよ
ソースコード貼るわけにもいかないし
セット型を[i]で参照してるってことなのかな?
つまり[i]を使ってるやつの書き方を見直せってこと? 多くの言語では、辞書・集合は順序不定なので、
順序アクセスはできないか、その度に変わる
だから、キー・値のみのインターフェースにしている 保証されるけど、集合でそんなもん期待するのはちよっと心が貧しい >>731
hashdosと混同してない?
あれ順序の問題じゃないよ プロセスの実行中、
辞書もしくは配列に値を入れて消してを繰り返しするのって
プロセス実行時間が長くなろうがメモリって増えていきませんよね?
items=[1つ100バイト未満の文字列を1000個、数秒置きに入れ替え]
items=[]で初期化したりitems.pop(),item.append()で追加したりで更新
一応24時間実行しっぱで確認してみたのですが、そこまで変わりませんでした
勝手に開放してくれるのでしょうか >>734
値が参照されなくなった時点で開放されるはず。実際のタイミングはGC次第? >>735
なるほど
なにか明示的に開放するようなコードがあるのかなと思いました
とりあえず実測で問題ないっぽいので現状ヨシとしてあとで調べてみることにします
ありがとうございました >>732
そもそも保証されるのは辞書で集合は保証されないでしょ
そのためにordered-setパッケージなんてものがあったりするんだし ordered-setって勝手に大小並ぶんじゃなくてエントリ順維持なんだ
なんかうれしくない 'りんご'と'みかん'はどうやって大小区別するんだ >>740
そういうケースには適用しない(つかわない)
>>741
別物だったかありがとう 集合は値を持たない辞書
集合の無い言語で、値は要らないけどとりあえず1とか入れてkeyだけで管理する、
みたいなことをやることが結構あるので、値なし版も用意された
存在しないkeyを指定するとエラーになるめんどくささは辞書と同じ >>740
そういうのは文字コード順なり比較関数を与えるなりすればいいだけかと 在日は自分に不都合なことは
全て差別と言う。
だったら半島へ帰れよクズども!
極悪非道の在日どもは皆殺しにすべき! クズなネトウヨには帰る場所もない
殺処分してやるのがせめてもの慈悲 日本人が韓国に住みながら韓国マジクソ、韓国人死ねばいいのにって言ってたらお前なんて言うの? cssセレクターでspanタグに囲まれているかどうかを問わないってどうやって指定すんの?
最悪xpathでもいいけど テーブルのスクレイピングをしててtrをforループで回しながらその中のtdの中にあるbr入りのtextを取りたいけどそのtrのうちの一つだけtdの中が直接textじゃなくてspan > dになってて、そのdタグの中にtextがある
それでどんなコードを書くかで詰んでる
beautifusoup4
誰か分かる? tr > td で、ループ処理する
そこで、もし、tr > td が、span > div を内包していたら、そこからテキストを取得する 俺はいつもテキスト取得からfind位置取得で切り出しだなあ ごめん分からなかったんでtryでcss selectorで'td b'検索してAttributeError出たらexceptで単に'td'で検索かけるようにしたわ
それで得られたTagオブジェクトに.get_text(',').strip(',')してようするに</br>で区切ってlistにした
例外処理の多用は良くないと聞いたような気がするけどまぁいいよね >>753
brを改行にしたいということなら手動で改行入れる必要がある(pタグとかも)
for x in soup.select('tr td'):
for node in x.select('br'):
node.insert_before('\n')
print(x.text.strip())
brタグが入ったままのinnerHTMLが欲しいのなら
for x in soup.select('tr td:not(:has(span d)), tr td span d'):
print(x.decode_contents()) テーブルはちゃんと規則通りに書かれてることが多いし、テーブルの中身にしか興味ないから、
いきなりpandasにしてもうまくいく
問題はずらずら書かれてるケースで、特徴的なタグを見つけようにもうまく行かない
人間があれこれ考えて駄目なんだから何かのモジュールで対応できる訳もない
専用にきっちり書いてもマイナーチェンジされるとメンテ必要になるし、
余分に出力される程度にしておいて人間の判断を入れる、に倒す >>757
なるほどdecode_contents()で内側のhtmlをstring型で取れるのか
そしてhasとかnotや,の使い方も学べた
これで文字列処理するのが簡単で良さそうだね
brは改行にしたいわけじゃなくて単にbr区切りで関係性の薄い情報が書かれていたから前後で分裂させたかっただけ
最初の例が難しいな
クラスオブジェクトがミュータブルだからnodeに対しての操作がxにも影響を及ぼしてる? >>759
ツリーを変更するメソッドは元のBeautifulSoupオブジェクト(soup)が直接変更される
xもsoupオブジェクトへの参照なので変更が反映される
反映したくなければ部分的にコピーするか新しくsoupオブジェクトを生成するか
↓インデントが間違ってたので修正
for x in soup.select('tr td'):
for node in x.select('br'):
node.insert_before('\n')
print(x.text.strip()) 質問です。
macOSを使っています・
pythonのバージョンを調べるために、
「python -v」
を入力すると
/Users/xxxxxxx/.pyenv/shims/python: line 8: /usr/local/opt/pyenv/bin/pyenv: No such file or directory
と表示されます。
それで
「type python」
を入力すると
python is /Users/xxxxxxx/.pyenv/shims/python
と表示されますので、pythonは在ります。
なぜ、「python -v」が
No such file or directory
になるのでしょうか?
どうすれば良いのでしょうか? /usr/local/opt/pyenv/bin/pyenv
がないから エンドポイントを考えるとき
(1)http://hogehoge.com/items
と
(2)http://hogehoge.com/items/
末尾のスラッシュ有り無しどちらでもいいと思ってた
けどパスパラメータにパス(例/path/my/dir)を与えたい(こんなケースあるのかは知らないが)場合
(2)は
http://hogehoge.com/items//path/my/dir
(1)は
http://hogehoge.com/items/path/my/dir
パースできたとしても視認性落ちる
なので(2)の"/items/"が正しいとすると
http://hogehoge.com
のみのurlであってもスラッシュで閉じた方がいいのか
webフレームワーク側とかでスラッシュ有りに統一してた場合に野暮になりそうな気が >>765考え方がおかしい
普通urlに部分パスを追加する時はパラメータが/で始まるならルートからの絶対パス、そうでなければカレントの相対パスって意図になる
../path~みたいな親を遡る相対パスが与えられた場合も考慮すると文字列の追加に留まらずパスを正規化せざるを得ない
視認性とかの問題ではない >>766
部分パスがちょっとわからないからあれだけど
ルーティングによるのでは?と思う
例えばクエリパラメータで
http://hogehoge.com/items?path=/path/my/dir
とした場合は
http://hogehoge.com/items/?path=/path/my/dir
でも問題ないけどパスパラメータ>>765だと
どっち?ってならないかな(もちろんドキュメントに準じればいいだけだが。)
そういうことではなくて? >>761
漏れは、Windows 10, WSL2, Ubuntu 18.04 に、
日本人が作った、多言語バージョンマネージャーのanyenv で、
ruby, node.js を入れているけど、
ruby -v
ruby 2.6.6
node -v
v14.18.1
which ruby
/home/ユーザー名/.anyenv/envs/rbenv/shims/ruby
which node
/home/ユーザー名/.anyenv/envs/nodenv/shims/node
anyenv と同様のツールに、asdf もある 2**21 = 2**3 * 2**9 * 2**9 高度IT人材、富士通は最大年収3500万円へ
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
来年度から副業解禁 人材多様化へ―大同生命次期社長
第一生命HD、副業解禁 約1万5000人対象
第一生命HD、副業解禁 1万5000人対象―大手生保初
IHI、国内8000人の副業解禁 重厚長大企業も転機
IHI、社外兼業を解禁 社内副業もルール化 sorted(list, key=lambda x: x.val)
は
sorted(list, key=attrgetter('val'))
と書いた方が見やすいけど、importが要るのがなあ 行が増えるのが嫌って感じではないなら
普通にlambda x: x.valの部分を置き換えてしまえばいいのでは
import pandas as pd
class X:
def __init__(self,val):
self.x=11
self.val=val
_getattr=lambda n:lambda x:getattr(x,n)
ary=[X(6),X(3),X(2),X(7)]
print([ n.val for n in ary ])
ary=sorted(ary, key=_getattr('val'))
print([ n.val for n in ary ])
#[6, 3, 2, 7]
#[2, 3, 6, 7] lambdaは強力です
lambdaを使うとこんなこともできる
的な記事はよく見るけど、結局lambda以外の方法の方が綺麗で、
lambdaは苦し紛れ感がある lambdaでちょっと書くだけでもPythonicじゃなくなる
無いものと扱った方がシンプル
基本どこでもdefは書けるから困らんし mapとかfilterも使わずに済ませた方がいいことが多い
折角パワフルそうなものがあるのに、と勿体ない気もするけど、
存在を忘れた方がいいかもしれない ある計算の結果をarr[0]から順番にarr[i]に入れていきます。
計算結果が重複していたら入れません。
iは数千万以上まで行きます。
計算を進めていくと、重複判定にものすごく時間がかかってきます。
高速でできるPythonモジュールみたいなのはありますか? とりあえずsetに入れてやってみて
だめならよく考えないと いちいち判定せずに重複してても全部入れて、
重複判定は最後にまとめてやる 巨大データだと
まずはメモリの使用状況を調べないと
メモリを使い切ってスワッピングを始めると
言語に関係なく遅くなる numpy.unique が使えれば、C言語の速度で計算できる ,Aさん, , ,Bさん, , ,
,開始,終了,備考,開始,終了,備考,
5/1,7:00,16:00, ,8:00,17:00,
5/2,8:00,17:00, , , ,有休
見たいな三次元データってpandasじゃ無理? >>784
内部だけでもこんなかんじに変換はできない?
どなた,開始,終了,備考,
Aさん,5/1,7:00,16:00,
Bさん,5/1,8:00,17:00,
Aさん,5/2,8:00,17:00,有休 開始 = 勤務データ[人][日付].開始
みたいにアクセスしたいよな その場合、開始, 終了, 備考をインスタンス変数に持つオブジェクトの2次元配列にする
pandasからは遠ざかる
多分、問題がpandasに向いてない
excelからの読み込みと書き出しはpandasでやって、
内部的には取り回しのいい形式に変換する >>784
同じ名前のcolumn持てないかもだけどマルチインデックス使ったらできないかな >>762
レスありがとうございます。
質問の意図は、エラーメッセージの意味ではなく、
なぜ、「pythonがあるのに、バージョンが表示されないのですか」ということです。
あと、1ケ月前にはちゃんとバージョンが表示されていたのに、
どういう原因でこうなった(「/usr/local/opt/pyenv/bin/pyenvがない」)のか、
考えらる原因も教えていただけませんでしょうか?
よろしくお願いいたします。 >>792
>>762 が端的にあってるとおもうけど
過去にMacPortsか独自でpyenvを導入したはずが今は消したかで無くなってる
原因は分かるわけないw
再導入すればOK
どうせ動かんし先に /Users/xxxxxxx/.pyenv は消しとくのが無難
pyenv公式にはHomebrewでいれろとあるからどうするかは考えて >>793
レスありがとうございます。
やってみます。 DBにしろpandasにしろ時間管理だとこんな感じにするかな
pandasの使い方これで合ってたかは忘れたけど
https://colab.research.google.com/drive/1W6g9HLYOliL3i9Dc-t6lfnw4oxsTPh4K
today=datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
df=pd.DataFrame([
{"名前":"Aさん","開始":"2022-05-04 07:00:00","終了":"2022-05-04 16:00:00","description":""},
{"名前":"Bさん","開始":None,"終了":None,"description":"有給"},
{"名前":"Aさん","開始":"2022-05-05 07:00:00","終了":"2022-05-05 16:00:00","description":""},
{"名前":"Bさん","開始":"2022-05-05 07:00:00","終了":"2022-05-05 17:00:00","description":""},
{"名前":"Aさん","開始":"2022-05-06 07:00:00","終了":"2022-05-06 17:00:00","description":""},
{"名前":"Cさん","開始":"2022-05-06 10:00:00","終了":"2022-05-06 12:00:00","description":"早退"},
{"名前":"Bさん","開始":"2022-05-06 08:00:00","終了":"2022-05-06 19:30:00","description":""},
{"名前":"Dさん","開始":f"{today:%Y}-{today:%m}-{today:%d} 08:00:00","終了":f"{today:%Y}-{today:%m}-{today:%d} 21:00:00","description":""},
])
df["開始"]=pd.to_datetime(df["開始"])
df["終了"]=pd.to_datetime(df["終了"])
#Bさんのみ
#df[df["名前"]=="Bさん"]
#2022年5月6日のAさんの出勤時刻
df[df["名前"]=="Aさん"][df["開始"].dt.date==datetime(2022,5,6).date()].iloc[0]["開始"]
#2022年5月5日以降のみ
#df[df["開始"]>datetime(2022,5,5)]
#2022年5月6日、9時から11時に出勤する人のみ
#df[(df["開始"]>datetime(2022,5,6,9,0)) & (df["開始"]<datetime(2022,5,6,11,0))]
#現在仕事中の人のみ
#df[(df["開始"]>today) & (df["終了"]>_to_zone(_jst))] ) 実際のデータはコードに書かれてる訳ではなくてcsvなりexcelな訳で
そこのフォーマットは変えられないのでコンバータが要る 返信ありがとうございます。
>>785の形式にopenpyxlかvbaで変換して>>795の方が楽っぽいですね! WSL2のUbuntuにpythonインストールして使ってるけど、この場合jupyter notebook使えるの? ubuntu内で完結する訳もなくて、
入力元や出力先がwindowsなら、windowsで動かす方が面倒が少ないのでは WebブラウザがWindowsであればよくない?
モジュールや連携するバックエンド考えるとLinuxのが面倒がない python使うのにベストなOSを語ってるのにスレ違いってことはなくね? mac使ってる人はmacで
windows使ってる人はwindowsで
ターゲットはlinuxだけど開発マシンがwindowsの人がWSLで
用もないのにWSL使いたがるのはイキってるだけの可能性が高い Dropoutって過学習を遅らせてるだけ?
結局過学習してる気がするんだけど気のせいだろうか アプリとそのデプロイする先OSとの相性はあるけどな 人間の脳も忘れるんだから、AIも忘れさせた方がより脳を模倣できるというアイディア
やってみると実際にスコアが上がる
何がどうなって良くなってるかは誰も知らない wslでイキってます(^_^;)
と言いたいところだけど、なんだかんだPowerShellだ
visual stdio codeでwslにもPython入れてる WSL程度じゃイキれないからな。
Ubuntuじゃないと。 power shellから
wsl --install
と入れるだけでubuntuが入るんだから、WSLとはubuntuだと思っていい ドロップアウトは局所解引きやすいときにかなり有効なきがする バッチ少ないときにも有効な気がする
あくまで感覚的にだけど 初学者だけどDocker使うためにWSLに慣れてたほうがいいんじゃないの? exe名が汚すぎて吐きそうになる
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1264.0_x64__qbz5n2kfra8p0\python3.10.exe pythonとpython3で区別してたのは元からだし、
より細かく3.10にしてるだけ そりゃ、すべての環境構築が、Docker, Kubernetes になったから、
分散処理のHadoop が滅んだ
それで、AWS Solution Architect の米国年収が、
Ruby on Rails の1,300万円を超えて、1,400万円になった。
今は円安で、1,800万円まで高騰した
猫も杓子も、AWS Associate 3冠・機械学習 Specialty だろ ファイル名じゃなくexe名っていうところが気持ち悪くて吐きそう マイナーバージョンまで実行ファイル名に含まれてるのは少数派ではあるかも。
気になって調べてみたら、自分の環境だとautomake系とRuby系はマイナーバージョンまでファイル名になってた。
ライブラリ名だとごく普通だから違和感はなかったな 実際に起動するのは C:\Windows\py.exe #############################################################
https://assets.st-note.com/production/uploads/images/60037741/picture_pc_19893dcbf6564b05921e2191868e6fb1.png
全米国株1分足データ10年分を900円で差し上げます。計8173銘柄。時間外取引のデータ込み。お買い得です。システムトレードや検証にどうぞ。
https://note.com/data_shop/n/nad05814e941e
############################################################# from sample import mod1, mod2
def mod1():
_return "def mod1でmod1を上書き?"
print(mod1())
print(sample.mod1())
from ○ import ○,○のように明示的にモジュールを指定したいとき
import先のモジュール名と関数名がかぶるとき命名に困る
一体どうしたら・・
対策としてdef _mod1()とかにしてるけどなんかモヤモヤ >>799 だけど、少し調べたら
%jupyter notebook --no-browser
で起動するとURLが表示されて、このURLをWindows上のウェブブラウザで開く方法があった >>828
インポートする時にas使って名称変えればええやん
from .moduleY import spam as ham >>830
それはもちろん
ただルーティングとかのときにswaggerで表示される名前を見やすくシンプルにしたいのでかぶるモジュール名もシンプルで
これ以上名前変えてもなぁというのと単に見た目的(asは複数無理?)なので保留
>>831
import sample
sample.mod1
てこと?元も子もないような
とういうか改めてswaggerUIの方をみたらハイフンは省かれて表示されてたのでもう先頭に(_)でいいや
ルーティング以外のとこはおそらく自分の命名のやり方を改善できる可能性が高そうなので 元も子もなくない
from sample import mod1
は
import sample as __sample
mod1 = __sample.mod1
と自分で書いたのと同等、そう考えれば避けたくならん?
sample.mod1 に慣れるのがシンプル解 問題はそこではなくて
命名かぶりそう、っていうのと
かつmod1,mod2,,,を明示したい、という見た目の話ですね
そもそもfrom sample import mod1やめて
import sampleの
sample.mod1でいいじゃん、てなると
そりゃそうでしょ、としか 命名が適切ならば被らない
被ってしまうのは命名が間違ってるか省略し過ぎ
違うものが同じ名前になるのは判りやすい書き方とは言えない Python + selenium にて、Twitterに投稿したいと思っています。
絵文字以外の文字列を投稿するところまでは完成していますので、
絵文字をどのように送ればよいかについてアドバイス(実際のサンプルコード)を
頂きたいです youtubeのチャットを字幕化して動画に重ねて表示させたりしてるけど、
絵文字部分もそれ使えばいいのか >>836
さらっとクラスやら全否定してないかそれ
中身が同じってことではないでしょ <tr>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td>a1</td>
<td>b2</td>
</tr>
<tr>
<td>a3</td>
<td>b3</td>
</tr>
こんなタグがあってaとa1とa3をスクレイピングしたいんですが、どうすればそこだけ抜き取る事が出来ますか?
スライスですかね? emojizeはなんか対応してない文字あるな
辞書が古いのかな >>841
.select('tr > td:first-child')] from bs4 import BeautifulSoup as _soup
html="<table><tr><td>a</td><td>b</td></tr><tr><td>a1</td><td>b2</td></tr><tr><td>a3</td><td>b3</td></tr></table>"
bs = _soup(html, "html.parser")
print([ td.text for td in bs.select("tr > td:nth-of-type(1)") ])
#['a', 'a1', 'a3']
>>841 pip install soupsieve
soup.select('td:-soup-contains("a")'
)
すみませんなんでもないです... ・塩野義製薬が週休3日制導入へ 来年4月、副業も解禁
・塩野義製薬が「週休3日」選択可能に 給与は『週休2日の8割』副業や学び直しを支援
・【フォーカス】サタケ/週休3日制 通年導入めざし夏季のみ試行中 交代制で水曜を休日に
・旅館なのに週休3日!?陣屋・若女将の常識を覆した組織改革
・“時代錯誤”から残業ゼロ、週休3日に! 鳥取の不動産会社が
レガシー企業からDX先進企業になれたワケ
・ネクスウェイ、週休4日制・1日3時間勤務選択できる勤務体系を導入
・日本初「週休4日制度」で、優秀な人材を採用するしくみとは? ?
ナレッジソサエティ久田社長に聞いてみた 当方プログラム初心者ですがpythonの**.pyファイルを**.exeにしたい場合どのようにするのでしょうか。
色々ググって全く分からず困っています。
Python27時台に作成されたソースです。ヒントでもよいのでアドバイス頂けると
助かります。
よろしくお願いいたします。 ひとまずPCにpython27をインストールしました。
次にソースからexeを作成するcmdファイルがありました。
pythonのあとにsetup.py py2exeとあり、setupを見るとソース名が指定してあります。
実行すると何も表示されずするっと消えます。
exeはdistフォルダーに出力とネットではみましたが作成されていません。
エラーが出ているのでしょうか・ まずそのpythonを窓から投げ捨ててください
そのバージョンはサポート切れで今後も躓きまくると思うので、3.10をインストールしなおしたほうがいいよ 今後のことは3がいいだろうけど、2が3で動かないのはほぼ確実なので、
正しく移植するのが困難だからとりあえず2がいい ありがとうございます。
実は最新版をいれたのですがソースの規則違反が出てググると3以上で改定されていると・・・
ソース修正ができないのとバグでも出したら怖いので過去Verをいれています。
exe作成時のログは見る事は可能でしょうか たぶんどっか違うフォルダに保存されてんじゃないの
フルパス指定してみ エクスプローラーの検索でCドラを検索しても***.exeはヒットせずです。困りました ちなみに君のpython2.7にはpy2exeがインストールされているのかい?
>py -2 -m pip install py2exe py2exeだけでなく、いろんなモジュールが足りなさそう。 オプション-2を外して実行するno module named pipです ごめん、2.7はpip使えないんだね。
https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
から2.7用をダウンロードしてインストールして。
ちなみに、その .py はpython2.7をインストールしたPCで動く?
モジュール足りてる? >>861 的確なアドバイスに大変感謝します!!!インストール後にexe作成のcmd実行で
画面えらいメッセージが流れdistフォルダーが作成されました。
近くにいたら寿司でも奢りたい気分ですがまさか5chで解決するとはw
本当に泣きたいくらいに感謝です。ありがとうございました。 >>863 できたexeファイルはまともに動くかい?
なんかモジュールが足りないとかエラーメッセージでないかい? ありがとうございます。先ほど本番環境で検証したら
LoaLibrary(pythondll) failedが表示され動作停止されました。
なかなかすんなりいきません。 ソースの先頭部分、import文だけでも晒してみ。 必要なモジュールが足りてないんだわ。py2exeだけじゃなくて必要なものが色々足りてないと思う。 こんな感じです。
# coding: cp932
import os
import os.path
import shutil
import ftplib
import sys
import ConfigParser
import md5
import datetime
import logging
import logging.config
import yaml # warning: this package needs to be installed manually before
# download at: http://pyyaml.org/wiki/PyYAML https://qiita.com/sg0hsmt/items/f8fc8d587bff816654a8
を参考に pip をインストール。
pip install で ConfigParser, md5, yaml をインストール。
で、再度 exe を作成。 3.10の仮想環境で確認しているから、ひょっとしたらもっと足りないかもしれない。 2.7時代のモジュールインストールって pip で問題なし? to 諸先輩方。 pipのインストールサイトを見ましたがこれはAまたはBのどちらかをすればよいのでしょうか。
また、(a)はコマンドプロンプトで実行を意味していますでしょうか。素人すぎる質問ですみません (a)の方が簡単そう。URLは生きてた。コマンドプロンプトでもパワーシェルでもOK。 Windows 10 Ver.1803(RS3)から標準でburlburl.exeがあるしPowerShellにもInvoke-WebRequestのAliasとしてcurlがある ひとまず(a)でインストールできています。Exeも作り直しテストをしたいとこですが
本番環境ですぐにできないため、明日に持ち越しです・・・
ご協力いただいた方には本当に感謝します。明日も質問を上げるかも知れませんので
是非よろしくお願いします!!! async/awaitってマルチスレッドと何が違うの?
どっちも並行処理でしょ? async/awaitがちょっと抽象的な書き方です マルチスレッドは並行動作させる仕組み
await/asyncは並行動作させるための記述方法 言語機能かライブラリかってことか
当然async/awaitのほうが性能はいいわけだな async awaitはシングルスレッドでCPUリソースを有効活用する仕組み、
マルチスレッドは実装によっては複数コアで実行される可能性がある、
じゃね?
で、CPythonはマルチスレッド対応がイケてないからマルチプロセッシングやasync awaitのほうが早い、と async/awaitってシングルスレッドなのか
それじゃ根本から全然違うな 単に非同期なだけで、下のスレッドの使われ方は言及しない
大抵の実装はマルチスレッド使うんじゃないか? 並行処理のところは実装依存てことか
async/awaitのほうがスレッドより早いのも実装によるってことかな
早いなら使ってみるけど シングルスレッドかマルチスレッドかは処理の切り替えの効率だけの話で、
CPUが具体的にどうなってるかまで考えてコード書かない プログラミングスタイルのちがいだからそこ
両方つかえばすぐわかると思うけど頭でっかちになってる >>892
文脈からマルチスレッド=threadingと思ってるとした前提 >>889
マルチスレッドで動かすためにはプログラマ自身がクリティカルセクションとかアトミック処理とかマルチスレッドで動くことに気を使わないといけないけど、async awaitでそんなコード見たことないよね?
マルチスレッドで動かしはじめたら世間が大混乱するからasync awaitをマルチスレッドで実装している処理系なんて一つもないと思うよ 干渉を気にしないといけないのはマルチプロセスなのでは? マルチスレッドでも変わらないよ。
手書きしたスワップ処理をマルチスレッドで動かしたときのことを考えてみて >>894
馬鹿なんでは…
マルチスレッドと排他処理でみんなしこしこ書いてるわけでしょ >>892
おれはJavaScriptも書くからasync/awaitには馴染みがある
ただPythonのasync/awaitは色々覚えることが多い気がする >>889
自動で複数スレッドを使うような実装も可能だろうけど
PythonはGILがあるから1プロセスで複数タスクを並列実行はできないので基本みんなシングルスレッド
asyncioやtrioでもブロッキングなAPIをawaitできるようにするのにスレッドを使うけど
自動じゃなくてプログラマが別スレッドを使うように指定する >>899
マルチスレッドだよ
単に同時に動かんだけで
なんか言葉の使い方変だよ ProcessPoolExecutor だと複数プロセス動く 本日テストをしましたが状況変わらずです。
lodlibrary(pythondll) failed
こちらでググりまくりましたがしっくりくるものなしです。
python 2.7では ConfigParser, md5, yamlはインストールした?
>pip install configparser
同様に md5, yaml も。」 2.7.18インストールして確認中。
ごめん。yamlはソースにある通り
http://pyyaml.org/wiki/PyYAML
から2.7用をインストールして。 必要なのはyamlだけでした。他は大丈夫。2.7.18で確認。 >>902
もしかしてdistにexe以外も出力されてるのにexeファイルだけ本番環境に持って行ってる?
それだと単独ファイルにしたいならsetup.py書き換えないと pipのインストールでエラー出ていないためno moduleのため(b)実行
その後にinstall ConfigParserで下記です
ERROR: Could not find a version that satisfies the requirement ConfigParser (from versions: none)
ERROR: No matching distribution found for ConfigParser
これも適正なバージョンがあるのでしょうか ごめんて。confipaserとmd5はインストール不要。
yamlだけ上記URLからダウンロードしてインストール。 ご指摘の通り、distをみると何やらlibrary.zipも更新されていたため、持ち込みすると
確かにエラーはなく瞬時に終了。
ただし、このPGMはメッセージを表示するので何か不足してするっとしてる模様です。
今度は原因追及のためのデバッグでしょうか・・・ >>900
マルチコアCPUが普通だから、欲しいのは
同時に動かんマルチスレッドではなく
同時に動くマルチスレッドだからな。
Ruby、JavaScriptと言った他のスクリプト言語でも
同時に動かんマルチスレッドなのかな >>909
yamlはインストールした? pipからじゃなくて、ソースに書いてあるURLからダウンロードしてインストールだよ。
インストール後、exeを再作成した? https://www.python-izm.com/third_party/executable/py2exe/
stup.py に 'bundle_files': 1 と書いてあれば単一ファイルになるのでlibrary.zipは不要。exeのみの持ち込みでOK。 コマンドプロンプトで該当.pyファイルのあるフォルダーに移動。
> python ~.py
で表示されるエラーメッセージは? マルチコアが活きるのは膨大な計算量の必要なかなり限定した用途だけで、
PCが重い原因は普通はI/Oが詰まってるだけだから、
待ち時間を無くすだけで高速化する >>910
割と同時に動かんよね
まず需要があるのは非同期とかノンブロッキングってことだよね >>916
pyrthon(スクリプト系言語?)で需要があるのはそれらで、
同時に動くマルチスレッドは需要があんまりないということで
Pythonの実装が楽な(?)同時に動かんマルチスレッドでいいやなんかな。
一方、C/C++と言ったバイナリを生成する言語なら同時に動くマルチスレッド
が出来るからな。まぁ、言語によって需要が違うからこうなるんだろうが。 >>910
RubyもGILあるからPythonと同じ
JavaScriptは同時に動くけど起動や受け渡しのオーバーヘッドが大きいから
重いCPUバウンドな処理にしか使わない >>918
そうなのか
>JavaScriptは同時に動くけど起動や受け渡しのオーバーヘッドが大きいから...
スクリプト系言語でも出来るようにすることはできるが、こんなもんになるから
使う用途が限られるってことか。
Pythonで同時に動くマルチスレッドを実現しても、スレッド間の受け渡しのオーバーヘッドが大きいとなると
マルチプロセスと変わらないからな 教えてください
❕のosコマンドを読み込む方法を。
VSCode editorでJupiterの拡張子ipynbをローカルで実行するとき、!lsはエラーはかない
拡張子pyだと
!lsがエラーになる
.pyだと❕はことごとくエラーになる
windowsでAnacondaで作成したPython環境です javascriptこそ基本的にシングルスレッドやろ?
ばんばん割り込み使うけど
Web WorkderAPIとかいうのあるらしい JSはsetTimeoutとか使うと別スレッドであとでやってくれるんじゃないの? ネイティブとグリーンなスレッドを区別せんと話が交錯する
コンテキストの維持にネイティブスレッド利用してる実装はあるかもしれんけど
ややこしくなるから並列でスケジューリングはしてないはず >>922
タイマー自体がホスト環境で実行されるだけでJSの実行スレッドはシングルスレッド
タイマー経過しても他の処理が実行中なら終わるまでコールバック関数は待たされる >>923
でも真の並行動作が必要になる話もしとらんわけでどっちでもいいのでは ngramを作りたいのですが文章が以下のようなlistで表されています
何かいい方法ありますか?
[’あいう’, obj, ’えお’]
ほしい結果 ('あ', 'い'), ('い', 'う'), ('う', obj), (obj, 'え'), ('え', 'お'), >>926
フラット化すれば後は簡単だと思うんだけどリスト直下の文字列以外は無視したのでいいのかな?
ネストしたものを考慮するかどうかで少し変わってくる
['あいう', 123, 'えお', ['か', ('き', 'く')], 'け'] 両方書いてみた
https://ideone.com/2enXYU
リストをフラット化したり、1個ずらしで2個ずつとってきたりする機能は
toolz, more_itertools, numpyあたりに用意されてるからそれらを使ってもいいと思う >>929
ありがとうございます!
ネストは考慮したくないので単純にフラットにしたので期待した操作ができました! >>929
普段からこの手の処理を書いてるの?
読んでけば理解できるが、ゼロから書けと言われたら書ける気がしないw
python特有なのかな?
多分自分が書いたら全く違う処理になりそうだよw Ruby で書くと、
input_ary = [ "あい", 123, "お" ]
ary = input_ary.map do |elem|
# 文字列型なら、各文字を要素とする配列に変換する。
# "あい" なら、[ "あ", "い" ] となる
if elem.instance_of?( String )
elem.chars
else
elem
end
end
p ary #=> [ ["あ", "い"], 123, ["お"] ]
ary.flatten! # 配列を再帰的に平坦化する
p ary #=> [ "あ", "い", 123, "お" ]
result = ary.each_cons( 2 ).map( &:itself )
p result #=> [ ["あ", "い"], ["い", 123], [123, "お"] ] pysparkの動作速度。
誰かsparkつかってない?
教えてほしいんだが。 >>934
DBからのデータ取得は早いし大容量扱えるけど、その他は遅い印象(スペック引き出せてないだけかもだけど)
ググってもあんまり引っ掛からないしイマイチ def add(x: int, y: int) -> int:return x + y
アノテーションってエラーは吐いてくれないので
エディタやmypyなどでチェックするしかないですが
有名なフレームワークだと同じように書いた場合、エラーが出てくれますよね
あれは一体どういう仕組みなのでしょうか?
@app.get("/id/{id}")
def get(id:int):return id
的なやつです
functoolsのsingledispatchみたいな感じだと思ったので
要は引数の型アノテーション(コロン以下)を取得できればオーバーロードできるのではと思い
ソースみましたがさっぱりです・・ レス直後改めてソース見たらそっこー見つかりました・・
__annotations__でいけました
解決はしていませんが。。
intとかだと引数と__annotations__をif文で比較すればいいのでしょうが
typingとか複雑なスキーマだった場合どうやっているのでしょうね とりあえずFastAPIはpydanticのBaseModelで実装していることはわかりました
そのpydanticはtypingのForwardRefを使っていて
BaseModelでは__annotations__周りのコードがかかれており、ForwardRefでBaseModelのメソッドから評価しているのかなと思いました
結局、どのように評価しているのか根本的にはわかりませんでしたがBaseModelを使って型アノテーションの例外チェックをしているみたいです
from pydantic import BaseModel
class Model1(BaseModel):
a: int
class Model2(BaseModel):
a: str
print(Model1(a="1"))
#print(Model1(a="a"))
print(Model2(a="1"))
print(Model2(a=1))
#print(Model2(a=[])) Python公式
Python 3.9.13 is now available
Python 3.9.13 is the final regular maintenance release. バージョン,リリース日,サポート期限
3.7,2018年6月27日,2023年6月
3.8,2019年10月14日,2024年10月
3.9,2020年10月5日,2025年10月
3.10,2021年10月4日,2026年10月
バージョン確認方法
import sys
print(sys.version) >>935
ありがとう。
ではcudaの方が良い感じですか?
どうでしょうか? CUDAは単独ではSparkのように複雑な処理やデータフローを組めないし、
SparkはCUDAのように高速な行列計算を行えない
車とエンジンを比較してるようなもん from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense,Activation
model=Sequential()
model.add(Dense(10000,input_dim=100))
model.add(Activation('relu'))
model.add(Dense(10000))
model.add(Activation('relu'))
model.add(Dense(10000))
model.add(Activation('relu'))
model.add(Dense(100))
model.add(Activation('softmax'))
というモデルがあったとします。
こうして得られたモデルのパラメータをわけあってちょっとだけ手動でいじって別のモデルに使いたいと考えています。
・パラメータをprintする方法
・別のモデルに手動で初期パラメータを設定する方法
を教えてください。 modelの.wetghtsとかで取り出せなかったっけか みなさんはもし漫画を描くことができたらpythonで何をしますか >>944
ありがとうございます
取り出しは行けました
別のモデルに手動で初期パラメータを設定するのは何かメソッド等ありますか? すみません、自己解決しました
get_weightsとset_weightsがあるようです 予定をデータベースに登録するとき
ざっくり
・予定の内容
・予定の期間(始まりの日付け、終わりの日付け)
がありますが
始まり(start)と終わり(end)をdatetime型で管理するときにふと疑問に思いました
(1)始まりを指定しない or (2)終わりを指定しない
場合です
予定表の場合は、
(1)は登録するときのジャスト現在時刻を登録すればいいと思いますが
(2)はどうすればいいでしょうか
ようは有効期限と同等だと思いますが
100年先とか適当な感じでいいのでしょうか?
そういうときのためのdatetimeの機能とかあるのでしょうか ユースケース次第と思うけど、datetime.datetime.maxでも入れとけば 既存の型だけでやりくりしようとしないで、必要に応じて細かいクラスをどんどん作る >>949
なるほどdatetime.maxなんてあったんですね
>>950
フロントでdatetime形式で渡してそのままバリデーションしてそのままDBに突っ込めるのが便利すぎて・・
ありがとうございました NullだとDBで範囲検索するときうまくいきますかね?
やってないのでわかりませんが
予定表の場合だと範囲検索は
・現在の予定
・○月○日の予定
くらいがあったら便利かなと思いますが
Model.end>現在時刻
でendがNULLの場合をインデックスしてくれているのだろうか ・start有りend有り
・start有りendヌル
しかないので、NULL除外してstartのみAND検索すればよさそうですね
startとendカラムが別なのでコードは増えそうな気はしますが。
あとフィールドにnullableパラメータとかあってNULL許可できるみたいですね
とりあえずは速度重視ではないので最大値入れとこうかなと思います
ありがとうございました pytorchってGPU使えますか?
無理ならtensorflowへの移植は技術的に可能ですか? >>942
cudaとsparkの両方は使えるのでしょうか? VSCodeでPython使ってるんですが、
書いた.pyファイルをVBSから実行したいです
現状VBSでRunすると、VSCodeが立ち上がってしまいます
立ち上げずにスクリプトだけ実行するにはどうしたらいいでしょうか? run "*.py" を run "python *.py"にしてみたら? 例えばソースファイルmain.pyとsub.pyに分割すると、
mainからsubのモジュールを呼ぶと、sub.pycというファイルが生まれてしまいます。
ソースファイルの数だけ生まれるので、作業ディレクトリ圧迫されて、凄く邪魔です。
pycを生まれないようにするには、やはり分割せずにmain.pyに全部ソース書くしかないでしょうか? selenium使ってローカルなTLS1.0にアクセスしないといけないんだけど
最近ブラウザだとacceptInsecureCertsだけじゃもう通過出来なくなってるんだね 質問です。
Mac OS 10.12.6で、
Homebrew
pyenv
python3.8.12
をインストールして、
pyenv global 3.8.12
を入力しても、
パージョンが3.8.12
になりません。
最初から、もう一度やり直したいのですが、
インストールしたプログラムをアンインストールするだけで良いですか?
それ以外にしなければいけない事があれば
何をしなければいけないのか教えて頂けませんか?
よろしくお願いいたします。 >>965
reinstallしてみたけどボトルに説明ないタイプやね
開発ツールだからREADME読まないアホのケアまでしてないぽい サイトAがブラウザのクロスオリジン許可されていないので
自前のフロントエンド(javascript)からサイトAのAPIを使用することができません
なので対策として
自前で用意したサイトBのpythonのrequestsなりで、サイトAのAPIをfetchするようなサイトBのAPIを用意し
そのサイトBのAPIをフロントエンド(javascript)から叩いて
間接的にサイトAのレスポンスを取得することにしました
こういうのに特化したウェブアプリケーションフレームワークって無いでしょうか?
FlaskやdjangoやFastAPIとかでもちろん良いのですが
結局テンプレートエンジンを使うことになるのでサイトAの情報を間接的に取得するために用意しました感が強くて・・
理想的なのはstreamlitです
streamlitはすべてpythonでコーディングできるのでかなり理想的なイメージと近いです
例えば急にサイトAがクロスオリジン許可しました、となっても作ったものは無駄になりません。
しかし痒いところに手が届きません(reactと連携はできるものの)。 >>966
レスありがとうございます。
アホのケアしてないのは問題ではありませんが、
reinsttallを想定して、すべての設定などをオーバーライドするように作ってない方もアホの仲間ですねw 皆さんはpythonの組み込み関数の使い方を全部覚えるのに何時間かかりましたか? 一通り目は通してるけど名前くらいをぼんやり覚えている程度
「こういうことやりたいな」というときに
「そういえばまさにそいういうの見たことがあったな」
で、改めてドキュメント調べる
探し物をしているときに、そもそもその探し物自体があったかどうかがわからないと
一生見つからないのでそういうときは他人に聞く ライブラリ使うときも実践しなくてもいいので公式ドキュメントに一通り目を通しておいたほうがいい
あとあと「こういう機能ないのかよ・・」にかかる時間が無駄
ただそんなことしなくても、ぐぐれば一発で見つかることもほとんどだし
目を通すと言っても、チュートリアル、メソッド名・要約をチラッとみる程度 ちらっと見て、なるほど何かに使うのか判らん、で済ますと
必要な時になっても思い出せない ドキュメントみるとわかると思うが
大抵の場合は何に使うかのスペニットくらいは添付してあるよ
それみてもわからんって場合ももちろんあるが
それは後発での詮索と学習スピードとのトレードオフな気がする 再インストールする前に、
原因を調べようと思います。
カレントディレクトリの位置によって
表示されるpythonバージョンが変わります。
xxxxxxx-no-MacBook-Air:~ xxxxxxx$ python3 --version
Python 3.8.3
xxxxxxx-no-MacBook-Air:~ xxxxxxx$ cd /usr/local/bin/
xxxxxxx-no-MacBook-Air:bin xxxxxxx$ python3 --version
Python 3.8.12
<質問>
(1)カレントディレクトリの位置によってバージョンが変わる原因は
何が考えられますか?
(2)python3.8.12が、下記のディレクトリのどちらにもありません。
~/.pyenv/shims/
/usr/local/bin/
どこにあるのでしょうか? ライブラリ
├パッケージ1
│ └モジュール1.py、モジュール2.py、、、
├パッケージ2
│ └モジュール1.py、モジュール2.py、、、
├
$ pip install ライブラリ名
sample.py
#import ライブラリ名
from ライブラリ名 import パッケージ名
#from ライブラリ名.パッケージ名.モジュール名 import メソッド名,変数名,クラス名など
print(パッケージ名.変数名)
print(パッケージ名.メソッド名())
print(パッケージ名.クラス名.メソッド()) 訂正 >>979
print(パッケージ名.モジュール名.変数名)
print(パッケージ名.モジュール名.メソッド名())
print(パッケージ名.モジュール名.クラス名.メソッド()) pipのpはパッケージなのにインストールするものはライブラリ パッケージはPythonの言語機構で固有の定義があるけど
ライブラリは一般的なプログラム・データの塊という以上の意味はない(たぶん) >>976
一番よくあるパターンは
/usr/local/bin
に python3 があって
PATH=.:/bin:/local/bin
とかの順番になっているとき 動的にdefできる点と両立できる案があればだけど
その場で関数定義する流れだけど記述は前方ってややこしくない?
もう外に定義したらいいやん 参照渡すだけのラッパーにして実体は外に定義くらいしか思いつかん
とりあえず次スレ
Pythonのお勉強 Part67
http://mevius.5ch.net/test/read.cgi/tech/1653540315/ 似たような処理が並んでるな、という時にひとまとめにしたいだけなので、
処理にはその関数内でしか参照できない変数がいろいろ混ざってる
関数化するのではなくてループにするのが正解なんだろうな >>983
レスありがとうございます。
下記について教えて頂けませんか?
pyenv versionsコマンドを入力しますと
3.8.12と
3.8.3
が表示されるのですが、
/Users/xxxxxxx/.pyenv/shimsには、
python3とpython3.8はあるのですが、
python3.8.3も、python3.8.12もありません。
他のディレクトリにもありません。
python3.8.12は、どこにあるのでしょうか?
pyenvの中の管理情報だけあってインストールされていないのでしょうか?
xxxxxxx-no-MacBook-Air:~ xxxxxxx$ ls /Users/xxxxxxx/.pyenv/shims
2to3 pip python-config
2to3-3.8 pip3 python3
easy_install pip3.8 python3-config
easy_install-3.8 pydoc python3.8
idle pydoc3 python3.8-config
idle3 pydoc3.8 python3.8-gdb.py
idle3.8 python $ which python3.8.3
$ which python3.8.12
では出てこないのか?
$ find / -name python -print
では大げさすぎるかな >>990
バージョンが変わるディレクトリに移動したら
$ pyenv which python
pyenvに限らんけどええかげんREADME読む癖つけんとずっとそのままだよ>pyenv >>991
レスありがとうございます。
>$ which python3.8.3
>$ which python3.8.12
では、何も出て来ませんでした(エラーメッセージも)。
>$ find / -name python -print
で、
/Users/xxxxxxx/.pyenv/versions/3.8.12/bin/python
/Users/xxxxxxx/.pyenv/versions/3.8.3/bin/python
が出て来ました。
以下推測ですが、
python3.8.3や、python3.8.12という名前のpython実行ファイルはなくて、
どのバージョンも皆同じ「python」という名前の実行ファイルが
バージョン名のディレクトリの下にあるみたいです。
多分「pyenv global バージョン」を入力すると
該当バージョンのpythonをpython3という名前で
/Users/xxxxxxx/.pyenv/shimsの下にコピー(上書き)して、
/Users/xxxxxxx/.python-versionに
そのバージョンを書き込んでいるのではないかと思います。
それが正しく処理されないのが、問題なのですが…
>>992
レスありがとうございます。
README読んでみます。 bashだったら
$ python
の最後でタブを打つとpyhtonで始まるすべての実行fileが画面に表示されるよ
/Users/xxxxxxx/.pyenv/versions/3.8.12/bin/python
/Users/xxxxxxx/.pyenv/versions/3.8.3/bin/python
この二つのpythonがリンク関係になっているのかどうかだな
$ ls -l /Users/xxxxxxx/.pyenv/versions/3.8.12/bin/python /Users/xxxxxxx/.pyenv/versions/3.8.3/bin/python
で実体が見えるよ >>994
やってみました。
xxxxxxx-no-MacBook-Air:~ xxxxxxx$ python
Python 3.8.3 (default, May 6 2022, 18:20:17)
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
xxxxxxx-no-MacBook-Air:~ xxxxxxx$ ls -l /Users/xxxxxxx/.pyenv/versions/3.8.12/bin/python /Users/xxxxxxx/.pyenv/versions/3.8.3/bin/python
lrwxr-xr-x 1 xxxxxxx staff 9 5 23 16:30 /Users/xxxxxxx/.pyenv/versions/3.8.12/bin/python -> python3.8
lrwxr-xr-x 1 xxxxxxx staff 9 5 6 18:21 /Users/xxxxxxx/.pyenv/versions/3.8.3/bin/python -> python3.8
3.8.12のpythonも、3.8.3のpythonも、
同じ「python3.8」へのリンクになっていて、
実行ファイルはPython3.8.3しかありません。
どういうことでしょうか?
3.8.12のディレクトリを削除して、
3.8.12を再インストールすれば良いのでしょうか? macはそんなややこしいことをしてはいけない製品な気がする 公式ってMac用のインストーラー配布してなかったっけ python2がプリインストール
homebrewでpython3入れてzshの設定ファイルでパス通した記憶はある このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 192日 16時間 37分 1秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。