Pythonのお勉強 Part66
レス数が1000を超えています。これ以上書き込みはできません。
!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 https://ideone.com/EAfGGN
エラーでない警告でないNaNにもならない
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print(np.linalg.inv(a)) ファイルを指定するとそれを読み込んで加工したデータを返す
という関数を共通化したいのでclass化した
data = MyClass(file).get_data()
みたいな感じにして、処理は全部__init__()に書いて、get_data()はreturnするだけ
なんかすごくもにょるけど、どうするのがかっこいいだろう >>8
__init__()の中身は最低限にして
内部的にデータ加工用にメソッド作ったほうが良くない?
__init__に処理全部書いたらテスト面倒やん
ユニットテスト書いてみて、「これ面倒すぎじゃね……?」ってなったら
なんかおかしいイメージがある 改造元に初期化部分みたいなのが無いので難しい
やるなら、ファイル名だけ__init__で保存して、実行兼取得のメソッドを呼ぶとか
結局クラス化はやめて、関数のままimportすることにした
importにクラスと関数が並ぶと、それはそれで気持ち悪い Javaあたり出身ぽいな
別に関数とクラスのimport並ぶのは問題ないし普通のことだよ まあ、無理してクラスにしなくても関数で処理した方がいいかもね。
クラスはカプセル化だから、与えたファイルに対して、
読み込む、書き込む、処理A(データ加算した結果を返す)、処理B(データ乗算した結果を返す)
みたいに、色々処理があるなら意味があるけど。一つだけの処理なら関数のがすっきりするかもね。 >>8
クラス化する理由が分からん
data=get_data(file)じゃいかんのか? 何となくモジュールはクラスだけだと思ってたんだよ
しかも1ファイル1クラス 基本的に関数で作ってから後からこれ、もっとまとめられるんじゃね?ってなってからクラスにする感じ
最初からクラスを作ったり難しい事をするとバグに気づきにくくなる >>19
普通はコーディング前の設計時にクラスは作られるんだわ
それこそ「アプリケーションとしての不具合をなくすために」クラスは作られる >>19
設計しないでコーディングしてるのか?
一番ダメなやり方だろ モジュール化しないとは誰も書いてないけど
インスタンス化しない設計ならクラスの方が冗長でしょ ごめん、頭の中で設計しながらコーディングしてるから問題ないわ あとPythonのクラスは動作速度を低下させるから無理にする必要もない >>21
おいオメー さっきからうるせえぞ
「設計する」「設計する」ってよォ〜〜〜
どういうつもりだてめー
そういう言葉はオレたちの世界にはねーんだぜ…
そんな弱虫の使う言葉はな……… >>24
Python使ってる時点でこれ以上気にする程遅くならんやろ クラス作るのを難しいとか言う人なのでそっとしておいてやってね 再利用する必要が発生したらクラス化だな
この世の全てはオブジェクトなのであるー、とトップダウンでオブジェクト思考しようとしても無理で、
あんなもんは上等なライブラリに過ぎない 別にクラス出来ないとも言ってないし、Python速くしようと思えばだいぶ速くできるんだけども そういう部分って塵積だから実際に困ってからリファクタしたらいいんだけど
エンジニア思考的には誤差でも遅い選択肢をとりたくないよね
余計な仕組みが介在してると読み解こうとミスリードしがちだし グラスも変数なんだが、グローバル変数をクラスにまとめたらglobalは書かなくても良くなったわ。 設計自体は間違ってないから、一旦グローバル変数多用して書いたコードが、
classにするとパズルが解けるようにするすると綺麗になっていくのは気持ちいい >グローバル変数をクラスにまとめたら
グローバルなバカでかいクラスが生まれるのか コード上は明確に分離はしてないけど、処理としてはちゃんと分離していて、
ブロックとブロックの受け渡し部分にいくつかのグローバル変数がある
という状態のものを引数や戻り値に変更して、関数やクラスに切り分けて
すっきりさせるのは簡単 >>34
a.b.cと言った変数をクラスに定義して、para.aと使うだけ。
書き換えでもglobalは不要になる。 >>34
class アホ:
pass
アホ.ボケ="カス"
アホ.オレ="フサフサ"
こんな感じでアホの空クラス作っておいて後からアホに紐付いた変数を作ったり出来る >>1
以前、Rubyの本読んでたけど、Ruby好きとは仲良くなれないと思った。 perl使っててかゆい所に手が届くようにするとrubyになる 言語は痒くなくなったけど代わりに脳みそが痒い奴が寄り付くようになった 既に言語はあって、それで目的のことはできるだろうに、
それでも新たな言語を作る奴というのは何か振り切ってるので、
出来上がった言語もそれぞれに振り切っている
pythonは何ていうか、全てに中庸なんだよな
力を抜きすぎないけど凝りすぎない python は qt との相性が抜群なので、120%満足です。
力技でperl/Qtを使ってた頃がバカみたい w
perl と qt の相性は最悪。 ソ連の核は綺麗な核
ポル・ポトはアジア的優しさ
北朝鮮は地上の楽園
珊瑚自作自演事件
南京・慰安婦捏造
教科書書き換え「誤報」事件
朝日・武富士裏献金事件
拉致問題切り捨て
サイレント魔女リティ
風の息遣い
五味ボマー
変態新聞
村木局長犯人扱い
その他人民裁判ならぬマスコミ裁判は数知れず
そしてマスコミお得意の「報道しない自由」
これでも貴方は新聞を信用しますか
これでも貴方は新聞を購読しますか
よく考えて下さい >>44
他のGUI toolkitと比べてQtの優位性って何がある?
最近GUIにもちょっと手を出そうとしてるんだけど、QtがヨサゲならQtopia触ってた身としては他の模索省いてこのまま進めたい >>46
ヤッパリ古いのは機能豊富だしカレテル
Qt利用経験あるならPyQtかPySide2で決まりだと思う Qt-designerが使えるのが一番だな、GUIで画面が作れないとメチャクチャ大変から。 excelとかxmlとかいろんなファイルを読んで別のファイルを生成するツールがあって
自分用で使うなら設定用のテキストファイルに
読み込むファイルや出力ファイルを記述する方式で十分なんだけど、
社内で共有して使う用にアホでも使えるGUIを用意したい場合、
何を使うのがいいだろう >>42
あっちのスレで引き留めて置いて欲しいんだが
色んなスレに拡散感染拡大して迷惑
それだけの吸引力も無いようだ >>39
ハゲにハゲと言うのはハゲであることは事実だが名誉棄損にはなるらしい >>50
設定ファイルのテンプレをexcelで造って
excelから設定を読み込めば喜ばれる 設定のexcelファイルはいいな
以前の設定の流用がしやすいし、操作にも慣れてる
説明も書き放題
ボタンをクリックするとpythonが起動する部分の設定が最難関だけど、
カレントにあると決め打ちでいいか 誰もがエクセル使えると思わないほうがいいよ
UIとして使うにも限度があるしマクロ使うといちいち警告でるし複数PCからアクセスされると編集禁止とか余計なエラーが出てとにかくみんなイラつくだけ
UIデザインはHTMLにまかせてNode.jsなりで管理するのが楽かと まあ、フリーソフトの配布ではないので
excelは全員が使えるとしてよい >>47
Qt6でようやくasync/awaitってな… チラッとネットで見たけど、async/awaitって真面目に使うとなると面倒そうだね。
これって主に何に使うの?fork()して実行より、楽って事? コンピュータの性能を100%引き出し、最高のユーザー体験をお約束します。 PythonではFastAPI以外で使ったことないすね…
js/tsではないと困るけど
いつの間にかasyncio.runなんて追加されてたのか 富嶽のsimで温暖化対策に貢献とか言ってるけど
なぜ富嶽を北海道に造らなかったし 寒冷地域と温暖地域の温度差が少なくなると対流が起きず地球が冷やされないからでは? あんまりpython関係ないかもだけど
ちょっとした設定情報をjson形式で保存してて
更新とかするときに
json.loads,json.dumpsとopenで丸ごと上書き
ってやってるんだけどダメかな?
(他の重要というかシステムに近い設定とかはenvとかDBで管理してる)
jsonじゃなくてそういうのに特化した規格ってあるのだろうか。 >>68
整形してないからじゃ?
してあっても読みにくいなら、キミ自身に問題がある sqlだとソースからみるときクライアント選ぶのがなぁ・・ python2の方が良かったのに
という点ってある? >>65
強いて言えば、一時ファイルに書き込んでからrenameで上書きした方が安全、くらい 最初からSQLite使えばいい。
ジャーナリングも標準であるし。 asyncioはI/Oに効く
データベースの読み書きとか通信処理とか
バックグラウンド処理はCPUにオーバーヘッドがある時 3.8.5でwin8.1で動くものをwin7に持っていくと、
subprocess.Popenでエラーになって動かない
最新のpythonはそもそもwin7にインストールできない
win7で動くもっと新しいバージョンはある?
無い場合は何か解決方法はある? FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
実行しようとしてるのはbatファイルで、.batまで書くとエラーにはならない
でもサブプロセスとしては動かなくて、処理はそっちに移行して終了してしまう
shell=Trueを付けても同様の動作になる
やりたいのは、いつ止まるか判らないコマンドをサブプロセスとして動かして監視すること Pyの知識以前のWinのシェルの知識だな
cmd . exeをスイッチ付きで起動してやればいい 3.7だと動くのかどうか
去年ですらopenCVがPython3.8で動かないとか問題になってたなあ この辺が時々問題になるから
じゃあwheelで取ってくるかと思い
pep425とかget_supportedとかやってみたら無くなってる
調べたらutils.compatibility_tagsとかになってた
それをふざけてcolaboratoryでやってみたら3.7までしか対応してなかった次第 perlだとwin7の時点で既に固まってたので、環境が古くて困ることは無かったけど、
pythonはまだ進化を続けてるので、後方互換性はかなり怪しいな
本番環境側をwin10にしてしまおう >>84
cmd /K
とか
shell=FalseまたはTrueかな
この辺いい加減に描いてると動かない >>86
Pythonの違いじゃなくてWin32 console APIの違いの可能性もあるね
Console切り離すのは結構version違いが激しい
Powershellでも厄介
batをVBで書き直すことを勧める >>93
Console切り離すのが簡単なスクリプト言語他にあるかな? 問題はbatファイルの呼び出しだったようで、
実行ファイルを直接呼び出すように変更したらwin7でも動いた cp932で表せないファイル名のリストを作る
cp932にencodeしてみてエラーになったらそれを出力する、という方式なんだけど、
printするとエラーになってしまうので、リダイレクトでファイルにできない
仕方ないので、encoding="utf-8"でopenしてwriteしてるけど、
改行とか付けないといけないし、printで済ませたい
printしてもエラーにならない方法とか無いのかな
python2ならそのまま行けた >>100
https://docs.python.org/ja/3/library/functions.html#print
>>> f = open(path, 'w', encoding='utf-8')
>>> print(*objects, file=f) cp932のエンコードなんだからcp932でないものは通さない
という例外を認めない姿勢は厳密ではあるけど融通がきかないよな
漢字のファイル名も使えるのに、たまに'〜'とか変なスペースとかで
処理できないツールは大抵そういう厳密さで引っかかってる
ノーチェックで通してれば処理も減るしツールも使える側に倒れるのに なんとなく筋違いのことを言っているのだけはわかった。 既にファイルは開いてるんだから、そこにwriteするかprintでfile=を指定するかは、
処理上何も変わらない
知りたいのは、リダイレクトしてエラーにならない方法
os側は何が来ようがそのままファイルにリダイレクトするので、
標準出力に出す時点でのチェックを止めればいい python2でいけて、python3でエラーっていうのがわからない
CP932のコンソールの問題なら普通前者で起きると思うんだけど あと、openするときにバイナリ書き込みを指定すれば済みそうだけどな
改行コードもそのままにできるし とどらんみたいなサイトに興味があるんですが、統計学とデータ分析どちらの知識が必要でしょうか?。 a = ['a', 'b', 'c']
if 'x' not in a: print('hello') #1
if not 'x' in a: print('hello') #2
#1はaに'x'が含まれていない
#2は(aに'x'がふくまれている)の否定
この二つは全く同じものだと考えて良いのでしょうか? CIに必ずいれるしflake8なしでコード書くのは考えられん if a is not None:
if a not is None:
if not a is None:
Python は書き方が一つしかない()っていったのは誰? 英語文法に強いと#1しかあり得んとなるが
否定文でこけた経験があると、どうしても頭に否定書きたくなってしまう
なんなら否定自体書きたくなくなる 変数hogeに値がある場合はfugaにhoge(の値)を代入したい場合
if文や条件式を使わずに表現する方法ってある?
# python
hoge = "piyo"
fuga = hoge if hoge else ""
bashの変数展開みたいな書式ないよね
# bash
hoge="piyo"
fuga=${hoge:-""} それこそwysiwygの精神に反するってすぐ分かりそうなもんだけどな Python初心者です
https://teratail.com/questions/251676
このページを参考にBytesIOを使おうと考えています
a = np.load(BytesIO(binary))
このように使った場合、BytesIOは不要と判断されて開放されるのでしょうか?
https://docs.python.org/ja/3/library/io.html
The buffer is discarded when the close() method is called.
とのことで、
stream = BytesIO(binary)
a = np.load(stream)
stream.close()
としたほうが良いのでしょうか? >>123
IOBaseの説明の対比でそう書いてるだけで
GCが働くからclose()は必須ではない with BytesIO(binary) as stream:
__a = np.load(stream)
withブロックを抜けるとcloseされるから安全 >>121
なるほど、or はこんな動作もするんだな
ありがとう >>120
よくわからんけど
その例だったらfuga=f’{hoge}’でもfuga=hogeでも同じじゃないの? >>128
変数 hoge に "piyo" が入っているのは一例で、
例えば、hoge がもし None だった場合に ""(空文字)に変換されるので、
そのまま文字列(の一部)として出力したいときに使えるようになる あー、hogeが存在してなくてもエラーが出ないのか まあ、自分しか見ないソースならいいけど見ずらくなりそだな、その書き方。 undefinedに対応できない、Falsyのうっかりとかあるから、褒められる書き方ではないわな。 >>124
>>125
ありがとうございます、勉強になりました fuga = hoge if hoge else ‘’
fuga = hoge or ‘’
どっちも’’とか特定の偽しか来ない前提だけど冗長でない分後者を推す
公式にも前者のコード例はたぶんないし ‘’ or ‘’は意味不明やわ。日本語不自由ですまん perlの // みたいなのは無いのかな
a // b はaがNoneでなければaを、Noneならばbを返す >>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 >>136
それ
x = a if a else b
じゃね?
なんか避けたいって言ってるやつ Noneかどうかで判定したいってこと
if a
だと0でも空文字列でも偽だから曖昧になりがち
if a is not None
でぜんぜん困らんけどね PEP505は全く進展ないね
3.10には入ると思ってたけど 値が入っていることを想定しているけれど、想定外にNoneだった時の為のガード
みたいな使い方をしたいんだろうけど、
そういうのは明示的にifとかtryで書いた方がいいよな むしろ気をつけないといけないのは、想定外にTrueになってしまうケースだ。
たとえば、昔のDjangoのUserモデルのis_authenticatedは、プロパティじゃなくてメソッドだった。 Noneも曖昧だからね
単なる未定義なのか空集合なのかエラーなのかNoneそのものなのか
ディクショナリー検索等でNoneが帰って来る仕様だがどう扱うか 結局は>>143の言うとおりなんよ…
我々はすでに知ってるんよ、中身がNullかどうかに注目した結果
普通にコード書くだけでトライキャッチスパムになってしまうJavaとかいう言語を… エラーの情報をちゃんと持ってて、ずっと上流の呼び元までそれが伝わる言語あったな
なんだっけ
関数は引数に従って値を返します
という前提で普通の言語は設計されているけど、
関数は引数に従って値を返します。返さないこともあります
でないといけなかった 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追加する
というのが無難なのだろうか・・ validator 内で GET/POST 区別したら? 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() >>148
今はpydanticなvalidor使ってるけどクラス変数の評価前に区別する方法があったりするのだろうか
>>149
うんとりあえずはそんな感じでリクエストメソッド分だけ用意することにした
d ★★★★★
会話をすればポイントが増えてアイテムを買える。
次世代の大型掲示板、メルプラネット。
https://merpla.net/boards/ >>144
かと言って最初からOption型やmaybeモナドでライブラリ構成されてもウザいしね 名前と数値がセットになったような内容を扱う時、
セットにしただけのclass作る? キーと値がセットになった各値をどう扱うかによって
インスタンス化するか、辞書にとどめておくか、ライブラリ使うか
変えるかなぁ >>153
自分だけしか使わないならダラダラ書くけど
引き継ぐ可能性がある場合はクラスにしといた方がメンテしやすいんじゃないかと思ってる リファクタリングの本読んでて、オブジェクト指向の初心者は
小さなオブジェクトを使うのを嫌がる的なことが書いてあって、そんなもんかなと 通常そういうデータってどっかのクラスのメンバ変数で辞書かnamed tupleじゃねえか?
keys:names のみのクラスってどういう状況であり得る? ただの名前であってキーとは言ってない
重複のない保証はない
name[i]とval[i]で管理したいところ
valでソートをかける
classにせずとも余裕でやれる
やれるけど? >>160
じゃあその組を管理するRDB風のクラスがいいんじゃないの?
#セットという言葉の使い方が気になる いいんじゃない、の加減なんだよな
しなければならない / 是非するべき / した方がいい / しなくてもいい / しない方がいい / しない
そのへんの温度感が経験で違うのだろう urlopen()をwithで取得してwithを抜けると何が起きるの? 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パッケージ がお奨めです。
だし、説明が追加されることはなさそう。 pygameってみんな使ってないのか?
せっかく二冊ほど読み終えたのに動かそうと思ったら
3.8じゃうごかないとか言われて途方に暮れてるんだが・・・
すなおにゲームはunityつかえってことか・・・・ >>168
たくさんあるから
Python ゲームエンジン
で検索して目的に適してるのを選べ pygameでmidiが取り扱えるんだよな
ハノン弾いてリアルタイムで正確さを表示したら面白いと思って
ずっと前に作りかけて放り出してある
今ならすぐ作れそう >>173
公式によれば3.9も
ただメインテナンスはやや停滞なんかね 色々試したらうごいたわありがとう
レースゲーム動かせるわ Pythonエンジニア認定試験のことってここでも大丈夫ですか? pythonが使いこなせるかどうかの能力なんて、
各種ライブラリのことをどこまで知ってるかだからなあ
言語仕様の部分はすぐに全員カンストするから差が出ない
標準ライブラリに限定して問題作ると、もっと便利な方法があって現実的でなくなる そうだね
そもそもpython自体は簡単だし
ライブラリを使いこなす知識の方が重要だよね
認定試験無いよりはマシだろうけど
認知度が低いから結局試験の内容を説明しないとイケないんだよな
情弱処理持ってる方が話は早い 改行区切りで書かれたファイルがあって、これを改行無しでリストに読み込みたい
そして、リストを改行区切り形式でファイルに書き出したい
内包表記で改行を削って、書く時にはjoinで改行付けるとかすればできるけど、
もう一段スマートにやれないかな 読み込み側は、
f.read().splitlines()
ですっきり書けた
この逆をする関数があればいい
リストの各要素を改行で区切って文字列に変換するような関数
ってそれは単にjoinの特殊ケースに過ぎないから、無いのも頷ける あるべき姿はpickle
でもテキストエディタでも開きたいので、jsonとかyamlとか
それでも編集しにくいので、どうせリストだしと改行区切りまで落とすと、
スマートな手段が無くなる 自分でjsonEditor作るのは面白いよ。中級クラスのレベルかな。
データも list >> dict >> dict >> list >> list >> dict >>int 見たいにnest構造になってるから編集しようとすると、そこそこ扱いも難しいし。
画面構成から考えれば、いい練習問題になるよ。 >>180
ありがとうございます!
Pythonエンジニア基礎認定試験を受けようと思うのですが、
スッキリわかるPython入門を導入書として使ってからPythonチュートリアルをしようと思うのですが、同じように勉強して合格された方はいますか? > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw >>181
Ruby なら、配列を出力するだけで、改行区切りになるけど
ary = [ "ab", 1 ]
puts ary
出力
ab
1 perlだとこんな感じ
デフォルトはスペース区切りなので改行に変更
@a = (ab, 1);
$" = "\n";
print "@a"; >>191
writelines(lines)
行区切り文字は追加されないので、書き込む各行の行末に行区切り文字を含ませるのが一般的です。
https://docs.python.org/ja/3/library/io.html
って書いてあるからダメでしょ
そもそもそのリンク先
text = [
"メロンn",
"イチゴn",
"みかんn",
"スイカn",
"ぶどうn"
]
なんて書いてる時点で信用できない pythonの裾野の広さを感じさせてくれるサイトだよな Perlの文法も気持ち悪いな。
シェルスクリプトかよ。
Pythonのやり方はJavaかC++からの輸入だな。 >>193
クソのくせにやたら検索に引っかかってくるからウザイ テックアカデミーと侍は中学生に書き直させた方がまだ読めるようになるレベルのゴミ readlinesやwritelinesで改行コードを扱う方法を提供しないのがPythonクオリティー
テックアカデミーをバカにできない 日本語の技術サイトはろくなのがない印象
Pythonに限らないけど 昔はインスタントPython、インスタントハッキングがjpy公式にあったから
そこで初心者は学習できた
あと結局pythonは公式ドキュメントとライブラリーリファレンス読み込むことで大抵の問題は解決する
個人的な問題を解決したかったらそれなりにキャリアのある個人ブログ探すのが安定する >>195
Perlはシェルスクリプトの置き換えが目的そのもので順当
PythonはLuaのようなアプリ内スクリプティングな応用が当初多かったし
記述が簡便なのが特徴じゃない?なんで所々厳格でなくて歪なのが残念な点
というかJavaとは同世代だし Python は、改行コードがめちゃめちゃ難しい。
global newline みたいに自動的に、OS に合わせて変換してくれる、機能はないのか?
Ruby では簡単なのに 入力はどんな改行が来てもちゃんと読んで、
出力は今動いてる処理系に合わせて出力すれば、それで問題ないのでは コード上改行はLFで統一できてる。
何も指定せずテキストモードでopenしたらCRLF→LFの変換はしてくるし
Windowsコンソールに出力したらLF→CRLFも透過的に行う。
バイトストリーム用にos.linesepも用意されてる。 >>211
ありがとうございます!
Pythonチュートリアルを読む前の参考書はどんなのを使われました? >>212
ダラダラ質問小出しにされるのはウザいのでまとめて なんでリストが[]でタプルが()なんだろうな
一番使うものが一番普通な方が収まりがいいのに
辞書が{}なのも、別に[]を使っても中にkey:valがあったら辞書と判るのに
中身が無い時に区別付かないけど、そのくらい何とかなるだろ >>207
'\n'がlength 1 string objectであると理解できてないのではないか
またCの'\n'も理解できてないのではないか
逆にCでのstrlen(”\n")の値とか >>217
これまでの言語の慣習に合わせただけでは?
またそれは重要だろう >>216
タプルは()、は少し違うな
正確にはカンマがタプルを生成する
a=1,2
もタプルになるから 受験料高いのね
落ちたらまた受ければいいやんと思ってた
Python 3 エンジニア認定基礎試験
一般価格 11,000円(税込)
学割価格 5,500円(税込) 会社から報奨金でもでんかぎり勉強だけして試験受けないのも手
分野にもよるがまだAWS/GCPの認定や情報処理とったほうがまし java金とかオラマスよりは良心的
しかし内容によるな netmikoというライブラリを使って
ネットワーク機器のログを定期的に取るようにしてるんだけど、
そのログの任意の行にある値が閾値を越えたらslackに通知させる
仕組みを作りたいんだ。
どっか参考にできるサイトない? pyエンジニア試験はゴミだぞ
古典的な教本商売。無価値
名札が欲しい、とか、仕事で言われたとかなら仕方ないけど E501 line too long ってちゃんと直してる? 応用技術者試験って意味ありますか?
昔受験して一応合格したのですが、あんな試験にパスしたからといって、実務には全く役に立ちそうにありません。
IT関連の実務は経験したことがありません。 >>232
ド素人でないことの証明にはなる
資格欄に書いた方がいい 実務経験ないのに実務に役立ちそうにありません、とな
もう少し考えてから釣り糸たらせよボンクラ 例えば、ネットワーク関連の問題が応用情報技術者試験には出題されます。
ネットワークをいじったことすらありませんが、試験の問題は簡単に解くことができます。 >>234
人売りのシャチョさんこええw
使えねぇもんは使えねぇんだわ youtubeでラズパイをpythonで制御できる。って動画をみて面白うそうだなって思ったけど。。
真剣に考えるとやることがないww
LEDをフラッシュさせてもしょうがないしねw ラズパイ買うときはセンサも買え
なんでもいいからいくつかの種類買っとけ >>238
ちっちゃいモニターもな
これがあるとないじゃ全然違う 世の中には頭の悪い人がたくさんいる
・簡単な計算ができない
・文書が理解できない
応用情報だけでもヤバイ人達との差別化にはなる >>229
slack webhook requestsで検索するとヒントが出てきそう >>242
それはあるかも
考える事が出来ない人って結構いるんだなと仕事し始めてから知った 「半分の人間は中央値以下」
バカみたいな文だが忘れがち 「半分の人間は平均値以下」
と言っとけば、なるほどなーうまいこと言うな
と評価を得られたものを、厳密さに拘って機会を逃す あんまり統計的に意味がある数字じゃないよな
平均値を避けるということは標準偏差ではないと判ってるんだから、
歪度とかの情報も無いと乱暴すぎる 平均値でも中央値でもいいけど
そのレベルの人の能力が分からないので
そもそも議論にならない 統計検定3級おすすめ
データ分析の議論に参加できる最低ラインの保証になる 山本太郎の「れいわ」が躍進したのは、
25年の自公政権で、所得の中央値が108万円低下したことを、暴いたから
世界中で全体未聞の、GDP が上がらなかった国。
ほぼ全員を貧乏にした与党
消費税のほとんどが、福祉に使われなかった。
法人税の穴埋めに使われた
でも、こういう事を知らないから、選挙では自公が圧勝する >>252
中央値なんて中学校の数学で習うもの知らないやつが
>あんまり統計的に意味がある数字じゃないよな
は草 >>259
よくわからん
知ったのか知らないのかはっきりしなよ
あとスレ違いだからよそでやって 配列の範囲外を参照したら0を返してくれたら楽に書ける
初期化してない変数は0や空文字だとしたい
そういうのは許さないのがpythonの思想なんだろうけど、
クラスライブラリとか、「よく判らんけどいい感じにやってくれる」に満ち溢れてると思うんだよな さすがに初期化してないのに0で返ってきたら違和感ありすぎる
その0どこのやつやねん listを継承したsafelistでも作ってsafelist.get()すればいい numpy.zeros(m, n) じゃダメなのか
sparsityによるけど なんていうか、出来るからといって
何でもやっていいわけではないよな…?
型宣言して型無視したり、変数名と全然違う振る舞いのコードもかけるけど
やっていいかどうかを現場で議論してるんだよな? >>248
「半分の人間は平均値以下」
この命題は偽だぞ
90,80,85,30
この4つの数値の平均は71.25
平均値以下は1つ 中央値に意味が無いと言えるのは中央値と平均値の乖離が小さい場合くらいで、
そんな状況はほぼない
日本全体の平均年収が436万円であるのに対して、日本全体の年収の中央値は370万円
これの意味分かるか? > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw >>259
Ruby氏は政治も語るのか
自分でRailsサーバー建ててそこでやってくれ
ここの本来の住人がやると、Djangoで作る 統計は正しく使わないと意味のある結果を導き出せない
知らないで使えば無知だが
知ってて使わないのは詐欺だ 「意味がない」「正しい」
会社でこんな曖昧な表現使ってる人見たことないわ >>263
DSPとかの飽和モードってそんなんだから
まぁ需要はあるんじゃね?
アセンブラ以外で実装した言語を見た事が無いから実装はされないと思うけど 配列はみ出してるのにそのまま処理続行されるとか悪夢でしか無い 世の中には3種類の人間がいる
数を数えられる人間と、数を数えられない人間だ モンティ・パイソンのスペイン宗教裁判
NOBODY expects the Spanish Inquisition!
Our chief weapon is surprise...surprise and fear.
単数で始めたのにandで繋げてしまって文法が破綻する、という部分が面白いのに、なかなか伝わらない
Our two weapons are fear and surprise...and ruthless efficiency.
言い直して複数形にしたけど、わざわざtwoを付けて3つ言うという部分はもはや惰性 >>252
標準偏差→正規分布、の間違い?
結構統計や確率分布も勉強すると面白いよ。
積率母関数はラプラス変換で、特性関数はフーリエ変換とかね。 どうせJavaScriptでへんな自信付けてココに迷いこんだ口なだろうけどな Pythonプログラマは年収が高いから魅力的なのかもな Pythonを使った機械学習の本を読んでいます。
仮想環境を使うことを強く推奨すると書いてあります。
いままで、AnacondaのPythonを使ってきましたが、仮想環境を一切使ってきませんでした。
今から、仮想環境を作ってそれを使っても何も問題はないですか? ライブラリのバージョンやらで混乱するくらいなら、最初から専用環境作れということでしょ
そっちのがめんどくさいと思うけど、仕事なら仕方ない >>286
ありがとうございます。
趣味でやっているだけなので、必要性が実感できません。
仮想環境を作るとしても結局、最新のライブラリを使っていくだけになるのは目に見えています。 趣味なら自分で必要になってから考えたらいいんじゃね >>288
そうすることにします。ありがとうございました。 >>284
因果関係がおかしいんだけどな。
プログラミングスキル以外が高い人(たとえは科学技術スキルやデータサイエンススキル)が、参入障壁が低いpythonに群がってるだけであって、pythonだけできたって仕方ない。
OpenCV,TensorFlow,Pytorch,jax,scipy,sclkit-learn,numpy,pandasあたりが使える人が年収高いというだけで、
それはPythonだけできても使える話ではない。
RDBや数学、統計の知識が必要なのだから。 マルチコアを活かしてくれないツールを高速化する為に、
複数を非同期で同時に走らせたい
ただ、無制限に subprocess.Popen すると負荷が100%に張り付いてやばいので、
同時起動数の上限を設定したい
で、まあpoll()がNoneかどうか見ながらsleepしながらで動くんだけど、
同じことをやりたいケースがちょこちょこあるので、自前ライブラリ化を考える
でも、そんなもんは既に誰か作ってるのでは? という気がするんだけど、どっかにある? オーバーヘッドを気にしないなら
multiprocessing.pool.Poolで任意サイズのプロセスプールを作ってそこからPopenする
threadingにも用意して欲しいんだが, 残念ながら無い
あとFutureでよければThreadPoolExecutorもワーカー数を指定できる
こちらはスレッドベースだ やっぱりそのへんになるよね
たすきに長すぎな感じで、そこまで高度なことをしたい訳でもない
IOがネックになるからそこで詰まらないように並列処理したら効率的になるだろう、という思想だけど、
もっと原始的な、4コアあるのに1コアしか使ってないじゃんというレベルで、ネックの場所が違う 100個のファイルに処理1を実行して、次に処理2を実行して、という場合、
並列でやるとしても処理1が全て完了してから処理2に取り掛かった方が安全で、
それは割と簡単にできる
処理順の依存関係まで指定してえいやっと全部一気に渡すと、済んだ人はどんどん先に進める方式だと、
効率最大でやってる内容は魔法みたいになる
キューに入れてもいいタイミングはユーザが判断してね方式だと、そんな怖いことはやりたくない
このへんの技術はとっくに枯れてる訳でもなくて、pythonのバージョンが上がるにつれて
よりシンプルに書けるようになってるっぽいので、いちばんいけてる奴だけ使いたい >>297
よくわからんけど機械学習系のタスク管理ライブラリを当たってみるのがいいのでは >>297
>並列でやるとしても処理1が全て完了してから処理2に取り掛かった方が安全で、
なんで安全なの?
ファイル間に依存性があるのかな? 使いこなせないから知らないけど
非同期処理ときたらasyncioじゃないの? キューが空いたら依存関係見て依存してる処理が全部終わってる処理を検索してキューに入れるだけだろ
枯れてないとか意味わからん 依存関係はケースバイケースすぎて処理1と処理2が終わってないと処理3ができない、
みたいなのは
p3(p1(), p2())
みたいに引数の関係で書いて、それがうまい具合に遅延して評価されればいい
その時点で結構凄いことだけど、処理10まであって、
p10(p9(p8(p7(p6(p5(p4(p3(p2(p1(
って書くのかと思うと、それも嫌
そのへんは既に解決済みでもっとかっこよく書けるらしいけど、理解できてない 記述は依存している隣同士の関係だけでいいやん
それを動的に解釈していくか全展開するかはプログラムの中の話 デフォルトは自動で0になってて欲しい系の代表は defaultdict だな
pythonをperl化してしまう悪魔のモジュール
いわゆるautovivification
声に出して読みたいプログラミング用語 defaultdict()
引数なしで0はドキュメンテーション上ひどいけど
defaultdict(0)
callableじゃない引数ならcopy()する動作でもとは思う tipsとか説明してる動画がいろいろあるけど、
どう考えても動画で見るよりも文字のサイトで見た方が効率いいな
アニメーションで説明するならまだしも、コード映して音声で説明するだけだし その通り
でも見るより聞くほうが頭に入るっていう人はいる
そして動画なら普通は飛ばされるちょっとしたエラーへの対応なんかも映されてたりしていい
そういう意味じゃまぁまぁ分かってるぐらいのやつが試行錯誤しながらやってる動画が一番いいかもしれない動画なら
それと小技100選みたいなのは動画のほうがサクサク見れていいなって思った 仮に多少わかりやすかったとしても時間効率が悪すぎる ん、今のとこ理解が追いついてない
と一時停止するのはまだいいとしても、
そこはもう判ったからくどく言わなくていい、
という部分だけ早送りするのは困難 いわゆる
教育サイトのヤツって制限つよいから使えんな
YouTubeのが倍速できていい Udemyは倍速できた
開講者によって違うのかもしれんけど python始めたての頃、日本語でpythonを解説してる動画があったんで見てみたけど、
内容の良し悪し以前にタイプ音が耳障りすぎて見てられなかったな
カチャカチャ…ッターン!!ってまんま昔のミサワの画像みたいな こういうプログラム組みたい、みたいなのはここでもいいのですか? python **.sy ディレクトリ1 ディレクトリ2
としてコマンドライン引数2個を使い
ディレクトリ1から特定条件のファイル・ファイルサイズを抽出し
外部プログラムを利用して処理しディレクトリ2の場所にファイル名でフォルダを新規作成しそこにアウトプットしたいのですが
これは難しいですか?
半日かけて色々こねくり回してもファイルを抽出するところまでしかできませんでした どうせなら入力用と出力用は順不同でいけるように、-i -o オプションとか付けよう Pythonを先週から使っててORMのdatasetを試してみてるんですけど、
find()に WHERE `hoge` > 10 相当の条件って指定できるんですか? シンプルなORMないかなーって色々触ってみるけどあれこれ機能が足りず結局SQLAlchemyになっちゃうよな >>325
できればヒントやサンプルをいただけませんか >>326
やろうとしてることを段階的に分けて書いてみて >>328
1.ファイルの入ったフォルダをコマンドライン引数1に設定する
2.フォルダ内から特定の拡張子かつ一定以上のファイルサイズのものを抽出する
3.抽出したファイルを外部ツールにかける
4.外部ツールにかけた結果をコマンドライン2引数のディレクトリ内に展開する
5.フォルダは4の指定ディレクトリ内にファイル名で新規作成する
こんな感じです
for + os.walkとendswithでファイル一覧を抽出できてもその抽出したファイルをその先に持って行ったり
外部ツール利用の方法が全くわかりません streamlinkはpythonで書かれてるのに、
pythonからの使い方が判らないので、subprocessでpython呼び出してる Pythonでやるからややこしい
1,2はfind
3,4,5はxargs + sh(cd, mkdir)
でできる内容
Pythonでやるのがお題ならごめん >>331
バッチでってことですか?
FFMPEGがワイルドカード対応してなくて無理でした >>329
>1.ファイルの入ったフォルダをコマンドライン引数1に設定する
>2.フォルダ内から特定の拡張子かつ一定以上のファイルサイズのものを抽出する
>5.フォルダは4の指定ディレクトリ内にファイル名で新規作成する
2と5の間はとりあえずスキップして、ここだけの実装は可能? >>334
2の途中で詰まりました
抽出したファイルの扱い方がわからなく・・・ >>332
バッチてことはWin環境なんかな
Pythonで解決した後でもいいからPowerShellもしらべてみて
習得にあるていど時間かかるけどやれることが広がるよ
あとワイルドカード展開するのはコマンドじゃなくて通常はシェルの仕事 すみませんバッチファイルの本を買って勉強します
ありがとうございました 実際問題として、PS使うならPythonで書こうとするかなぁ
他のOSでも使うことができるし
とりあえずバッチとwshは使いたくない find -execかfind xargsが鉄板だと思うけど
外部コマンドのstdout/stderr出力をPython側でキャプチャする必要なければそんなにややこしくもない
for path in Path(search_dir).glob(pattern):
__if path.stat().st_size > 1000:
____dir_path = Path(output_dir).joinpath(path.stem)
____dir_path.mkdir()
____new_path = dir_path.joinpath(path.name)
____os.system(f'echo "{path}, {dir_path}" > "{new_path}"')
(同じファイル名があった場合の対処はしてない) winでもwsl2で >331が書いてる手順でヤレる
powershellも覚えれば便利なんだろうけど… 使うのがffmpegの場合、他にも考えるべきことが大量にあるので、
一括ではうまく行かないんだよな
何が来ても自分好みのファイルに変換する万能スクリプトを一つ書いて、
それに処理するファイル一覧を食わせる方式に落ち着いた awk,sedが必要になったらシェルスクリプトを諦めて全部Pythonで書くかな。
あれらを今から学習する気力が湧かない。 PSはPSでしかできないパワフルなことがあるので、
その部分だけPSでやるのがいい
windowsの底の部分を簡単にいじれるのはPSだけ 質問するならコード貼ってほしいな
このスレのテンプレにpaste用サイトが書いてある PSはlinuxでもosxでも動くし、あれだけで出来ること結構あるから知ってると便利だよな ガチでヌーブなんですけどrequestsとbeautifulsoupでスクレイピングやってます
waitかけないとバンされるよと言われましたがどうすればいいですか?
requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います
これに対してどうすればいいですか? 手動でブラウザ操作したときまんまsleepしたらいいだけ
サーバ構築する側はボットなんか勘定にいれてコスト設計してないんだから >>342
for curDir, dirs, files in os.walk(sys.argv[1]):
for file in files:
if file.endswith("〇〇"):
os.path.getsize(ts)
print(os.path.join(file))
これでファイルは取得できるのですがそのファイルを参照する方法がわからず・・・ こうでした
for curDir, dirs, files in os.walk(sys.argv[1]):
for file in files:
if file.endswith(".〇〇"):
print(os.path.join(file)) 並列数1なら大したことないけどね
応答時間200ミリ秒なら、毎秒最大5リクエストだし 参照って何をしたいのか知らないけど、ファイル名取得出来てるんだからオープンするのも他のコマンドの引数に与えるのも可能では >>352
Ruby では、glob に拡張子も指定できる
# 絶対パスのディレクトリ名の後ろに、*.txt を付ける。
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/**/*.txt"
separator = "-" * 30 + "\n"
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
puts "#{ separator }#{ full_path }\n#{ separator }" + File.read( full_path )
end できないglobなんか無いだろ
from pathlib import Path
p = Path("c:/path")
for filename in p.glob("*.mp4"):
print(filename) rubyとperlとVBとobjective-Cの人は、脱出するのが早いほど幸せになれる すんげえ苦労したけどなんとか形になりました
バッチなのですれ違いすみません
もっと勉強して最適化していきます
わかってしまえばすごくシンプル
set Tool="Tool"
set template="template"
for %%f in (%1\*.〇〇) do (
mkdir "%2\%%~nf"
%Tool% -i %%f -o "%2\%%~nf\%%~nf.dgi" -a -e
del "%2\%%~nf\%%~nf.log
) from datetime import datetime, timedelta
import pytz
dt=datetime.now(pytz.timezone("Asia/Tokyo"))
print(dt)
print(dt.today())# timezone変更 不適用
print(dt.time())# timezone変更 適用
dt_utc=dt.astimezone(pytz.timezone("UTC"))
print(dt_utc)
print(dt_utc.today())#
print(dt_utc.time())#
#2021-12-08 01:34:40.591170+09:00
#2021-12-07 16:34:40.592894
#01:34:40.591170
#2021-12-07 16:34:40.591170+00:00
#2021-12-07 16:34:40.598068
#16:34:40.591170
.today()てtimezone変更引き継いで?くれないんですね・・ Pythonで組みなおしています
デフォルト関数も多そうだし条件分岐とかが簡単そうですが
外部ツール起動に対するオプション調査中です
ファイル名を取得してその名前でディレクトリを作成するところまではできました
import sys
import os
import subprocess
for i in os.listdir(sys.argv[1]):
file, ext = os.path.splitext(i)
os.mkdir(sys.argv[2]+file) 外部ツールに抽出ファイルをかけるのが難しいですね
%Tool% -i %%f -o "%2\%%~nf\%%~nf.〇〇〇" -a -e
この処理をPythonでどうやるのか?
subprocess.runあたりを使うっぽいのですがその後の書き方や処理方法が不透明
ターミナルにパイプして処理する?とかになるなら結局バッチかパワーシェルで
統一した方が早いのでしょうか 標準出力を取得して、とかやるとそれ用のことを書かないといけないけど、
実行させるだけなら超シンプル
subprocessから取得したデータをパイプでffmpegに渡して、
とかやらせてちゃんと動くとちょっと嬉しい >>370
バッチで用が済むなら終わりでいいのでは
汚いスクリプトなんてプログラミングの勉強にならないし m = re.search('pattern', str)
if m:
item = m.group(1)
みたいには書けるけど、ifの中にmの取得を一緒に書けない?
そうでないと、if elif elseで書けない 昔のpythonでは書けなかったんですが
python3.8からassignment expression := ができるようになりました おおー、できるのか
でもうちのは3.7だからできないわ
会社のは3.6だからもっとできない
変な互換性のなさを作り込むよりは、3.6でもやれる方法を考えよう >>370
各変数を別途取得して、subprocess.runで起動するアプリの引数として与えるだけ
自分で引数をオプションとして与えたいなら、argparseを使う item = data.get(1)
if item:
id(item)
#3.8
if item:= data.get(1):
id(item) >>374
スコープの話なら、関数こさえてreturnで拾うという手もあるけど、めんどくさいね 無駄な処理は増えるけど
m1 = re.〜
m2 = re.〜
としておいてから、
if m1:
elif m2:
なら書ける
代入が評価もできる仕組みは、書き間違えてバグるからというよりは、
単純に読みにくくなる プライベートだと思っていた彼女のホールがグローバルだった 入力行をsplitして取り込む
arg1, arg2, arg3 = line.split('\t')
みたいな感じ
でも、入力がちゃんとしてなくて数が多くても少なくてもエラーになる
そこはよしなにやって欲しい
足りない部分はNoneで埋めて、余った分は捨てていい
というええかげんなことをしようと思ったら、ええかげん関数を作るしかないのかな hash = {'ぐれ':1, 'ぷ':2}
matched = m.group(1)
if not hash.get(matched):
print('i want to write else case')
elif hash[matched]== 1:
print('do 1 case')
??? >>384
arg1, arg2, arg3, *_ = line.split('¥t') + [None, None] すみません、質問なのですが、
newline= ってpython3じゃないと使えないのですか? "newline= を使う"ってなに?
文字列の中に改行コードは使えるか
って意味じゃないよね
それだとそっこーぐぐったら出てくるし。
なんかのライブラリやらフレームワーク的な話なのだろうか あるいはクロスプラットフォームでのCRLFかLFかみたいな話かな beautifulsoupでattributeerror: nonetype nas no attribute stringが発生するんだけどnoneになることが想定される場合は一々いっこっこifでかこってやらないとだめなの? 最大限何でも見つかるようにしとくから、緩めるのはユーザ側でやってね
という姿勢は間違ってないんだけどな
元から緩かったら厳しくしようがない 自分の管理できないデータを拾おうとする場合は
例外処理は必須だと思う >>395
ifかor
Pythonにはsafe navigation operatorがないからスクレイピングコードは煩雑になりがち
https://en.wikipedia.org/wiki/Safe_navigation_operator
要素がなければ空文字のようなデフォルト値を返す汎用的関数を自分で用意すると少し読みやすくなる JSONなんかだと、get()で拾えばまぁ困らんな BeautifulSoupじゃなくてScrapyなら少しマシ
公式ドキュメントの質は段違い >>401
指定した要素がない状況を考慮する必要があれば階層ごとに自分でハンドリングが必要だからgetだけじゃダメなんだよね
safe navigation operatorがあればlodashのgetやrubyのdigのようなのが簡単に作れる
近いところでglomがあるけど処理を分割したり、つなげたりできないから使い勝手が悪い クラスAを入力にしてクラスBに出力する時
a.process(b)
よりも
b.process(a)
の方が直感的だろうか >>405
processというメソッド名で二択ならまだ後者だけど直感的でない
どっちを主体にしたいかを決めてそれにあったメソッド名をつけるのが正解 名前をちゃんと付けると、データの抽出と設定を同時にやる訳だから
b.extract_data_and_write(a)
と書いたとしても、
from b to a なのか from a to bなのかは判らない 責任の所在はAにあるから
aの所有するメソッドがbを操作する、という書き方がいい
つまり前者 pythonって直感的ってより
少ない記述で書ける小型プログラムってイメージ pythonって直感的ってより
コーディング規約みたいなのをなるべく減らすよう設計されてるイメージ すいませーん、入門したばかりなので低次元な質問ですけど教えてください。
DataFrameで行番号100以上のdf["hoge"]の値を全てNoneに置き換え、
って、どうやるんでしょう?
whereを使って列の値をキーにして置き換えみたいな記事はあちこちにあるんですけど、
うまく見つけられなくて…。 一応、出来たみたいです…。
df_subset = df2.query("index > 100")
df2.loc[df_subset.index, "hoge"] = None
2ステップになっちゃいました…。
もっと楽なやり方ってあるんでしょうかね? df.iloc[df.index>100,”hoge”]=None 間違えた
df.loc[df.index>100,”hoge”]=None プロパティなんだよな
適当にネットのコードをコピーして改造して動いて、
後からよく見てなんだこれてなる > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw >>416-417
有難うございます、いけました。
DataFrame操作、便利なのはわかってるんですが、記述方法がこれまでやってきた他の言語にはなかった感じでちょと戸惑ってます。 インデックス操作はスライス使う方がオレは好きだな
df.loc[100:,”hoge”]=None 上の方に要らない行があるからそれを削る、みたいな時には使うけど、
インデックスを数字で指定することがそもそもレア try - finally
はwithで置き換える
自作withはcontextlibで作る javaって言えば今日は大騒ぎだったなw
影響範囲で言えば2年前のstruts2 RCE祭りより酷い
pythonのloggerは大した機能なくてハァ〜〜ってため息が出ることが何度かあったけど
今日だけはチープな実装でホントよかったと思ったわ でも今までなんも起こってないからそのままだったんよね? loggerがどれだけ高機能でも、記録するだけなら何も起きない
なんで実行するかな すいません。Pythonプログラムでpyxelを使ったゲームを作ったんですが、それを友達に共有したいのですが、どうすればいいですか?
zipとかファイルで送りましたが起動できないと言っていました。 exeにしたんですが、クリックして開いたと思ったらすぐ消えてしまいました。
また、環境はpyxelをインストールするだけでいいのですか? 先日入門した他言語者ですけど、閉じ括弧書かなくていいの、地味に楽ですね。
Yamlと同じ楽さです。 vscodeで選択した行まとめてスペースするには? >>438
{}でブロック定義する言語の場合、
今どきの初学者キッズ達の書くコード、まじでインデント滅茶苦茶ですからね。
『しつけ』という観点においてはPythonのインデント強制が矯正になっていいんじゃないかと思います。 対応する括弧へのジャンプ機能でブロックの先頭に飛べて便利なのに
上に探して行って、今のインデントレベルに最初に何か書いてあるところまでジャンプ
みたいなマクロが要る >>441
そういう根性論じゃなくてフォーマッタとか仕事を効率化する方法を教えてやるべきだと思うぞ >>441
一発でオートフォーマットできるからインデントがめちゃくちゃなコードでも何の問題もない
python以外ではね >>443
インデントするかしないかなんて癖とか慣れみたいなもんだし、根性論がどうとかじゃないだろ
それこそ、インデントに限らず変数名のつけ方とかコメントの書き方とかも同じだよ
実際に書きながらじゃないと身につかん >それこそ、インデントに限らず変数名のつけ方とかコメントの書き方とかも同じだよ
>実際に書きながらじゃないと身につかん
それが根性論。
わかりやすい変数名は自動じゃ付けられないがインデントは自動でできる。
限りある時間と頭は前者に注力するのが合理的ってもんだろう。 インデントずれてる奴は雑なんだろうな
安心して仕事任せられないわ 根性が嫌ならもうコーディングは他人にすべてを任せて貴重な時間を経営やコミュニケーションスキル学習へ回した方が合理的 >>447
わざわざフォーマッタとか使わせるなら最初からまともな開発環境なりエディタなり使わせるわ 今日の不毛な議論のテーマ「インデント」です。
結論が必要ない人だけ参加してください。 わざわざ手でインデントすることを強制するよりまともな開発環境使わせろと言ってたのはこっちなんだが 書くのは多少ぐちゃぐちゃでもいいけどレビューの時にはちゃんと整形しとけ ちゃんと整形できない人
ご飯クチャクチャ食べてそう インデントなんてリフォーマットで一発だし
変数名なんて設計の問題 フォーマットがしょっちゅう変わるからblameが使いにくくて
何だこれウンコだなって評価してたけど少しはマシになったのか? インデントずれてるのにリフォーマットしたらロジック変わるんじゃ… >>463
さすがにブロックや折り返しを正しく認識できない状態で強行するフォーマッタはないだろうし
正しく認識できている状態でフォーマットするならそれが変わることもないはず。 自動フォーマットできる範囲がPythonの場合限定的って話でしょ
インデント間違ってたら動かないケースがほとんどなんだから こういう話題は盛り上がるんだなあ
自転車置き場の議論だっけか 仕事で書き始めると内包表記とか全然使わんな
使わんでも書けるし
まぁ慣れなんかね 内包表記と言われてもcomprehensionと言われてもピンとこない
もっといい呼び方なかったのか 2重の内包記法が出てくるとウッとなる
1重は問題ないが 短く圧縮する為の技じゃないしな
理解を阻害するなら本末転倒
正しく使うと読みやすくなる 内包表記 + lambda でせっかく数式ぽく見やすく書けるのに
そこで複雑に書いちゃうのは本末転倒だし盛大にディスってええよ 単なる長文折返しのときも4つスペース入れてる?
自分は意識的に2つにしてる(pep8でも許容されてる) >>476
このレスみて気づいたけどまんまSQLなんだよな blackのリファレンス見てたら--safeってオプションがあるんだよね
つけないとフォーマット前後でASTが変化してたか検証しないんだってよ
すごくない? てか普通はASTに解釈してからコード生成するもんだろ
そうすれば構文が変化する可能性は実装ミス以外で理屈上あり得ない 何かのコンファレンスでいろんな国の人が集まって英語で話している
でもみんな母国語は違う言語
なんかpythonはそんな感じで、他に慣れた言語もあるけどpythonでも書く
だから、いろんな方言が混じる Pythonって言語というかコード自体に対する関心の乏しい人が多くて、
どっちかというとプログラミングオタクみたいなのより目的志向の人がクールだとされるような空気があるんだよな
だからPythonの流儀とか気にしないで無茶苦茶やる人が多い
最近ではJava専のSIerなんかも参戦し始めてて混迷に拍車がかかっている そこにペチパーも入ってきたら最悪だな
スコープ区切ることもなくダラダラ長いスクリプト書き散らす文化最悪 実際どうでもいいだろ
好きに書かせればいい
ただ型指定強要とかそういうのはパイソニックじゃないから勘弁してほしい
今ん所必須と思ったことはない さすがに型情報なしは一人プロジェクトじゃないと無理があるんじゃないかと >>487
ようつべくらいのコンパクトなプロダクトじゃないとな 100万行のPythonコードとか頭イカれてるとしか C++だとクラスを継承して関数を再定義するとき、ヘッダーをみればvirtual関数か見分けがつくじゃん。
pythonだと普通に関数を書けば再定義できちゃうから、見分けが難しいよね。
特に、継承の継承とかしてると更に見分けがむずかしい。
これって、自分で関数名を工夫するとかしか手はないよね? >>495
継承元辿っていかないと仮想関数かどうかわからないのでは?一番親にvirtualついてればよかったよね? NFTアートが1300万円で落札。VRアーティストせきぐちあいみ「誰もがまだ見ぬ世界を創りたい」
ゴーグルの先に広がるのは、何もない真っ暗な空間。しかし、両手に持ったコントローラーを
振りかざすたびにバーチャルの空間に色が現れ、天地が生まれ、次第に豪華絢爛な異世界が立ち上がる。
その内部は360度から堪能することができ、地を這うことも空を駆けることも自由自在。
VRアーティスト・せきぐちあいみの創作活動は、まさに天地創造だ。
VRと出合ったことで人生が大きく動きだし、今では海外からも注目される存在になった、せきぐち。
VRで人は何を体験できるのか?
そして、彼女のデジタルアート作品に1300万円もの価値をつけたNFTの新たな可能性とは? 変数名スレと迷ったんだけどpython+tkinter限定の話の気がするのでこっちに…
class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)
__def on_close(self):
____global flg
____app.destroy()
____flg = False
if __name__ == '__main__':
__flg = True
__while flg:
____app()
アプリケーションのリセットを実装するためにこういう書き方を考えたんだけど
1 : 問題ないですよね?
2 : flgの適切な変数名はなんですか?
isAlive? loop? 失礼
on_close()内のappはself.appです class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)
こういうのて全角スペースを使うと見易くなるよ。
class App():
def __init__(self):
elf.app = MyWidgets()
self.app.mainloop()
self.app.protocol("WM_DELETE_WINDOW", self.on_close)
AAの感覚ねw ・のほうがまだ見やすいよ
しかし空白文字を制御に使うなんてどこの誰が考えたんだよ
class App():
・def __init__(self):
・・self.app = MyWidgets()
・・self.app.mainloop()
・・self.app.protocol("WM_DELETE_WINDOW", self.on_close) コードがじかに張り付けられて
その場で実行されても困るからな 普通は全角スペース使うな
そしてそのまま貼り付けてエラーになる
pythonもスペースとTABの他に全角スペースもインデントに許可してくれればいいのに どう考えてもこの掲示板がヤバイのにPythonが悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな
Pythonに型定義が必要だと思ってるとかも... 変数名に全角文字も使えるけど、全角スペースは使えないんだよな
だから、pythonも全角スペースをスペースの一種だとは思ってる
strip()でも削除される
でもインデントには使えない >>501
Appクラスにstart, stop, restartメソッドを実装して使い分ければmainにflgやwhileは必要なくなる
現状のループ実装ならflgの名前はshould_restartとかかな
ただrestartするのがデフォルトの動きなら真偽を逆にしてshould_exitとかにしたほうが意図が伝わりやすい どう考えてもこの掲示板がコード貼り付けにむいてないだけなのにこの掲示板の機能が悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな この掲示板というより、htmlが連続スペースを無視する仕様を引きずってるんでしょ
ブラウザでやればどこでもそうなる 5ch は、命令によって表示を変えられる掲示板で、
単に文字列として表示しているだけの掲示板じゃない
色々な命令を受け付けるから、危険な命令を書き込めないようにしている >>511
import tkinter as tk
class App():
__def start(self):
____self.root = tk.Tk()
____self.btn_1 = tk.Button(self.root, text='stop', width=10, command=self.stop).pack()
____self.btn_2 = tk.Button(self.root, text='reset', width=10, command=self.reset).pack()
____self.root.protocol('WM_DELETE_WINDOW', self.stop)
____self.root.mainloop()
__def stop(self):
____self.root.destroy()
__def reset(self):
____self.root.destroy()
____self.start()
app = App()
app.start()
こういう感じですかね
init経由しないの初めてなのでリセット時にきちんと初期化できてるのか不安 Tk使うと途端に思考がイベントドリブンになるんだよな
コンソールに出力してちらつくのが嫌だから、
単に表示用のウィンドウが欲しいだけなのに、
実行開始ボタンみたいなのを追加した方がスムーズに作れる Unicode的に全角空白含めホワイトスペース(混在不可)でインデントできてもいい気がするが
HTMLで連続する全角空白がそのまま描画されるのはバグ Tkか。
perlで使ってたな。
で、本格的なGUIを作りたくてQtに移行した。でもperl/Qtの使いにくさは異常ww
pythonに移ったらQtとの相性が抜群で驚いた。
本格的にGUIを使うならQtがいいと思う。少なくともTkはダメだな。
python/tkの現在のレベルがどの程度がしらんけどw 手軽にGUI化したいか、ちゃんとやりたいかだよな
同じモジュールで簡単に作れるし凝ったものも作れるといいけど、
どちらかに特化してるので結局いろいろ手を出すことになる おれはpythonのGUIは全部webアプリに作り直したわ
個人でやる分にはwebアプリの方が使い勝手が良いというところに帰結した
一番の理由は仮想環境で安定して完結出来る、すぐにデプロイできるという点だったかな
(まぁその考えもまた変わるかもしれないけど)
GUIで作ってた頃はPySimpleGUIってライブラリがめちゃ直感的で使いやすかったな ライブラリというかフレームワークだった
他に何か補助的なライブラリをインストールするとかは必要なく
pysimpleguiだけでほとんどできた記憶 人名の、外字をreportlabでPDFに出力したいのだけど、□になってしまいます。
PDFにフォント埋め込んで表示させる事はできないのでしょうか?
ちなみにエクセルからPDFに書き出すとちゃんと表示させる。 特定の文字種だけ読めなくなってるpdfとかたまに見るな
あれは実は作った本人は読めてるのかもしれない
つまり、pdf自体は正しくて表示する側の問題かもしれない 埋め込んだフォントに外字が含まれているかどうかの話で
使う側は関係なくない?しらんけど そう思うんだけど、まともに読めないようなものを公開すると思えないんだよな PDFの文字コードはUnicodeじゃなくて独自だった記憶 自作外字でも、エクセルからPDF書き出ししたらちゃんと見ることが出来るんだわ。windows10のエクセルで書き出したPDFがMacでちゃんと外字も見れるので出来るはずなんだ。
で、それをreportlabでやりたいんだけどやり方が分からんのです。 fx-CG50
full pythonでpytorchでも動くようになったら
いいのになぁ >>534
これはできる。
ただ、表示する文字列に自作外字が入ると□になる。
なので、pdfに外字の情報を埋め込まなきゃいけないと思うのだけど、やり方が分からないのです。
誰か教えて下さい。 外字の含まれるフォントファイルを読み込んでないんじゃないの、ということだと思うけど Jupyter Notebookに本のサンプルプログラムを
表示させたとき
in ソース
out 処理結果
って表示させられるんですけど
in ソースの部分だけを抜き出したくて困ってます
その部分だけ選択してコピペするには手間がかかります
質問なんですが
Jupyter Notebookで
out の部分を非表示にするいい方法ないですかね? >>536
えーと、windowsの場合、EUDC.TTEとEUDC.EUFの二つのファイルがシステム標準の外字となっており、すべてのフォントにリンクできます。ですので、MS明朝でも、MSゴシック
でも同じ外字が出力されます。
ので、MS明朝をベースにして作った外字をMSゴシックで表示させると、外字だけ明朝っぽい表示になりその他はゴシックに
なります。
要するに外字のデータはフォントファイルに保存されているのではなくて、別ファイルからリンクが張られているのです。
なお、フォント個別に外字ファイルを作成して個別にリンクさせることもできますが、そっちをreportlabでやってもダメでした。
ExcelからPDF吐いたらちゃんと埋め込まれるのに・・・。
誰か教えて。 そこまで切り分けできてるんなら
reportlab-users
で聞いてみたら フォントを埋め込むのが前提のライブラリなんじゃない? いきなり書き始める段階を脱して、def main(): から書き始めるようになったぜ main()の呼び出し側を書くの忘れて、エラーは出ないけど処理もされなくてびびった >>539
予め決められた標準フォント以外は埋め込むPDF規格が
PDF/x-1a
ISO 15930
です。
印刷業界でよく使われてます
reportlabがサポートしてるか調べてみて
まあghostscriptで簡単に変換できますが 読み込む=埋め込む、として読んでたけど、
確かに別ファイルとして参照させてるだけみたいにも読めるな
だとしたら原因はそれ 秀丸の色をqiitaみたいにする設定ファイル無い? 書く方は手数へって良さそうだけど読む方は一行で悩みそうな言語だなあ むしろ行数増えると思うけど
Sparse is better than dense pandasでtableを読み込んで、それぞれの要素に張られているリンク先を取得するにはどうすれば > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw ↑何があったか知らんけど、この人なんでこんなに悔しがってんの?病人? BeautifulSoupでスクレイピングしようとしてるけど、全然楽にならない
素性のいいhtmlからさっくり持ってくるなら簡単に書けるけど、
そういうのはベタで書いても楽
素性の悪いhtmlから複雑なことしようと思うと、小回り効かなくて何も使わずに書くしかない
楽になるケースが無い スクレイピングだけならJavaScriptをはじめとした他の言語で書いた方が数倍楽 対象がごちゃごちゃしてて、やりたいことも単純じゃないなら、
どの言語で書いても簡単には行かないと思うな
htmlでやれることが多すぎるので、その中からよくあるやりたい事を選んでも、
大抵はそれでカバーできない どんな言語でも人のコードを解析するのは難しいもんな
自分はあんまりやらないからVBAで済ませちゃうことが多い d = {}
print(d['a'])
これは当然エラー
from collections import defaultdict
d = defaultdict(dict)
print(d['a'])
これならok
print(d['a']['b'])
でもこれはエラー
d = defaultdict(lambda: defaultdict(dict))
こうしておくとエラーにならない
print(d['a']['b']['c'])
でもこれはエラー
なかなかperlみたいには行かない >>561
>>403で書いたけどどうしてもPythonでやりたいならglomみたいなライブラリを使うか自分でヘルパー関数を作るかになる
glom(d, 'a.b.c', default=None) buf = {}
buf['a'] = []
buf['a'].append(10)
buf['a'].append(20)
え、これいいの? って思うんだけど通るんだよねw そうかw
Cから入った自分は、え、これは無理だろ。って感じてしまうw
list = []
list.append(10)
list.append(20)
buf['a'] = list
なら納得いくが。
まあ、最近は昔ほど抵抗は無くなったがw Cから入ると組み込み関数名を変数に使うことに抵抗なくなる?
それとも>>567が特殊なの? i = 1
といきなり書いてokなんだから、
d['a'] = 1
a[1] = 1
もいいやろと思うんだけど 数値はいいとして、普通はアドレスが格納されるから
list配列に値をいれて、そのlistのアドレスをdictに格納する。ってのが手順だよね。
まあ、いいか。気にしないでww 宣言が必要と思うのは、入れ物を用意しないとと思うからで、
int i
と書くと整数の入れ物が、
float i
と書くと実数の入れ物が用意される
でもpythonは、いきなり
i = 1
と書くと整数が入るし、
i = 'abc'
だと文字列が入る
自由すぎやろと
何かの哲学に違反してねえかと
実際には、オブジェクトの入れ物でしか無いから、中身は何でもいいんだよな たまにnewしたくなるときがなくもない
実際したところでだから何が巻き起こるだけだけど >>572
void *a=new 10;
void *b=new 0.0;
void *c=new "abc";
Cだとこんな感じじゃねえの? アルゴリズムの問題で解けないやつがあるんですが、ここで聞くのはスレチですか? >>579
Python限定のお題になるなら構わないのでは無いかな?
お勉強スレだし Pythonの解くことを前提に与えられた問題なのですが、多分Python以外でも解けると思います。
一応投下させてください。
[問題]
n人の人間の身長が与えられる。
このn人を1列に並ばせるとき、「各々の人間において、自分より身長が高い人間が自分より前に1人以下である」という条件を課した際に、並び方は何通りあるか求めよ。
ただし、同じ身長の人間が複数人いるものとする。
方針だけでもいいので、教えて頂けると幸いです。 >>579
基本的にテスト問題は外部に漏らすのNGだから
サイトの規約をちゃんと守ってくれな >>585
友人から相談された問題なのですが、確かにテスト問題の可能性がありますね。
確認しておきます。 前に0人ならばただのソートなので1通り+同じ身長同士の入れ替えの組み合わせ
それを1人限定で崩していいので、崩し方のパターンだけ増やす >>583
>ただし、同じ身長の人間が複数人いるものとする。
この条件はどう効いてくるのでしょうか?
n 人の身長を h_1, …, h_n とするとき、 #{h_1, …, h_n} = n となる場合をなぜ除外しているのか? もちろん、この問題は速いアルゴリズムじゃないと駄目なんですよね? >>587
151, 150, 153, 152 …(cm 略)
の並び方も考えられるので、ソートを崩していいのは1人限定とは限らないと考えました >>588
分からないです…
少し問題が複雑になるんですかね? >>589
速さに関する制約はないと思いますが、流石に全並びを考えてカウントするのは違う気がします なるほど
ざっくりソートされてれば細かい部分で無数に違反してていいのか
151 150 153 152 153
でもokなので、同じ身長を1つに縮退させることがそもそも無理
これは、とりあえず片端からやってみて、違反したらバックトラックして、
みたいに数えていくしかないのでは >>593
やっぱり、ほぼ全通り考えるしかないんですかね…
あと関係ないですけどアルゴリズムの世界でも縮退って言葉使うんですね笑 数学問題やね
まず同じ身長の奴がいない場合の並び方はA(N)通りとすると
A(1)=1
A(2)=2=2^1
A(3)=4=2^2
A(4)=8=2^3
...
A(N)=2^N通り
同じ身長の奴がいる場合はちょっと複雑
これをB(N)通りとすると
N人の中に150cmが3人いる場合
B(N)=A(N-2)*(3*2)
N人の中に150cmが3人と152cmが2人
B(N)=A(N-3)*(3*2)*(2) 訂正:A(N)=2^(N-1)
A(N)=A(N-1)*2となることを証明すればいい 分割統治でやって欲しいんじゃないの
ソート済みの状態から一番高い身長のやつをピボットにして左半分と右半分の問題に分割
右半分は同じ身長のみ入れ替え可能
左半分は一番高い身長のやつをピボットにしてさら左半分と右半分の問題に分割
左半分が1人になったらピボットの位置を移動させる >>595
A(N)=A(N-1)*2の証明を考えてみましたが、思いつきませんでした…
あとB(N)の計算例が何故そうなるのか理解できません🙇 >>597
具体的な操作のイメージが分からないです… >>600
コードの理解に努めましたが、難しいです…
ヒントを頂けないでしょうか🙇 >>593
Amortized sortって奴だね >>598
A(N)=A(N-1)*2の証明
時間がないから手っ取り早くヒント
背の高さでソートされた順列(a,b,c,...,x,y,z)があるとする
ここで一番背の高いzの位置に注目するのがポイント
zが一番後ろにいる場合を (abc...xy)zとする
ここで(abc...xy)の並び方の数をZ(N,1)とする
Z(N,1)=A(abc...xy)=A(N-1)
zが後ろから2番目にいる場合は
(abc...x)zy
Z(N,2)=A(abc...x)=A(N-2)
整理すると
Z(N,1)=A(N-1)
Z(N,2)=A(N-2)
...
Z(N,N-1)=A(2)
Z(N,N)=A(1)
よって
A(N)=A(1)+A(2)+....A(N-2)+A(N-1)
変形して
A(N)-A(N-1)=A(1)+A(2)+....A(N-2)
すなわち
A(N)-A(N-1)=A(N-1)
A(N)=2*A(N-1) 君はテスト問題でないことが確定されるまでは参加禁止なのでは 皆様、大変勉強になりました。
ありがとうございました。
この問題を聞いてきた人は、友人と言っても連絡先も知らない、週一でしか会わないクラスメイトなので、確認には少々時間がかかると思います。
>>604
この方の言う通りなので、ご教示はここまでで大丈夫です。
繰り返しになりますが、ありがとうございました。 ぱっと見DP使わせるような問題に見えるし
どこかのコーディングテストの転載臭い in placeなものとそうでないものが混ざってていちいち引っかかる new_list = old_list.append(1)
old_list.append(1)
new_str = old_str.replace('aaa', 'bbb')
old_str.replace('aaa', 'bbb')
new_list = old_list.sort()
old_list.sort()
new_list = old_list.sorted()
old_list.sorted()
どっちが正しいでしょうと、pythonをよく知らない人に聞いても正しく答えられない
個別に覚えるしかないというのは辛い pandasだと、基本的には非破壊で、
inplace=True
を付けると破壊的に処理する
sortみたいに、replaceとreplacedを用意するというのでもいい
デフォルトがどちらかに寄ってるべき 破壊的というか、参照渡しだから同じもの見てるだけ
値で渡したかったら、つまり別々のものを見るようにしたかったら
空スライスまたはコピー関数で値をコピーするか
ミュータブルに一度変換して対象オブジェクトに再変換するかでいい
こう考えたらnewしたいな、と感じるときもある
だから関数設計するときも紛らわしさを考慮してリターンするオブジェクトは
関数内で新しく作ったものを出すようにした方が誤りが減る ヘッダ
中身
ヘッダ
中身
...
というデータがあって、中身の数は不定
これをそれぞれのブロック毎に処理したい
シーケンシャルにやると、とりあえず次の行を読んでみて、
ヘッダだったらプールしておいたブロックを処理して、ブロック切り替え
そして、全部読み終わった時にもプールしてあるブロックを処理する
いかにも嫌なので、一度全部読み込んで、部分リストに分割して処理したい
でも、普通にやると部分リスト分割のところで、とりあえず次の行を読んでみて、になるので、
リストを一発でsplitしたい
splitのlist版みたいなのは無い?
厳密にはセパレータも残すのでsplitとも違うけど splitも次の要素をみてから判断してるにちがいないけど
じぶんのコードで書きたくないってこと?
ヘッダや中身も同時にパースできるし同じく正規表現(re.finditerあたり)推す 次の行ってのが論理的な要素を指してて実体はlist(iterable)ってんなら
more-itertoolsのsplit_beforeとか
バイナリなら書きづらいけどぜんぜん正規表現でいける 実体はopenpyxlのセルオブジェクトのlistなんだけどね
無理やりくっつけて正規表現でやっつけても、その後が困るのでlistで処理するしか
numpyのsplitが使えそう 正規表現がいやならpeekable iteratorで >>615
本来、そのデータを受け取る側はどうやって処理してるの? リストを逆から処理していってブロックのリスト作るだけでは >>615
プログラマ向いてない
意味のないこだわりで問題を難しくするタイプ >>622
処理速度とか気にしないなら自前で書いたほうが融通が利くだろうよ
でもヘッダとコンテンツというブロック構造は頻繁に現れるデータ構造だから一般化したものを使いたいね
この形はDB形式そのもの
sqlに落として使うのもいいかもな 使い捨てのプログラムで、この拘りだったら永遠に考えとけって話だよなぁ listをsplitしたいという質問に対して、答えが判った今なら、
そんなもんはnumpyで一発でできるよ、という簡単な問いにしか見えない
ごちゃごちゃ変な回答してる人はどうせnumpy知らないんでしょ? ちょっと教えてほしいんだけど、print関数で出力される文字列を
変数に入れたいんだけどどうしたらいいだろう?
printと似たようなstringを返す関数を作れるならそれでもいいんだけど
カンマ区切りで複数パラメータを渡せる宣言がわからない formatやf-stringのことかな
val = 123
a = f'残金{val}円'
または
a " '残金{}円'.format(val) >>632
>>> def f(*args): return args
>>> f('abc', 'def', 'ghi')
('abc', 'def', 'ghi')
こういうことではなくて? >>636
それだとタプルで返ってくるだけで
文字列になってなくない? msg = 'a,b,c'
print(msg)
values = msg.split(',')
こういうこと? 仕事でnumpy使ってるけど未だによく分からないことあるな まとまったメモリ確保して関数に渡すためだけにstructured array使ってる import numpy as np
l = [-1, 1, 2, 3, -1, 1, 2, -1, 3, 4]
header_position = list(filter(lambda x: l[x] == -1, range(len(l))))
for a in np.split(l, header_position):
print(a)
-1だとヘッダだとする
ヘッダ位置のリストをsplitの第2引数に渡すと、その場所でsplitしたarrayのlistが得られる
先頭のは要らないので捨てる >>> import more_itertools
>>> l = [-1, 1, 2, 3, -1, 1, 2, -1, 3, 4]
>>> iter = more_itertools.split_before(l, lambda x: x == -1)
>>> list(iter)
[[-1, 1, 2, 3], [-1, 1, 2], [-1, 3, 4]] よく、more_itertoolsなんて知ってるね。 numpyだけじゃなくpythonも覚えたてだったか python覚えたてチェック
yield使ったことある? >>646
俺の知ってる一発とは意味が違ってた
それはともかく
1周で済むところを2周して
split後に先頭が空配列なら捨てる処理も必要で
シーケンス限定なのでちょっとキツイかも この後、分割したリストに対してメインの処理をするので3周だよ 先日Pythonに入門したビギナーですけど、おおむねPythonは便利ですね。
プログラミング言語というよりはどっちかっていうと利便性の高い道具といった感じです。
道具なのでこれで業務システムは作りたくないけど、これがあると業務のめんどくさいところをいろいろ楽にできるといったイメージ。
加えてライブラリ類が超強力なのばっかりなので『そりゃ、これは流行るわ』と思いました。
いまんとこの不満はスタックトレースがASCじゃなくてDESCならよかったなーっていうのと
switch〜caseがほしいなーっていうのと、
三項演算子ほしなーっていうのくらいですね。 urllib.requestで足りるんだけどエラー処理を自分でやらないと止まる
もう少し安全にしたモジュールないかな >>655
Python 3.10からパターンマッチ いい感じのGraphQLライブラリないかなと探してて見つけたTartifletteが最強だった
さらっとGraphQLいじりたいならgrapheneがあるけどこれ微妙なんだよね
Tartifletteマジおすすめ 認定試験2回も落ちた…
プログラミングしてる人ほんとすごいわ尊敬する そうです。
社会人なのですが勉強がとても苦手で、合格率高いって聞いてほんと凄いなと思ってます。
エラーと例外が意味わからん… エラーと例外の区別は言語によるけど、pythonの場合は
止まってしまうのがエラー、回避できるのが例外 >>665
ありがとうございます。
今年中には受かりたかったのですが、三度目の正直でがんばります。 PythonでカッコイイGUI作れるライブラリないですか?
Tkinter使ってるんですがいまいち見た目が古いです 最終的には自分でskin作らないと、どこかで見たのになっちゃうな > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw >>667
PyQT5を試してはどうでしょうか?
ライセンスの関係でQt本家のPySideと
Qtバインディングは2つあります >>670
私もラズパイでpyQt5使ってるけど商売したら駄目ですか? 番号が飛んでるのはまたrub○狂信者が
暴れたのか?
新年早々ご苦労様 >>670
QtはC++で使ったことありますね
見た目は良い感じですね 亀レスだけどpythonデータ分析試験のほうは実践的だからおすすめしたい。
教養としてアリ windowsの隠し属性などの判定で
import os
from stat import (
FILE_ATTRIBUTE_SYSTEM as S,
FILE_ATTRIBUTE_HIDDEN as H,
FILE_ATTRIBUTE_READONLY as R
)
path = '\foo\bar'
if os.stat(path).st_file_attributes & (S | H | R):
というような書き方を見たんですが
&から先って何してるんですか?
ビット演算? このカッコとパイプはなんですか? attr = os.stat.st_file_attributes
res = (attr & S) + (attr & H) + (attr & R)
と同じ? ファイル属性にSまたはHまたはRが設定されているか判定している >>675
ビットマスクってやつ
FILE_ATTRIBUTE_SYSTEM (0x4)
FILE_ATTRIBUTE_HIDDEN (0x2)
FILE_ATTRIBUTE_READONLY (0x1)
(S | H | R)が0x0111
st_file_attributeのほうの該当ビットがどれか1つ立ってればtruthyになる >>679
おービットマスク
ようやく検索のとっかかりが分かりました
ありがてえ strの中に'aaa'か'bbb'か'ccc'が含まれている場合
という条件をスマートに書きたい
一致だったら
if str in ('aaa', 'bbb', 'ccc'):
でいいけど、含むになるとうまく書けない any(word in str for word in ['aaa', 'bbb', 'ccc'])
re.search('aaa|bbb|ccc', str) もちろん推奨されないけど組み込み関数と同じ名前の変数は使えるよ 文字列が何かと一致する、の時は文字列は左辺でいいのに、
文字列が何かを含む、の時は文字列が右辺に来るんだよな
if [パターン1, パターン2, パターン3] in 文字列
みたいな書き方が許されない限りどうやってもすっきりしない
どこかにanyをねじ込まないと意味が判らんけど all(),any()なんてあるんだね。
ここ見に来ると勉強になるよw allとanyは必須
flag = False
for なんやら:
if 条件:
flag = True
break
みたいなよくある書き方をしなくていい
よくある書き方すぎて、その方が通りが良かったりもするけど >>691
and or all anyでもはやidiomだ aがbに含まれる、が
a in b
という順序なのも、文章優先
bがaを含む
b includes a
でも良かった
それなら
b includes any(a1, a2, a3)
もすんなり実装できた 文章を読むように書かれたプログラムが一番美しいと、昔し何かで読んだことがある。
まあ、英語圏限定ですけどねww C言語のポインタの複雑な文法も英語に変換するとそのまま読める じゃ、日本人は日本語で。
って間違った方向にいたのは秘密ですw 逆ポーランド記法は日本語的だな
しかもスタックが少なくて済むという >>694
in演算子が内部的に使う__contains__()っては用意されてる
でも変なこだわりでinに統一させるから拡張性がなく使いにくい仕様になってる
any( a in b for a in ['aaa', 'bbb', 'ccc'] )
ないわー 内包表記ではそうとしか書けないけど
>>701のコードきたらリジェクトするわ実際 内包表記自体、書く側が気持ちよくなるための側面が多分にないともいえないから多用しまくるとレビューでリジェクトされまくりそう googleのコーディング規約だと、内包表記に制御文を2つ使わなければOkだから、701のコードは通さざるを得ないな... 英語文法に近ければ使いやすいのは違うかなーと思う
sql文みたいにおかしい事になるだけだし atomでpython勉強してるんですけど
以下のところでエラーが出ます
txt = "aaab"
if txt == "aaa":
print("AAA")
else:
print("BBB")
---------------------
else:
^
SyntaxError: invalid syntax
コンソールで実行してもエラーでないんですけど、Hydrogenだとエラー出るんです
なんででしょうか? seleniumで取得したdriverオブジェクトをbeautifulsoupの第一引数に渡してbeautifulsoupオブジェクトを作りたいんだけどどうすれば? page_source渡すのじゃだめなん?
>>709 ある画像とよくにた画像を探したい
ImageHashのハミング距離でいけるかと思ったけど全然駄目だった
もう少し真面目に比較してくれるライブラリ無い? ハミング距離でいけそうと思えるような奴に真面目な話なんてできないだろう 一気に難しくなりそう
ImageHashなら1行で書けるのに 類似画像を探すディープでない方法ならカラーヒストグラムの一致度はいかが? いまは理屈わからなくても
簡単にクラウドで画像認識モデル生成できるので
使うだけならかんたん >>711
> ある画像とよくにた画像を探したい
どこから?
webからなら
tineye
google reverse image search
のAPI叩けばいい ある新規と思われる画像が、既にあるたくさんの画像と重複してないよね、という確認をしたい エロ画像を収集しようとして、肌色面積で判定するプログラムを書いたら、力士の画像が大量に集まった話を、思い出した。 エロ画像というか、AVのパッケージ画像を深層学習させて、
好みに合いそうなのをピックアップさせたら面白いだろうなとは思う
深層学習は汎用品を使うより、自分しか使わないようなのを各自で作る方が役立つ筈 >>720
それだけならDup File Eliminatorとかあるべ
車輪が云々 それはやっぱり、謎の理由で重複を消したい人のツールだな
ある画像があって、それが新規ならばIDを登録する
既存ならばどのIDと同じか調べてそこに追加する
そんな処理がしたい ワッチョイ c23b-58y4
ワッチョイ e23b-Gc8h
ちょっと前から居着いてるスライスがどうの、改行コードがどうのと
屁理屈こねくり回したいだけで別に解答求めてるわけじゃない
面倒くさいやつだから、相手にするだけ時間の無駄ね だって質問スレではないから
質問者を罵倒して気持ちよくなりたい人はどっか行って レベルアップできそうなネタがあったから良ければ一緒に考えてみないかい?
というスタンスなので簡単ではない
手持ちの知識だけで気楽に回答できてお礼を3行以上貰いたい人には居心地悪いだろう >>726
> Dup File Eliminator
MS-Windows用ではないか。
https://dupfileeliminator.softonic.jp/
くそWindows用車輪でどうしろと言うのだ。 >>726
あれ使うとわかるけど
全部を重複確認するから
だるいよ
片方のフォルダに新規が入るようなつくりならもう少し処理早くできるのに >>725
>深層学習は汎用品を使うより、自分しか使わないようなのを各自で作る方が役立つ筈
確かに個人特化型が作れたらメチャクチャ便利になるはず あとは相場予測だな
AIで安定して儲けを出してる人はいる
でも、売られてるツールでは儲からない
儲かるツールは絶対世に出ない
自分で作れる人だけ得をする
それもAIが当たり前になってしまったら個人では大手に太刀打ちできなくなる
まだ勘を頼りにやってる人が食い物として一定数いる今だけがチャンス PandasのDataFrameのpct_changeで取得した差分を別のDataFrameに適用することはできないでしょうか。
やりたいことは異なる基準を持つデータを全て100を基準としたデータに変換したいです。
変化率を順々に適用していくやり方があれば教えていただきたいです。 そいつは、>1 のテンプレをしょっちゅう改変している、テンプレ改変荒らし。
基本的に、ソースコードを書かない香具師は荒らし
「Ruby, Rails, クソチョン」などを、NGワード登録推奨とか、
自分が有利なように、いつもテンプレを改変する
荒らしがスレ主として、居座っているので、
まともな人がスレ立てして、テンプレも元に戻した方がよい
荒らしは必ず、短文で2回以上書き込む。
必ず、複数人がいるように見せかける 新3点チャージ投資法2021の有効性検証(システムトレード)
https://nehori.com/nikki/2021/04/15/post-28658/
株式相場なら、明地文男の3点チャージ投資法による底値買いで、勝率98% とかでしょ?
使う指標も、乖離率・ボリューム・レシオ(VR)・相対力指数(RSI)の3つだけ トレードシステムはいいんだけど
どこからデータとってくるんだ?
あんまり連続でとったら問題あるんだろ? >>738
有利も何もそれらNGワード入れないとスレ乗っ取るじゃねーか >>738みたいな奴ってまともな社会生活送れてんのかな スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA tkinter使ってるのですが
ボタンとかラベルとかのIDみたいの取得できないのですか?
C#だと自分でlabel1 とかlabel2とかつけられて
label2= でテキストとかラベルを指定して変えられると思うのですが
tkinterだとその指定があるように見えないのですが >>749
そんなエセ質問じゃ賑やかしにもならない
変数名の付け方が分からんって言ってんのか? WinFormsの話だったら
Control.Nameプロパティで設定した名前をキーに, Controls["hoge"]でコントロールにアクセスすることを言ってると思う
https://dobon.net/vb/dotnet/control/findcontrolbyname.html
tkinterで相当の手段が提供されてるかは知らないけど, 仮に用意されてなかったとしても
Controlsってほとんど単なるDictionaryだから, 自分でdictに入れれば十分でしょ interfaceをinterとは略さんやろ
そもそも、どんなモジュールでもそれはinterfaceなんだし そんなこと言われても、英語版Wikipediaには
The name Tkinter comes from Tk interface.
って書かれてるし、オブジェクト指向とかのインタフェースじゃなくてUIのインタフェースでしょ。
どんだけ頭硬いんだ うちのオトンはUWF インターのInterや言うてたわ 元からあるC言語で書かれたTkをそのまま使って、それをpythonに繋ぐ部分
という意味のinterfaceか
Tkに慣れてる人は抵抗なく入れるかもしれないけど、
pythonで簡単にGUIを実現したい、という人には新しく作った何かの方が楽なのでは TKinterならPySimpleGUIで使えばいいんじゃない? なんも考えずに再帰呼び出しで書いたらいきなり動いたけど、
どういう仕組みが働いてちゃんと動いてるんだろう >>774
tailcallならスタックにも積まれないよ >>772
SCEDマシンをpythonで書いてみたら? 再帰呼び出しであることをインタプリタが判断して、
関数の呼び方を変えてる、ということだよね
自分で自分を呼ぶなら判断は楽だろうけど、
下請け関数が間に入っても動くんだろうか >>>772
ちょっと意味が分からないんだが
普通の関数が動くのに、再帰だと動かない可能性があったってこと?オーバーフローするほど繰り返し呼び出した場合のことを言ってる? >>777
> 再帰呼び出しであることをインタプリタが判断して、
> 関数の呼び方を変えてる、ということだよね
違う >>775
pythonってtail call optimizationやってくれるの? seleniumでpostなformの中にあるaタグをクリックしてページ推移したいけどできない
どうすればいいんだろう seleniumでformに入れた値がおかしかった時にjsのalertを検知して例外をraiseさせる方法を調べていたら偶然if driver.current_url: passで発生することを発見した
何故か分かる人いる? djangoのsqliteDBって外部ツールで覗いたり値の変更って出来ないかな? SQLite3じゃないの?
dbファイルを覗けばみれるでしょ >>787
ありがとうございます!
やってみます! 小規模って言い方も抽象的すぎるけど
検索したいならDB使えばいい
あとDB使ったことないんだろうけど疑問の解消には使ってみるのが一番いいよ 掲示板システムをファイルとDBの二通り作って見たことがあるが
結果ファイルで作る方が作りが面倒で手直しするのも大変だった ファイル操作による排他制御が簡単と言えるスキルある人にワタシハナリタイ 真っ先に浮かぶメリットは排他制御とソートアルゴリズムの再発明しなくて良いことだろうな
まーなれてくると色々あるから自分で調べてみたほうがいい 排他が必要になると思えないし、ソートはDBでなくても既にあるし
ツールが自分で使うデータをどうやって持つかだけの違いなら変わらないような
ユーザからのクエリに対して検索して答えを返す、みたいなのが作りたいならDBだろうけど そりゃー思えるか思えないかは要件と君のスキル次第だからな
小規模でも排他の必要な分野はいくらでもあるし、大規模でもいらない案件も当然ある
行列レベルの排他でなくても、トランザクションとかかなり面倒な処理が楽にできる
自分で調べてみることをおすすめしてるんだけどここで断片的な知識を仕入れたいの? やり方は色々あるわけで、その中から自分が簡単でやり慣れていると考える方法を選択すれば良いと思う
一人で使うシステムなら、排他は不要だろう
いろんなソート方法を選択できるようにしたいとなると、DBの方が簡単そうに思える 一人が使うシステムにも普通に排他処理が必要なものはあるぞ
排他の要不要はそんな観点で判断できない
何度も言うけど、ちゃんと体系的に自分で学んだほうがいい
まー思うのは勝手だけど^^; 結局、決め手になるのは規模で、
DBを使わない方が簡単に実装できても、データ量が大規模になると、
検索やらソートやらに時間がかかるのでDBの方が高速になる
でも個人でそんなデータは普通扱わないから、わざわざDBを使う分面倒なだけ
という思い込みがあるので、何か他にメリットがあるなら知りたいけど、
自分で調べたら(・∀・)ニヤニヤの一点張りで特に説明はできなさそう あー知識をつまみ食いしたい人か^^;
簡単に想像できる範囲だと、マルチスレッドプログラムと組み合わせたり、定時処理を複数走らせたりすること考えてみるといいよ
DB勉強するならRDBから入るのがいいかなぁ。NoSQLから入ると色々理解できなくなる なんかよく判らん絡み方してくるな
知らんなら知らんでいいよ >個人でDB使って便利なことってどんなのがある?
こういうのってアンケートか大喜利かと思ったが >>806
使い方を覚える手間はあるけどデータアクセス部分を丸投げできるんだから規模小さくても楽だと思うんだが つまみ食いもできないのか^^;
自分のPCで.sqliteがどれだけ使われてるか調べてみるといい >>811
小規模だと Excel の方が便利まであるからなぁ。
RDBだとテーブル定義からやらんとだし、まぁめんどくさいよね。 そうそう、それそれ
フリーソフトとか使うと、結構SQLiteを使ってるのがある
内部データの保存に使ってるんだろうけど、DB使うようなことか? と感じてる
pythonだったらpickleで済むのでは? うちだとexcelですらなくて、ただのプレーンテキスト+エディタで管理してるな
50万行くらいあっても瞬時に検索してくれる 素でデータだけいれとくってなくて式やらはいるから万行超えデータはエクセルでやりたくないよね
とはいえエクセルのお手軽uiはありがたいけどね
あとは話しの出だしに戻ってdjangoで例えばあの管理機能をDB無しでってのはやりたくない csv+pandaとSQLiteって速度差結構あるんじゃないの? プレーンテキストだと検索は楽かも知れないが、
更新したいときはどうするの? sqliteなら別途DBサーバー建てる必要ないんだしそんな大仰に考えなくていいのよ >>813
Excelが便利だと思うならExcelでいいと思うよ
>>814
pickleと比較するレベルならpickleでいいと思うよ ブラウザなど、多くのアプリがsqlite3 を内蔵している
データベースの方が、検索したい項目にインデックスを貼れば、検索性能が良い。
B+tree Python×Excelで業務自動化!
ブッwwww seleniumでfind_element_by関数排除ってマジかよ
迷走しだすとオワコンの合図だけど大丈夫か find_element(by=‘xxx’)に統一されると何とか >>831、>>833
やりたい事は分からんでもないけど
互換性の面で考えるとエライ事になりそうだな どうせ _compat とか付いた互換性維持のためのパッケージが作られる seleniumのプログラム初めて作ったけど、ネット情報と感でなんとかなるなw
「XPATHってどうやって探すんだよ」ってブラウザをいじり回してたなw
youtubeを自動で操作するプログラムを作った。 何をするにもネット情報が頼り
毎回ぐぐるのも手間だから自分用にまとめた情報を参照するけど、
見ないで書けない以上ネット情報に頼ってるのと同じ
そら何でも細かく具体的に書けば読めるコードになるけど、覚えるのは無理 例えば、except XXX: に何を書くかも、
とりあえずエラー出してみてコピペする方式でしか作れない
そんなもん正確に記憶してる訳がない 別にググってでも書けるならいいじゃない
ちゃんとググった後に公式ドキュメント見て裏付け取る事さえ忘れなければだけど
それに、自分の知識にある情報がいつまでも正しいとは限らないし ぐぐれない環境で親切なエディタも無しに書けと言われても書けない
レガシーな言語はそれでも書けた
かなり慣れてもマニュアルみながらガンダム操縦しないといけない kivy2.0、普通に実行はできるんだけど
ビルドが出来ないの困ったもんだ tkinter, ウィジェットの上だけにマージンとかできればけっこうデザインできるんだが
padyとか両方に効いちゃう >>838
XPath で作らない方がよい。
XPathは要素の順番で指定するから、順番が変わるとバグる
CSS Selector の方が、バグりにくい
E2E テストでは、Ruby のSelenium Webdriver, Capybara, Nokogiri、
JavaScript のCypress もある idとかないケースばかりで結局cssセレクターでも順番変わったらおかしくなるコードばかり書いてる xpathは属性での検索もできるしCSSセレクタの機能は包含していると思うが。 未だに参照の仕様が分からない...
djangoでfor分を使ってmodelオブジェクトを作っていってそれを配列に入れていって、最後にDBに一括保存したいんだけど参照渡しならfor回す度に毎回オブジェクト上書きされるの? 参照はwindowsのショートカットだと思えばいい
ショートカット経由でファイルを書き換えると
元のファイルの中身も書き換えられる >>849
array = []
for x in iterator:
__m = Model(x)
__array.append(m)
↑mは上書きされるけど参照関係ある? もし「参照渡し」だったら __m を上書きすると
append された後の「__mの参照」も上書きされるわけだから……
pythonのは いわゆる「参照の値渡し」なので大丈夫って言ってやるのが楽のよーな気がする 分かったかもしれん
インスタンス化する時には暗黙的にnewをする事を思い出した
つまり>>851の場合はmは全部実態は別になるんだね?
そうじゃないと極端に使いにくすぎるもんな 慣例的に参照渡しという表現は「変数の参照」を渡す事を言う
通常変数が静的領域やスタックに実体を持つ値型の言語では。
しかしPython変数は全て参照型(C言語的にはヒープへのポインタ)
そしてPythonにC++の&やC#のrefに相当する参照渡しはないので
参照を格納している変数の内容を呼び出し先から変更は出来ない
ただし同じ参照(ポンイタ値)を経由する実体の操作は共有される
C# Doc曰く「参照渡しで渡すという概念と参照型の概念とを混同しないでください
>>853 Exactly. C++の&だって呼び出し側が書き換えられているように見えるのはポインタと同じようにアドレス値を渡してるからであって、"参照の値渡し"と変わらんのでは?
値渡しでない参照が使える言語なんてあるの? >>855
本質はそうだけども、Pythonに変数の参照を渡す術がない
元々が参照型(ポインタ)、「変数」ではなく「実体」への参照が渡る
デリファレンスもなく代入は常に参照の割り当てで、元変数も書き換えない
C++やC#で言う参照渡しは変数への参照が与えられ、元変数自体を変更可能
元々が参照型やポインタの場合にはポインタのポインタ状態になる python で参照渡しにするなら、配列で渡すしかないって事だよね。 Cを始めたばかりの頃ポインタめんどくせえと思ったけど明示的だし楽だったんだなあ デリファレンスかったるいからC++の参照がええわ
とゆうかいちいち書くのメンドイから参照ができたんでしょ
知らんけど 言語仕様としての参照とで混同してる
指してるものはいっしょやけど 昔はリターン値が一つしか返せなかったけど、今は複数個返せるから参照渡しもあまり意味がないんだろ。
まあ、どデカい配列とかを渡すときは、参照渡しは意味あるだろうけど。 私もここに常駐して皆さんぐらいのレベルに早くなりたいです。 作りたいものがあるとすぐだよ
過去に別の言語で作ったものの移植でもいい ここ初心者向けスレじゃないの?
最近見始めたから知らんけど ぐぐってコピペするとか、作っておいた虎の巻を参照するとか、
ツールが候補を教えてくれるとか、そういう作り方をするのが常道なので、
記憶だけで答える試験は制約が大きい
持ち込み可(google含む)なら意味ある そうなんだよね
記憶だけで答える試験は年寄りには不利だ
試験問題難しくて良いから資料持ち込みはありだよな まあ、自費で受けるようなもんじゃないから何でもいい python自体よりファイルのパスの指定方法とかライブラリのデータはどこへ格納してどうやって指定するの?とかpythonのバージョン合わせるのどうやるのとかpipやenvってどういう事?とか色々そっちの方が難しい Python以前にターミナルをちゃんと使えている人どれだけいるのって感じはする。
pythonを教え込まれた学生は脳死でAnaconda prompt開いてpython filepathすることしかできん。
カレントディレクトリ、相対パス、基本コマンドを全く知らないのに実行してるのはむしろ恐怖。
データサイエンスやりたいのはわかるけどpowershell教えたほうが生産的なんじゃないか >>879
プリインストールで非プログラマでも使えるツールの中ではめちゃくちゃ使えると思うけどなぁ
CLIめちゃくちゃ大事なのに、Pythonの入門書でも何でも説明されている方が珍しいし、されていてもイケてないコマンドプロンプトだったりで頭抱える 形式的にはCLIだけど、ガチでコマンドタイプしてpython使う奴はいない
別の手段で同じことを実現する
そんな古くて面倒なことはみんな忘れるのがpython windowsじゃ無くてlinuxから入るべきだなw PSみたいなゴミ導入するぐらいなら、最初からbash使わせろやって話だな >>881
その物言いだとbase環境だけで使ってる感じだなw 要するに初心者と意識低い系はちゃんとmacを使えって事だな macの人はツールを使って何かを作る専門で、
仕組み自体を作ったりはしないのでは 公式サイトの1/14のニュースにはM1 Macで開発したとあるけどな
MacBookのトラックパッドが満足に動けばLinuxでもいいんだけどね
どうせ動作確認、CIはコンテナでするから端末はLinuxじゃなくても困らない コマンドライン分からん思ってたがガラケーのメニュー入れ替えたり、iPhone3GS脱獄したりネット見ながら色々やってる間に知らないうちに触ってたんだな
無知とは恐ろしい 俺も無知だからおk
それよりクラスごとtryで囲っていい?エラー吐いて終わったときにある処理をしたいんだが そのエラーとやら置きそうなとこだけtryで囲むのが普通
まぁでもいいんじゃない?クラスごとの意味が分かんないけど
やってみれば? class定義をtryで囲むって事?
それだと定義時のエラーを捕まえるだけでインスタンスのエラーは捕まえられないよ やりたいのはseleniumのdriverを、どんな例外が発生した場合でもclose()すること
ググったらwith使うパターンが良さそうかなとも思ったけど@contextmanagerを使うパターンもあるみたいだけどどっちもよく分からない
とりあえずwithを使えるのは内部に__enter__と__exit__を持つクラスとメソッド?なのは分かった
俺が作ったモジュールではdriverを引数としていくつかのメソッドに渡したりreturnしたりしてるけど機能するんだろうか
試してみようかな seleniumのインスタンスが対象メソッド外からでもアクセスできるなら
>>894 のいうとおりデコレータで表現すればコードのスマートさが保てる withもデコれーたも分かってないなら
一連のdriver.〜を素直にtry catchしよう 今流れでクロージャについて調べてる
最終的にはwith使う事になりそう close()じゃなくてquit()ならcontext manager実装されてるよ
with webdriver.Chrome() as driver:
__do_something_with(driver) >>900
これdriverをreturnする関数作って試してるけどurllib3.exeptions.MaxRetryError出て上手く行かんわ
ちょっと調べないと >>852
参照はポインタを抽象化した概念で値はない >>861
関数の副作用として破壊的操作が必要な時
コピーではなく参照による引数渡しは必須の機能だ
なければ純粋関数型言語と同じになる
今どきのスクリプト言語は基本型以外ほぼすべて参照による引数渡し >>901
これ結局djangoのBaseCommand継承クラスのhandleメソッド内でやったら出来た
原因不明
あとkeyboardinturreptでは機能しないんだな >>904
django?
テストコードでselenium使ってるならsetupとteardownで良くない? スクレイピングって結局、htmlを正規表現で解析した方が正確で速かったりする
自由に書けすぎるものを型にはめても絶対溢れる 画面遷移でリクエスト構築するの面倒だしすぐbot判定されそう なんで急にスクレイピングの話になったんだ?
大丈夫か? args = sys.argv
id = args[1]
【エラー】
IndexError: list index out of range
★”id”には何が入るのですか、どなたか教えてくれませんか。 args = sys.argv[1:]
for arg in args:
print(arg)
こんな風にすると安全 と思ったけど長さ0のリストにどんなスライスかけても同じもの返すのか idに入るのはidなんじゃないか?
中身を聞かれてもそのスクリプトがどんな用途なのか知らないと答えようがない argcは無いんだからargvという名前は変だよな って言うか、エラーが出てる時点で何も入らないんじゃねえの? 上のやつのことなら、なにも入ってない
なんかいれる前に、配列外へアクセスしたことによるエラーでプログラムが落ちた 直後に
dir(id)
すればわかるが
idはそもそも組み込み関数なので変数名に利用すべきじゃない argument variableじゃなかったん? id関数って動くコードで使うこと殆んどないし別に…
ただidって言葉が自然言語として意味がバカ広くて
あとから読んだ時謎の変数に見えてくるのは容易に想像できるから
そういう意味ではおすすめできない 未だに>>910分かってるやつ
俺と>>912しかいないの草 >>926
第1引数必須のプログラムなら元コードがシンプルで素直
ヘルプだしたりフォールバックするなら例外補足したらいいんだし
>>912 は可変長を考慮してるんだと思うがさらに解析が必要だし
なら最初からargparse/getoptつかえばってなる 引数で指定するものなんて処理対象だけだし
複数あればずらずら並べるだけ
設定と処理対象を混ぜる方式は面倒なだけなので、
そっちは別で指定して configparser で読み込む >>927
俺じゃなくて>>910に言えよ
>>921も回答になってないけどw ser = serial.Serial('COM4', 9600, timeout=1)
【エラー】
could not open port 'COM4': PermissionError(13, 'アクセスが拒否されました。', None, 5)
どなたかおしえていただけませんか... COMポート番号が合ってるか確認する
管理者権限で実行してみる
他にシリアル使ってるプログラムが無いか確認する >>931
管理者権限で実行したところ同じエラーが出ました。
また、COMポート番号はデバイスマネージャーからポートのところを見たらそれしかなかったので間違っていないと思います。
他にシリアルを使っているプログラムがあるかは、デバイスマネージャーのポートの詳細
設定のポートを選ぶ部分で使用中になっていなかったので大丈夫かなと思ったんですけどそれじゃ不十分だったりするんでしょうか... >デバイスマネージャーのポートの詳細設定のポートを選ぶ部分で使用中になっていなかった
これは現在使用中って意味じゃない(現に自分にPCには存在しないポートも(使用中)と出る)
閉じていいアプリは全部落としてやってみそ VScode以外落としてみたんですけどダメでした...泣 インタラクティブモードでやってる?
ちょっと試したけど既にポート開いてるなら2回目は PermissionErrorで失敗するみたい
serの中身がSerial<id=0x・・・・, open=True>みたくなってない? インタラクティブモードでやってなかったので今やってみたらこんな風に出ました
Serial<id=0x20237cc3880, open=True>(port='COM4', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False) あごめん、言い方悪かった
別にインタラクティブモードじゃなくてもスクリプトでもいいけど
すでに開いてるポートを開こうとするとエラーになるんで
ser.close()せずに再びser=serial.Serial(..)してんじゃない?
>>> import serial
>>> ser=serial.Serial('COM8')
>>> ser
Serial<id=0x2992c530940, open=True>(略
>>> ser=serial.Serial('COM8')
略
serial.serialutil.SerialException: could not open port 'COM8': PermissionError(13, 'アクセスが拒否されました。', None, 5)
>>> ser.close()
>>> ser
Serial<id=0x2992c530940, open=False>(略
>>> ser=serial.Serial('COM8')
>>> ser
Serial<id=0x2992c043970, open=True>(略
>>> なるほど!
ありがとうございます。2つのファイルを実行して、どちらもserを使うので2回開こうとしてました!どこかで閉じるようにしてみます >args = sys.argv
>id = args[1]
>【エラー】
>IndexError: list index out of range
>>910の追加項目
私の機械:windows10 Python 3.9
目的:SQLiteへデータを登録しようとするPG作成中です。
”id"を目的のサンプルPGの一番最初の部分です。
どなたか教えてくれませんか。 シリアルポートなんて、いまどき使うんだ。
RS232か、昔はよく使ってたなw >>940
sys.argv[0] が プログラム名
sys.argv[1]が 第一引数。
プログラム起動時に引数を指定してないんじゃねえの?
prog id の所を prog で起動してるとか。 マイコン工作するとUSBで接続して仮想シリアルポートにして通信するのが楽 >>940
せっかく>>911が正解を書いてくれてるのに無視?
この程度が理解できないならあきらめた方がいい いや、判らん状態で>>911読んでも判らんだろこの書き方では
サンプルや動作結果の一つでも無いと
そもそも[0]が本体の名前になるというのが、悪しき伝統な気がする
直感的には1つ目の引数がargv[0]であるべき
でも自分が誰か知りたいとかフルパスを知りたいとかの用途にも応える為に、
[0]にプログラム名を割り込ませた
そのせいで、大抵の場合は先頭を除去する処理が増えた >>945
ターミナルに打った文字列まんまでわかりやすいと思ってたんだがそうでもないのか コマンドラインそのものは、argumentではないんだよな
function(x)があって、functionの引数はと聞かれてfunction, xと答えるようなもの 正解は>>918だろ
>>911は教え方を知らないアホ 第1文の
> Pythonスクリプトに渡されたコマンドライン引数のリスト
だけ読めば、[0]が1つ目の引数だと解釈して当然
第2文の
> argv[0] はスクリプトの名前となりますが
これがいきなり第1文と矛盾していて、そのことに配慮していないのが問題 プログラミング言語を初めさわり始めたならあるあるの話題かもしれんね
cやら他やってからならコイツもかよって思うだろうけど 遠い昔の記憶
ARGC, ARGVの仕様を初めて知った時、何だそれ変なのって絶対思った筈なんだよな
そこからもう変えられない
少なくとも、argvの文字列を使う限りは同じにしないと余計に混乱する
そういうものだとして飲み込んでもらうしかない 知らんけどとりあえずidを引数に期待しているんだからこれを叩いているプログラムやら手入力するidが存在するはずなんで作った人に聞けとしか言えないんだよな CLIはDOS/Windowsが特殊だよな
Unix系ならviとviewとかを考えれば、argv[0]が本体を指しているのが当然と思うし > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
くそチョンw
くそチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
在日は強姦を繰り返す犯罪者!
皆殺しにすべし! 日本人ではないんだろうなとは思う
あとこのレベルでDBに接続しちゃいかん
まず変数名を_idにするところからやり直し やり直しというより、諦めさせる方が本人のためになる Python では、
sys.argv[0] が プログラム名
sys.argv[1]が 第一引数
一方、Ruby では、実行するスクリプトファイル名は、ARGV じゃなく、$0 に入る
ruby script.rb 引数1 引数2
ARGV[ 0 ]・[ 1 ] は引数
script.rbの内容が、以下の時、
p $0, ARGV[ 0 ], ARGV[ 1 ]
ruby script.rb 123 abc
と入力すると、
"script.rb"
"123"
"abc" 912>にすると何も表示されませんでした
911>読んでみたのですが意味が分かりませんでした、すみません。
924>id関数ではなく文章の中にある変数見たいです?
927>意味はよく分らずargparse/getopt今後使ってみます。
942>sys.argv[0] が プログラム名、sys.argv[1]が 第一引数見たい?。
945>そもそも[0]が本体の名前になるというのが、悪しき伝統な気がする
直感的には1つ目の引数がargv[0]であるべき
でも自分が誰か知りたいとかフルパスを知りたいとかの用途にも応える為に、
[0]にプログラム名を割り込ませた
そのせいで、大抵の場合は先頭を除去する処理が増えた
948>argumentではないんだよな
950>第1文の> Pythonスクリプトに渡されたコマンドライン引数のリスト
だけ読めば、[0]が1つ目の引数だと解釈して当然
第2文の
> argv[0] はスクリプトの名前となりますが
これがいきなり第1文と矛盾していて、そのことに配慮していないのが問題
953>ARGC, ARGVの仕様を初めて知った時、何だそれ変なのって絶対思った筈なんだよな
そこからもう変えられない
少なくとも、argvの文字列を使う限りは同じにしないと余計に混乱する
そういうものだとして飲み込んでもらうしかない
960>知らんけどとりあえずidを引数に期待しているんだからこれを叩いているプログラムやら手入力するidが存在するはずなんで作った人に聞けとしか言えないんだよな
967>Python では、
sys.argv[0] が プログラム名
sys.argv[1]が 第一引数
一方、Ruby では、実行するスクリプトファイル名は、ARGV じゃなく、$0 に入る
ruby script.rb 引数1 引数2、ARGV[ 0 ]・[ 1 ] は引数script.rbの内容が、
以下の時、p $0, ARGV[ 0 ], ARGV[ 1 ]ruby script.rb 123 abc
と入力すると、
お宅の説明が一番わかりやすかったです、皆さんありがとうございます。 アンカーの付け方も知らないとかマジで向いてないから辞めた方が良い 今ちょうどクラスオブジェクトの、
object['item']
と
object.item
の違いが酔って判らなくなったところ requestを使ってbingの画像検索からセーフサーチを無効にして画像を拾いたんですが、async?q=おっぱい&safeSearch=offで無効にできません><
ブラウザ上でも試したのですが、edgeだけは無効にして検索できます
safeSearch=offの他に何が必要なのか分かる方教えください >>973
1. www.bing.com (Cookie発行)
2. www.bing.com/settings.aspx?pref_sbmt=1&adlt_set=off&adlt_confirm=1&GUID=MUID (MUIDはCookie MUIDの値)
3. www.bing.com/images/search?q=検索文字列
いつ仕様変わるかわからんからSelenium等で操作する方が堅い >>975
レスありがとうございます!
無効にして画像収集できました
Pythonの話題からズレちゃうんですが、settings.aspxにクエリを渡すとかってどうやって調べるんですか? djangoでmodelを使ってbulk_create()でDBに保存したいがリレーションが分からない
カラムが一つだけでフォーリンキーを持たないモデルaがあってモデルbとcはaをフォーリンキーで参照している
けどcはbも参照している
これだと例えばcは二重にaを参照することになるんじゃないの?
こんがらがってきた djangoの話でもないしましてやPythonの話でもない
リレーショナルデータベースの勉強しなさい youtubeにpython、C、 X86 Assm で同時にプログラムを書き始めてどれが一番早く書けるか、実行はどれが一番早いか。
を比べる動画があった。
まあ、当然 python >= C >> assm ソース制作時間。
assm >= C >>>> python 実行時間。
だけどねw
X86 assmでプログラムが書けるのがカッコいいよね。 >>979
カスみたいな答えいいんで真面目に答えてください >>978
cのレコードとcが参照してるbのレコードが
必ず同じaのレコードを参照する関係の場合は非正規形になる
ビジネスルールの観点と意図的に非正規化するかどうかという技術的な観点から設計判断が必要 自分が訳わからずリレーション張ったなら間違い
誰かが張ったのをみたならオプションなどみてそのほかの意味を考える pythonは計算が遅いけど、numpyを使えば高速化できる
そして、numpyが要るような高度な計算はアセンブラで書くのは不可能で、
コーディングはC言語よりも速く、実行速度がC言語と同じなら、
それはもうpython一択なのでは ____
/ \
/ ⌒ ⌒ \ 何言ってんだこいつ
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_ >>978
まずはリレーションの正しい意味を説明している本を探して勉強する。ネタとかじゃなくて。 Repl.itは、リンターやデバッガーからサードパーティのパッケージ、ホスティング、デプロイまで、
すべてを備えた、ブラウザー内の完全な共同クラウド開発環境です
以下のようなテンプレートがあります
React, Vue.js, Django, Node.js / Express
個人向けブログサイト、ポートフォリオサイト
A-FrameによるVRプロジェクト
p5.js / Phaser.js用のゲーム開発
Three.jsによる3Dコンテンツの作成
WebGL なら、Three.jsだろ? このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 9時間 24分 14秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。