勉強してて、5ちゃんの名前欄に!omikujiって入れたら結果が出てくるけどPython使ってるのかーってすげー関心したよ
vscodeとtkinterのナヤミデス class myLabel(tk.Label): __def __init__(self, parent, *agrs, **kwargs): ____super().__init__(parent, *a, **kw) tkinterでカスタムウィジェット作るときこうすると思うんですが これだとmyLabel呼び出し時に親のパラメータの一覧が表示されません l = tk.Label() だと引数ズラズラーと確認できるのに myl = myLabel() だとスン…というかんじ myl = myLabel( と書いたところで、master, cnf, bg... が表示されるよう書く方法はないですか?
class myLabel(tk.Label): __def __init__(self, parent, *agrs, **kwargs): ____super().__init__(parent, *args, **kwargs)
>>16 手元だとmyLabelでもスラズラでるから言語サーバかな Pylanceになってるか確認してみて 下でも上の表示がいいんす >>17 この関数の引数、 可変長引数のあとに連想配列では値がわたらないだろう 初心者です。 seleniumでGoogleChromeを起動させたいのですが、 コードを実行しても一瞬起動するだけですぐに落ちてしまいます。 chrome,chromedriverともに105.0.5195.127です。 time.sleep()を使えば一応閉じることはありません。 ネットで調べたのですがchromeとchromedriverのバージョンを一致させれば解決できるらしいのですができなかったのでわかる人いたら教えてください。 from selenium import webdriver import chromedriver_binary driver = webdriver.Chrome() import time driver.get('https://www.google.com/' ) chrome,chromedriverともに105.0.5195.127と書いてるのにバージョンがあってないとはいかに
繰り返し使うプログラムならドライバー自動で取ってきてくれる webdriver-manager使った方がいいよ
webdriver-managerで上手くいきました。 ありがとうございます。
漏れは、Ruby でSelenium Webdriver を使っているけど、 Chrome の自動更新で、105.0.5195.127 になって、急に動かなくなった ChromeDriver 105.0.5195.52 をダウンロードしたら、正常に動いた
abspath → absolute path __init__ → initialization pardir → parent directory curdir → current directory getcwd → get current directory chdir → change directory こういうの、英語を略してるのだけど思うけど、元の略されてない英語のスペルを調べられるサイトとかありませんか? 毎回ググって出てきた検索結果ページで「abspath (absolute path)」みたいになってるのを探してるのですが、時間が掛かってしまいます
cwd は current working directory
>>32 抜けてました訂正助かります 略称の元を調べる方法で、地道にググる以外の方法とかも分かりませんか? >>33 python.org/ の検索窓にgetcwd, chdir, cwd, ch 色々入れてみても、ググった時と一緒で地道に複数タブでページ開いて探すのと同じでした >>35 わからないときに調べるのではなくて、一括でリストみたいに知りたいということですか?そういうサイトは知らないです 知識がないのが問題だったら知識を得るか補助ツール使うしか無いんだよなあ google翻訳みたいにリアルタイムでオーバーレイで適当な情報出してくれるやつがあればいいんだけども
>>30 そういうサイトがあると便利だよな 是非作ってくれ sizes = list[(int, int),,,] からmax_widthとmax_heightを取りたいんだけど numpyなどの外部ライブラリなしだったら max_width = [i[0] for i in sizes] max_height = [i[1] for i in sizes] が速くて見やすいですか? もったいないからループ一回で両方ゲットできたらいいんだけど、天の声がそれは遅いというんです
>>36 pythonの広辞苑みたいなのあるなら知りたいです >>37 そんな感じです。イメージとしてはこんな感じ >>39 もうすでに誰かしら作ってそうな気がしたのですけど意外にないんですね なぐり書きしたので案の定スペルミスしてる IME辞書みたいに誰かしら作って配布してたりしないのかな あったら本当に便利だと思う
>>40 max_width = max(sizes) max_height = max(sizes, key =lambda x:x[1])[1] いまいちどういうものを欲してるのピンと着てないけど、存在しないという事はそういうことだろ もしくは、誰もが思いつかなかった画期的なものの可能性はあるので、作れば人気でるかもしれないよ
エディタの補完機能とか知らないわけじゃないですよね
>>30 python が発展してきた歴史を知るといい 30について回答くれた方々ありがとうございます。コメントで教えてもらったサイト見てみます ググって意味を調べる時間の短縮目的は、そもそも我儘な要望だったかもしれません
望みの実行結果にはなるのですが、パスがないエラーを吐いてしまいます 本来は、os.mkdir(“パス名”)、os.makedirs(“パス名”)、のようにパス名を挿れるとのことですが for文の変数を引数に渡したい場合はどう記述すればエラーを吐かないのでしょうか? 今朝始めたばっかなので用語の使い方間違ってるかもしれません >>52 エラーメッセージにあるように空文字が渡されてるのがエラーの原因 split(‘\n’)した結果のfolder_listの中身を確認すると分かると思う でもってsplit()じゃなくsplitlines()を使うといい >>53 おかげで解決しましたありがとうございます テキストファイルに何もない改行がありました 問題とは関係ないけれど パスを操作する時はpathlibのほうがいいよ
正規表現で16進数を表すのに、いちいち[0-9a-fA-F]と書くのが面倒 もっとスマートに書けないものか
case-insensitiveで [\da-f]
pathlibというのを使って>>52 と同じことをやってみたのですが、書き方が間違ってる気がしてならないので指摘して欲しいです line14-15は何で上手くいかないのかも教えてほしいです まず、12行目のmkdirで例外発生してない? temporaryなんてらフォルダはchdirしてるからすでに存在してるんでしょう?
os関連の処理は互換性とか捨てて、subprocessでやるのが楽でしかも安定してる
繰り返される任意の文字列を1回の繰り返しに直す方法ありませんか? "abcdabcdabcdefg"→"abcdefg"(abcdの繰り返し) "abababc"→"abc"(abの繰り返し) "aabbaabbc"→"aabbc"(aabbの繰り返し) パターンの長さはとりあえず固定でいいので(例えば4でabcdとaabbはマッチできる)一気に置換する方法ないでしょうか
>>60 存在してます。path.rename()書いてない時は、同名のフォルダが作られて「すでに存在してる~」みたいなエラーを吐いてました そもそもpathlib使って>>52 をやりたい場合は、osを使う必要がなかったりもするのでしょうか? >>64 参考に直して見たら無事にできました。ありがとうございます。 変数名とか色々、短く略して書いた方が良いのでしょうか? 入力時間的には大差ないので、見返した時に分かりやすいようにしてるのですが これは初心者だからで、経験者から見ると見苦しいとか、むしろ略されてた方が見やすいとかありますか?
>>62 質問の意味がよくわからん "abcdabcdefcdefg"の場合どうしたいの >>67 普通に処理したいだけです >>68 "abcdabcdefcdefg"なら"(abcdabcd)efcdefg"→"abcdefcdefg"だと思います あ、cdefcdefが繰り返されていたんですね… 最終的に人がチェックする工程があるので、先にマッチした方優先とかで大丈夫です
'abcabcdabcabcdefg' だったら?
長さ4固定でいいなら、正規表現あたりで >>> import re >>> re.sub(r'(....)\1+', r'\1', "abcdabcdabcdefg") 'abcdefg' >>> re.sub(r'(....)\1+', r'\1', "aabbaabbc") 'aabbc'
>>73 >>74 ありがとうございます! 文中に含まれてるものにも対処したいので73を長さ変えながら複数回適用で使いたいと思います x = [i for i in range(10)] idxs = [start, end] # 0 <= start <= end <= max(x)かつend +=1 xが上記の場合 最小はidxs = [0, 1] 最大は idxs = [0, 11] です。このとき for i in idxs: __x[i] だと最後が11のときindexErrorになるんだけど try exceptでcontinueする以外にいい書き方ないですか if i == len(x): breakみたいなのとか _idxs[1] -= 1 for i in idxs: みたいなのは嫌です
>>84 これは完全に誤訳 翻訳元では、GitHub上の数多くのOSSにこの脆弱性が存在するからCopilot等がそれを学習して広がるかもしれないと言っているだけ 確かにtarを使うリポジトリではcopilot経由で広がる可能性があるけど、tarを使うリポジトリなんてリポジトリ検索してもそんなにないので実数としては眉唾 依存関係から侵入してくる方がよっぽど可能性が高い Copilotが批判されがちなので批判の文脈で喋ったほうが肯定的に聞いてもらえるだろうという余計な意図が入ってるのではと邪推してしまうね:)
>>81 が何を考えてるのか詳しく知りたいなωωω >>81 インデックスなら0~10の番号で管理すべきじゃないの endを取り出して使うときに+1すれば良いんじゃない スライシングと混同してるのかな >>90 外部入力でスライス範囲を受け取ってて(start, end) その値を使いまわしてインデックスアクセスしたいんだろう テーブル扱うGUIとかでままある 単にインデックスの範囲とスライスを混同してるだけだろ 外部からの入力なら値のチェックは必須だしその時に調整しとけばいいだけ
一昔前のseabornのカラーマップだか忘れたけど1から数えて最後の数字を入れるようなインデックス指定を偶に見かける [0, 10] → 0から9までと [1, 10] → そもそも0が存在せず1から10 この2つの書き方にそれぞれ名前ついてたりする?
>>93 前者は「半開区間」として [0,10) といった表記にするのをよく見る メモリマップとかで、 A: 0x0000 - 0x0fff B: 0x1000 - 0x1fff みたいに末尾をfffにせずに、末尾は1足して表記する、という約束にした方が使いやすい
そうすると最後は F: 0xf000 - 0x10000 と最後だけ2バイトでは表記しきれなくなるね
すみません、プログラミング初心者です、python構築について質問があります python3.10.7をインストールしたのですがコンドプロンプトで確認したらpython 3.9.12になっています もしかしたら以前DLしてたのかと思って探しても見つからないのですが こういうものなのでしょうか?
すみません、調べてみたらanacondaの方にpythonが入ってたみたいです
>>101 そんなに有名な事でしたか… 調べても出てこなかったので 君は悪くない、anacondaも悪くない anacondaを進める入門的な書籍やサイトが悪い
pipでバイナリを配布できなかった時代ならまだしも、今そんな時代じゃないしな~
何かのツールをインストールするとpythonも一緒にインストールされるのはよくある python2だったりもする 大抵は、自分用のバイナリを自分で使うだけなので迷惑はかけないけど、 行儀の悪い奴もいる
未だにpython事始めで検索すると 無責任な入門サイトの「anaconda入れとけ☆」 ばっかり いやべつにいいんだけどさあanacondaでも。オールインワンで便利なのも分かるけど
anacondaでもpipでも両方使えばいいジャマイカ
condaのコマンドで新しい環境作れるようにしたらスタンドアロンのpythonが外れた記憶ある
俺も初心者の頃はアナコンダ入れてた。 けど後から無駄も多く必要ないことがわかったのでアンインストールした。 pythonとVSCodeあれば事足りる。
a=True b=True aかつbがTrue、それ以外の全て の条件って if not (a and b): でよかったっけ・・?
>>111 translate使えばforすらいらない >>111 その記事が最適かどうかは別問題として、まず0x5cをちゃんとエスケープして、あなたの考えを動くコードとして完成させよう その上で、記事のコードと分かりやすさや速度を気の済むまで比較してみればよい >>113 調べて試してみます >>114 そもそも ”\” は文字列としても単体では使うことができない感じですかね? 知らなかったです。教えてくれてありがとうございます >>112 if all([a, b]): else allとanyは積極的に使おう フラグを別に持つとか途中で抜けてループ変数を見るとか、 何でレガシーな言語はそれで満足してたのか判らん
今日からPython始めたんだけど、エラーが出て動かなくて悩んでたらインデントが原因だったw 調べたらインデント自体プログラム構造的に意味を持ってたんだな。。。
少しコードが長くなってきたので、関数を定義してみようと思ったのですが 関数を使うくらいなら、最初からclassとmethodでやった方が後々便利ですかね? それから現段階ではまだinstance変数を使うかどうかは不明ですが classの最初に__init__は決まり文句として書いておいて良いのでしょうか? 仮に全く使わなかった場合にバグの元になったりするのでしょうか?
そのレベルならまず関数に慣れよう classはそのあと
classを使うほうが常に優れていると思ってるなら認識を改めたほうがいいよ。 classと関数両方使えるがpythonのメリット。 標準ライブラリだって両方共存してるのにどちらかを捨てるなんてもったいない
自己満だからといっていつも意識的にそれらを考えていかなければより良い設計はできないのかもしれない
クラスはメンバ変数にselfが強制だからコードが冗長になって嫌だわ
>>125 インデントも深くなるし、状態持つ必要が無ければモジュール化で十分よな 大仰なクラスを作ろうとするから インスタンス変数が2つだけ、みたいなのでも十分役立つ
>>127 それくらいならNamedTupleでも良いかな クラス名をclass Hoge ファイル名をhoge.py インポートでimport hoge インスタンス名何にしようかいつも悩む ??? = hoge.Hoge()
>>81 そもそも[0,1]のときにx[0]を2つ取り出したいのかどうかがよくわからないな あと、最大(?)は[0,10]じゃないか? [0,9]のときと[0,10]のときでどう処理を変えたいのかよくわからない 半開区間に含まれる最小最大を取り出したいなら、 for i in [idxs[0], idxs[1] - 1]でいいと思うのだけどこれは嫌? 木構造とかグラフ構造を自作したいなら(間々ある)、 クラスにした方が便利なときある気がするけどな。 get_tree_children(node)とかしだすなら、node.children()の方が名前空間がすっきりしていいし。 実装の詳細を見せたくないかどうかというよりは、関心の分離をしたいかどうかによるような気がするな。 確かにクラス作るまでもないようなことは多いけど。
python 3.9.10 a = (1, 2, 3) b = a c = (1, 2, 3) print(a==b) print(a is b) print(a==c) print(a is c) #True? なぜ a is c が true になるのでしょうか?
ほらよ >>139 それREPLでやってるからinterningが効いてないじゃないかな >>135 Tupleはimmutableだからaとcが同じオブジェクトを指しても問題なくて Pythonが最適化をした場合はa is cがTrueになるケースがある 「interning」でググってみて 例えばTupleを関数で返すようにすればinterningされずにFalseになると思う def foo(x): return (x, x+1, x+2) a = foo(1) c = foo(1) >>140 ありがとうございます、オプティマイゼーションの余地がある、ということですね、納得しました a is cが真になるかはかなりケースバイケースな気がするし、 中身を比較したいんだったら使うべきじゃないね 本当に同じtupleインスタンスかどうかを確認したいときだけにすべき
tupleだけの話ではなくてどの型でも同じだけどね 例えば文字列とか
n=12345.67 小数点以下が何桁あるのか調べたいのですが len(str(n).split(".")[1]) if isinstance(n, float) else 0 こんなんでいいですかね・・?
>>144 誤差で予想外の挙動しそうだからDecimal使う方がいい >>144 それだと n=1.0 -> 1 n=0.00001 -> IndexError になる len(format(n,".17f").split(".")[1].rstrip("0")) 後ろのif isinstance(n, float) else 0も不要 n=1.0 -> 0 n=0.00001 -> 5 >>145-147 たしかに 0.30000000000000004に対して17得られたのは正解だと思いますが 0.00001で1e-05になっててエラーでました Decimalかformat使ってみようと思います ありがとうございました やりたかったことは 受けとった1234.56や0.12345などの固定小数点数に 0.1とかを掛けたり足したりして計算、変形したのを 受け取った固定小数点数の整数部と小数部の数を維持したまま 固定小数点か文字列で処理したかったのですが 改めてやってみるとなんか勝手に桁数が変わってしまいますね・・ 1234.56で受け取った場合、1.05を掛けたとき→1296.288ではなく1296.29 0.12345で受け取った場合、1.05を掛けたとき→0.1296225ではなく0.12962 1234で受け取った場合、1.05を掛けたとき→1295.7でもいいし1296でもいいし1296.0でもいい みたいにしたかったのですが難しい・・
from decimal import Decimal str(Decimal(0.123456)) str(Decimal(0.123456)*Decimal(1.05)) #'0.1296288000000000015945911258' あれ、そもそも0.123456の小数部の桁数はどうやって知るんだっけ?? てところで詰まってます・・
冗長な気がしますがこんな感じにしてみました 何かバグが発生しそうな気がします from decimal import Decimal ary=[1234.5,165,0.34,0.0001,0.000001,3.00001,0.1*3,123456] def f(n): s=format(n) return int(s.split("-")[1]) if "-" in s else len(s.split(".")[1].rstrip("0")) if "." in s else 0 r=1.05 for n in ary: d=f(n) c=Decimal(n)*Decimal(r) rs=c.quantize(Decimal("0."+("0"*d))) print(n,c,d) print("-->",rs,"\n")
>>152 format使うの提案したけど使わないほうがよさそう、誤差がでる f(n): 負数で落ちる s=str(n).lstrip("-") c=Decimal(n*r) のところで n*r で誤差がでる c=Decimal(str(n)) * Decimal(str(r)) 負数対応四捨五入 -0.015 を四捨五入して -0.02 rs=((c > 0) - (c < 0)) * abs(c).quantize(Decimal("0."+("0"*d)), rounding=ROUND_HALF_UP) -0.015 を四捨五入して -0.01のようにしたい場合 rs=c.quantize(Decimal("0."+("0"*d)), rounding=ROUND_HALF_UP) 四捨五入したいのかよくわからんかった、roundingは好みのオプションでどうぞ 先にIEEE754読んでみては? 誤差に関しての勘所がわかるようになる
Pythonに限らず浮動小数点数を使う場合は常に誤差の問題がつきまとう。 0.1というのがすでに二進数ではきっちり表現できない数字なので、有効数字を何桁にするのかというのは実装の段階で決めなくちゃならない。 https://docs.python.org/ja/3/tutorial/floatingpoint.html 正確に表現できるのは、0.5,0.25,0.125...と1を2で割っていった数とその整数倍のみ 0.1は1/(2×5)となり1/5が2進数では循環小数となり浮動小数点数では正確に表せない。 ということを念頭に置いてまず何がやりたいか考えた方がいいよ。 decimalモジュールは便利そうだね。 >>154 どちらの書き方でも -0.015 を四捨五入したら-0.02だった、すまん -0.01にしたい場合は自力でなんとかして 昔から不思議なんだけど 何で分数で処理しないのかな? 最後に割り算を一回だけすれば 誤差がでないじゃないの
Pythonは整数側の桁数制限が無いのを利用して高精度にできそう
>>160 似たような大きさの数字ならその発想もいいけどね 現実はコスパの悪い任意精度の演算が必要になることが多いのでは >>160 昔GCD付きの分数クラス作ったけど 結局はdoubleになったことがある >>160 四則演算だけならいいけど√とかsin( )とかはどうする? >>161 掛け算、足し算で誤差がでるケースとは? python chapelについて質問です。 情報があまりないので、チャペルについてお勧めのサイトがあれば教えてほしいです。
クヌースのTAOCP読むといいよ コンピュータでの数値計算の全てが書かれてる
>>170 sinsin, cos のまま計算するって話だろ 数学不得意か? >>174 話は>>160 から始まってて途中は代数的な操作で最後に一回だけ演算することで誤差を抑えられるって話な 組み込み系で、積算の量を保持していて 1秒毎に測定して何年というスパンで計算を続けると、 もう32bitでは精度が足りなくなる
最後に浮動小数点数にして誤差を減らす方法は、代数的な計算ができる必要がある。 Mathematicaとか、SymPyだな。 ただ代数的な計算は上手いこと式を整理してやらないと簡単にならないことも多い。積分は公式を知らないと出来ない、というのと同じ。 有理数の四則演算だったら単なる有理数演算を逐次的に実行していけば問題ないだろうが。
>>177 んなことないだろ。加法定理やら積和、和積の公式とか習わなかったのか。あの辺使うと極端な場合の誤差減らせるよ。 xが0に非常に近い場合のsin2x/sinxとかね。 お金の計算とかは 有理数しか出てこないんだから 分数で十分のような気がするんだが
丸めたくない意図だと思うが加減算だけで速攻破綻する
単にbit数が足りなくなるという話なので、 必要に応じてbit数を増やしていけばいい 無限に増えることは絶対ない
質問です。 djangoの資格を作りたいとおもってます。 需要はありますか?
https://translate.google.com/ Google翻訳のページで、テキスト入力ボックスから「Tabキー」を1回押すと必ず「音声を聞く」のアイコンに移動するようにしたいのですが、Pythonで可能ですか? 通常は3回で行けるのですが、”原文の言語”や”もしかして”が表示されるとTabキーを押す回数が変わって面倒です。しかもリストが表示されててそのパターンなのか見えない。 Pythonで何とかしようとしてるのがそもそも間違っている気がして、簡単なHPをJavaとか?で作ったり、アドオンを組んだりとか別の手段が必要ですかね? >>188 現在のフォーカスを取得することでTab回数制御できそうだけど そもそも音声を聞く、のidありゃそこに飛ばせるやろ >>190 seleniumを使ってプログラムを実行した時だけなら出来たのですが、普段使いで常にその状態にさせる方法が分からなかったです。 独自の簡単なChrome拡張機能を作る方向が一番良さそうな感じです。そっちで少しやってみます。お騒がせしました。 >>191 拡張起こさなくてもTampermonkey拡張でスクリプト書くだけ USWCとか使ってESCキーを押したら画像認識で再生ボタンクリックとかにすると簡単そう ESCだと位置的に押しやすいし予測候補も消える pyautoguiみたいなの使えばPythonでもUWSCと同じ事出来たはず windows限定の話だけど
拡張する方向でやってもすぐに使えなくなったりするので、 キーやマウスの操作を発生させる方向でやるのが結局ベストだったりする
>>192-194 最初に調べるキーワードが出てこなくて分からないことが多いので情報助かります 頂いた情報を元に解決する方向でやってみます。ありがとうございました。 質問です 以下のプログラム(wikipediaの今日は何の日)をエクセルで起動させたときに最後の年号の()が取れてないとおかしいのですがどこのコードが間違っていますか? 優しい方教えてください import requests from bs4 import BeautifulSoup import csv import re url="https://ja.wikipedia.org" ; response=requests.get(url) soup=BeautifulSoup(response.content,"html.parser") top_entry=soup.find("div",attrs={"id":"on_this_day"}) entries=top_entry.find_all("li") today_list=[] for i,entry in enumerate(entries): today_text=entry.get_text().replace("(","(").replace(")",")") match=re.search("\(([1-9].*?)年\)", today_text) if match: today_list.append([i+1, entry.get_text(),match.group(1)]) else: today_list.append([i+1, entry.get_text()]) with open("output.csv", "w", encoding="Shift_JIS") as file: writer=csv.writer(file, lineterminator="\n") writer.writerows(today_list) 何度も本(スクレイピング・ハッキング・ラぼ)見返したけど間違ってないんです…
>>203 すげぇこんなのあるんだ でも解決しなかった(´・ω・`) >>204 n=15のときFizzBuzz Fizz Buzzの3つ表示されます これでいけそうですが、どうでしょうか 1から100までカウントして、15で割れたらFizzBuzzと表示して、5で割れたらBuzzと表示して、3で割れたらFizzして数字を表示する
修正した 1から100までカウントして、15で割れたらFizzBuzzと表示して、5で割れたらBuzzと表示して、3で割れたらFizzして数字を文字列で表示する
>>206 elif にするべきだったんですね!ありがとうございます! ウェブスクレイピングをやってみたくて奮闘しておりますが、CSVへの書き込み時にエラーがでます どう改善すればよいかわからず困っています。助けてください。 おま環(Python 3.9.12+Windows10+VScode) 【コード】 for a in soup.find_all('a'): link = a.get('href'), a.text link.to_csv('link.csv') 【エラー】 link.to_csv('link.csv') AttributeError: 'tuple' object has no attribute 'to_csv'
>>203 で Python Tuple to dataframe で聞く https://aiprogrammer.hashlab.jp/ ウェブスクレイピングで、aタグを取得し、そのaタグをcsvファイルに出力するコードを作成してください。 import csv from bs4 import BeautifulSoup with open("sample.html") as f: soup = BeautifulSoup(f, "html.parser") csv_file = open("output.csv", "w", encoding="utf-8") writer = csv.writer(csv_file) for a in soup.find_all("a"): writer.writerow([a.text, a.get("href")]) csv_file.close() >>211 213 丁寧に教えてくださりありがとうございます。 >知恵袋にも質問したのですが 5ch はマルチポスト禁止です! 5chで質問する場合は、他での質問を取り消してからにしてください
>>216 fj ではマルチポスト禁止の理由がありクロスポストという代替があったけれども、ここでのマルチポスト禁止の理由は? マルチ野郎はよそで解決しても報告しない 放置してそこら中にゴミを残す
ぶっちゃけスレは落ちて過去ログになるし 検索性も低いから集合知の蓄積なんてしないよ マルチポスト禁止は形骸化した旧きネチケットだと思う
>>222 いやぁそうでもないと思うけどねぇ 2ちゃんねるの過去ログをあさって解決方法を見つけたことも数多あるし 解決できない場合でも、ヒントになるようなことが散らばっていて、それをきっかけに探し出せることもある 検索のやり方次第じゃないか? >>223 調べごとはよくするけど 2ちゃんで解決したことはないな、というか、検索方法によるだろうが出てきすらしない 大体Qiita、個人ブログ、stackoverflowのどれか >>224 いまはそうした5ちゃんねる以外の方がまともな完結方法があると思うよ でも以前は、そういうのがほとんど当てにできなかったり、 *nixやマイナー言語、ハードウェア特有のトラブル、アングラ系wなんかだと、 英語資料を当たるきっかけやヒントが欲しかったりしたので、 2ちゃんねるのちょっとした書き込みがありがたかったなぁ いまでも、"site:5ch.net" をつけてキーワードをググることで、 5ちゃんねるの集合知はちゃんと機能しているよ 2ちゃんねるに書いてある事を、 そこまで信用したことはないな あるとすれば、裏が取れたとき位 リンク張ってあっても、あやしげなサイトだったりすることもある
今回みたいに簡単なエラー文も読めねえだけのカスがネット上に散らかることが多く これが害悪であるのでマルチポスト野郎は基本的にクソである 集合知の分散ではない。無知の飽和が問題
>>227 エラー文のseleniumは既にインストール済だぞ >>218 seleoniumはインストール済だよ pip install selenium でね Pythonが複数バージョンインストールされてるってオチじゃないの よくあるAnacondaどうこうってやつ
selenium一度アンインストールして再度インストールしたら出来ました スレ汚しスマン
>>231 朝早いですね! 再インストールしたら出来るようになりました 何故か知らないけど…… ……というより勝手にブラウザが開いて閉じての動作を見た時は感動しました すげー勉強する意欲が増した >>219 マルチポストされると同じようなレスを複数回読むハメことあるし回答したら他のスレで既に解決してたとかあるからそりゃうざいわってことだろ ちなみにクロスポストはたいていのリーダーでどれか一つ読めば他のグループへの投稿も既読になるし回答する際もディフォルトの回答先グループが指定できるから回答が散らばることも防げる 原神スレかpythonスレかで迷ったんですけど、ちょっと失礼します。 https://github.com/shrubin/Genshin-Artifact-Rater ディスコbotがサ終してたのでありがたくオフ環境に導入すべく頑張ったんです。 setupの手順から一通り終えてpy bot.py後なんですが raise ValueError("Duplicate keys!")の無間地獄にはまってるんですけど 列行文でエラー指摘されてチェックしても全然関係無さげでわからない時どこ見たらいいですか?。 やっぱり基本を熟知してる人は修正して当たり前な場所とかを理解できてなくてエラー起きてるんですよね。たぶん。。 詳細足りなさすぎるのは理解してるんですけど、ほんと憶測適当アドバイスでいいので教えて下さい。 >>220 それが理由だとしたらそもそも質問できる場が複数存在していて統一されていないことが悪いってことになる。 >>235 Duplicate keys! って、 データベースのUNIQUE インデックスまたは PRIMARY KEY に、 既に存在する同じキーで挿入しようとしたとか? そのGithub のbot.py 内を「Duplicate」で検索しても、見当たらないけど? どのファイルのソースコードなの? >>237 bot.py実行後に、~\Programs\Python\Python38-32\Lib\site-packages\toml 内のpython38-32のdecoder.pyからエラーが出てます。 powershellを使いました。 ほぼ素人ですみません。 コードじゃなくて食わせるデータがおかしいんでないの
>>241 UTF-8になってました。 ValueError: Duplicate keys!とTomlDecodeError: Duplicate keys!が出ていますが デコードが実行された結果キー重複が起こっているのを知らせただけで、原因はやはりbot.pyの中にあるのでしょうか? >>242 tomlでエラー出てるなら bot.pyで config = toml.load(open("config.toml")) っていう記述あるけど、config.tomlの中身がおかしいんじゃない? Traceback (most recent call last): File "test.py", line 31, in <module> func1() File "test.py", line 28, in func1 func2() File "test.py", line 30, in func2 raise Exception("hogehogeException") Exception: hogehogeException こういうファイル名や行数とか出てないの?
TOML のValidator で、TOMLファイルの形式が正しいかどうか、チェックすれば? 「toml validator online」で検索! プログラマーなら、VSCode で、~/toml/decoder.py をデバッグするとか、 decoder.pyを差し替えて、 raise ValueError("Duplicate keys!") の前後で、ログ出力してみるとか
PyAutoGuiも便利だけど何でもできるかというとかなり限定的 画面がこういう状態になったらこの条件に合う部分を探して、 この範囲をコピーしてこのアプリに切り替えてコピペ みたいなことはできない
ライブラリ関数の情報を調査する方法についての質問です sagemathというpython wrapperにあるpolygon3dという関数がどういうキーワード引数を持っているのか調べたいのです ググるとinspect.signature関数というのが見つかります コレでpolygon3dを調べてみると signature = inspect.signature(polygon3d) print(signature.parameters) OrderedDict([('points', <Parameter "points">), ('options', <Parameter "**options">)]) と出ます おそらく位置引数'points'とキーワード引数がいくらかあるという意味だと思うのですがやはりコレが限界なんでしょうか? どんな名前のキーワード引数を持ってるかの一覧表を出力するような方法はないもんなんでしょうか?
>>250 オープンソースなんだからGitHubに見に行けばいいじゃん >>251 そうなんです 実際sagemathは割とドキュメントもしっかりしててググれば一覧とかもあります でもいちいちめんどくさいじゃないですか もしかしたら各オプジェクトで利用可能なキーワード引数のリストを得る方法とか容易されてたら便利でいいなぁと 結構ググったのでなさそうではあるんですけど、調べて「あった」場合はともかく「ないなぁ」の場合、やはり最終的には強者に聞いてみないとダメかなと ドキュメントをぶっこ抜いてその関数がどんな引数とるかのポップアップをエディタで出せばいい
pyautogui エラー出さずにできましたが最適ではない気がします 下記のやり方より良い方法があれば教えて欲しいです ① pyautogui.write() でエクスプローラーのアドレスにパスを打ち込む時 日本語や \ が入力できなかったり、最初の C: が C* に勝手に変わったりしました ・pyperclip を使って値をコピーしてから、pyautogui.hotkeyで貼り付けました ② pyautoguiを使って検索したりクリックしたりする時 ・画像認識してから次の処理する時は、while pyautogui.locateOnScreen() is None: で time.sleep(1) させて ・検索結果表示とか全選択とか、少し時間がかかりそうな箇所は逐一改行して「time.sleep()」を書きました これを書くのが結構あってcodeが余計に長くなりました
pyautogui 便利だけどマウスとモニターが使用不可になるのだけは面倒でした 下のソフトの処理ができるなら別のもので構わないのですが、pyautogui以外でやってる人がいたら教えてください ・Adobe Acrobat ・Evernote ※Legacy版 ・ソシャゲ全般(デイリー回収用)
ahkで簡単なことはやらせてる python化されたahkがあればいいのにと思っている
sleepが面倒なら画像名を指定するだけで待ち&クリックする関数を作れば良いんでない バックグラウンドでの使用は、昔VPCを多重起動して使ってたことあるけど今でも出来るんかな 昔、某MMOでプロセスメモリの内容を読み取って動くマクロとか作ったけど プロセスメモリが読めればエスパーなマクロが作れるよ
>>258 それでやってみます ゲームに使えるならプロセスメモリもその内手を出しそうです >>252 VSCode, Ruby では拡張機能で、関数の説明なども見れる また端末から、そういうコマンドを実行しても見れるけど、 ブラウザで見た方が見やすいので、 一旦コマンドで説明をHTML ファイルにしてから、それをブラウザで見て、 見た後に、HTMLファイルを削除する。 これが自動で行われる ただし、その関数・モジュールの作者が、 Doc コメントみたいな決められた様式で、コメントを書いている場合のみ たいてい、Doc コメントの説明などは、 パーフェクトRuby などのパーフェクト・シリーズ本に書いてある クリップボードにpathlibのPathで指定した、不特定多数のファイルをコピーをしたいのですが方法が分かりません コピーするファイルは、フォルダー・テキスト・画像・動画・PDF関係なく、PC上で選択してCtrl+Cできるファイル全てが対象です pyautogui.hotkey(“Ctrl”,”v“) を使って貼り付ける予定です。※Evernote Legacyというメモアプリ上で使いたい pyperclip、shutil、pillow関連の記事は見つかるのですが、クリップボードに複数・拡張子問わずコピーする方法が見つかりません どうすればできるのか教えてください
今のところPathにあるファイル名いじって、検索かけてから全選択して、pyautogui.hotkeyでコピーするという遠回りなやり方でしてみました
FileDrop形式に変換できれば良いんだろうけどパッと検索してみた限り難しそうだね VSを使ってクリップボードを監視してファイル名が含まれていたらFileDrop形式に変換するアプリを自作するか コピー用のtempフォルダにファイルを一旦コピーしてから全選択→貼り付けとかでも良さそう
>>263 FileDrop形式という単語を知れただけでも良かったです。ありがとうございます chm形式のヘルプが3.7までしか野良に無いんだけど、3.10(stable)のchmどこかに無い? 公式はDLしたいけど404でオンラインでしか参照できなくて困ってる
>>265 公式にpython3107.chmあるし、落ちてくるよ >>266 すまん、日本語版希望。。。 githubに3.7jpビルドしてる人の使ってる >>261 漏れは、Ruby で、drag&drop での複数ファイルの移動処理を作ったけど、 これはファイルのみに適用される。 フォルダの再帰的コピーも出来るみたい require 'fileutils' dest_dir = "C:/Users/Owner/Documents/tmp/" # ARGV は、ドロップした複数のファイルパスの配列 ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ .each do |full_path| file_name = File.basename( full_path ) # ファイル名のみ FileUtils::DryRun.move( full_path, dest_dir + file_name) end sleep # 出力したコマンドプロンプト画面を閉じないようにする すみません、jupyter labで下記のように記述して実行したんですが、エラーでサイトが開きません。原因わかる方いらっしゃいませんか? url = ''https://telegram.org/'' browser.get(url) エラー内容 NoSuchWindowException: Message: no such window: target window already closed from unknown error: web view not found browser.getをdriver.getに変えて試してもみましたがダメでした。 urlについてはサイトに飛べることをurlクリックで確認しました。 エラーメッセージの内容を切り分けて質問しろよ エラーの原因はすぐわかるだろ web view not found まぁ、こんな状態でスクレイピングとかアホかって感じだけど
import pandas as pd df = pd.DataFrame( [[10,"a", True], [20,"b", False], [30,"c", False], [40,"d", True]]) #というデータフレームを定義したとして、0列目、2列目を独立して処理したとします #これを最終的に結合したいのですが、 a = pd.DataFrame(df.iloc[:,0],df.iloc[:,2]) # というようにすると 0 1 0 10 True 1 20 False ... というデータフレームではなく、 0 2 True NaN False NaN False NaN True NaN というデータフレームになってしまいます。なんで欠損値になってしまうのか わからないのですが、求めるデータフレームを作るにはどういう結合方法をとればいいでしょうか。ちなみに、 p=df.iloc[:,0] に対して p["A"] = df.iloc[:,2] という方法は、pがSeries型なので取れないです。一旦Series型にして取り出してから処理して結合させたいのです。どうすればいいでしょうか。
pandas詳しくないけど a=df.iloc[[0,2]]で出来たお
pandasはそれだけでスレ作ってもいいくらい複雑で深いな
二重のforループ抜けるときフラグを使ってるんですけどもっとかっこいいやり方ありますか? for i in range(10): flag = False for j in range(10): if hoge[i][j] == fuga: piyo() flag = True break if flag: break
for-else for i in range(10): __for j in range(10): ____if condition: ______break __else: ____continue __break 例外 try: __for i in range(10): ____for j in range(10): ______if condition: ________raise Exception except: __pass 他には関数にして脱出はreturnとか
検索ならin演算子を使って1ループに出来そう for i in range(10): if fuga in hoge[i]: print("piyo") break 他にはnumpyのany使うとか def is_contain(l, data): a = np.array(l) return np.any(a==data)
よほどのクリティカルなイシューが解決されたのでなければ アップデートされたからと言って、慌てて入れないもんだよ
>>277 一回それぞれ個別のSeries型を抽出してからくっつけたいんです。 わかりました。Series型だと追加できないので一回一列だけのDataFrame型に変換すればいいみたいです。 a = pd.DataFrame(df.iloc[:,0]) そのあと、列追加で a.loc[:,"new column"] = df.iloc[:,2] とやれば追加できました。
こうかな a = pd.DataFrame([df.iloc[0, :], df.iloc[2, :]]) print(a) numpyになると[行, 列]になってややこしくなるのを思い出した
>>281 breakしたらelse飛ばす挙動は知らなかったです ありがとう l = list() l.append(df.iloc[0, :]) l.append(df.iloc[2, :]) a = pd.DataFrame(l) print(a) 見やすくするならこうやね、勉強なるわ
>>274 WSL2+Docker使ってるからな 実機には入れない >>281 その三択なら読みやすさ的に 関数にしてearly return一択だと思うんだけどなぁ sr1 = df.iloc[:, 0] sr2 = df.iloc[:, 2] a = pd.DataFrame({"0" : sr1, "1": sr2}) print(a) 辞書型で登録 今度こそどや
>>294 できました!辞書型なら列追加できるんすね df_merged = pd.concat([df.iloc[:, 0], df.iloc[:, 2]], axis=1)
iloc()じゃなくてiloc[]の時点で、何しとるのかよく判らん
質問です。 配列内にアルファベットの要素がランダムに複数個入っています。 これらの要素をなるべく隣り合わないように並べ替えるにはどうするといいでしょうか? 例:AAABBC -> ABACAB
>>299 なるべくっていう処理はコンピュータには不可能 きっちり仕様として示せる処理でなければならない >>299 隣合うのが不可避の場合どうするのか 前に溜めるのか後ろに溜めるのか 2文字ずつ並ぶ→3文字ずつ並ぶのように緩和するのか >>302 前後に貯めるのではなく、2文字ずつ並ぶ→3文字ずつ並ぶのように緩和できるようにしたいです。 例:AAAAAABBC -> AABAACABA AABAACABA はNG箇所が2だけれど、 AAABACABA にすると1箇所で済む 2連続2箇所よりも3連続1箇所の方がスコアが低くなる評価関数の定義が必要
こういうパズル的なのはプログラミングお題スレで出題する方が早く回答が付きそうだな
>>305 n連続は1箇所につき2^n点のペナルティを課すとかは? >>306 いや、ていうかよく考えたらこの質問Python関係ないじゃんね >>308 すいません。 使っているのがpythonだったのでここで質問しました。 やはり難しいようなので、皆さんのコメントを参考に自力で考えてみようと思います。 ありがとうございました。 >>304 26要素のリストで各文字の個数をカウント 最大のものを見つけ出す 最大/他全部で連続個数が分かる 最大の文字を連続個数並べて他の文字を順番に挟む 挟む時は各文字の文字数をつじつま合うようにリストをカウントダウンして調整 同じ文字は可能な限り離したいとか条件追加するともっと難しくなる >>300 ちゃんと確認してないけど、交互に置けない場合が条件になるのかな? 不可能条件 最頻出文字数 > 文字総数/2 かな 文字の挿入は総数がつじつま合うようにもっと工夫が必要だな まあ頑張ってくれ
>>303 「なるべく」は結果についての話 最短は手順の話だから違うよね ガチでなるべくなヒューリスティックな問題の方が現実には多い
思いつきだけど [合計文字数][26]の2次元配列を作る 各文字ごとに均等に配置 空白部分には空白なりNoneなり入れる 2次元配列を縦方向に連結して1次元配列にする 空白を除去する ってのはどう? aaabbc [a,n,a,n,a,n] [b,n,n,b,n,n] [c,n,n,n,n,n] abcaba
>>318 合計じゃなくて最大個数の文字数でいいな for文の途中で条件に当てはまったら、for文の任意の値から処理を再開させる書き方とかありますか? 例えば「for x in range(10):」とあったとして、7の途中で条件に当てはまったら、3から再開してそのまま最後まで処理するみたいな
処理で条件が変わるような場合は、whileにしてもハマる いつ終わるか判らないようなループは本質的に不安定
>>320 そういうジェネレータ作ってrangeと置き換えればいいんじゃね あんま綺麗じゃないけど、こんな感じでいいのか? 競プロの連中ならもっとスマートなの書いてくれるはず text = "aaabbc" char = "abcdefghijklmnopqrstuvwxyz" char_dict = [] for c in char: ____count = 0 ____for t in text: ________if c == t: ____________count += 1 ____if count > 0: ________char_dict.append({"name":c, "count":count, "left":count}) char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True) result = "" pre = "" for _ in text: ____ci = 0 ____while True: ________now = char_dict[ci]["name"] ________if now == pre: ____________ci += 1 ________else: ____________result += now ____________pre = now ____________char_dict[ci]["left"] -= 1 ____________char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True) ____________break print(result)
>>325 とりあえずcollectionsのCounterだけは覚えようか >>325 ありがとう このソートって思ったよりも難しいな ツリー構造は理解できねえわ 質問です。 vscordとpycharmと他のパイソン系なのですが 「マルチグラボ」対応してるのを探してます。 お勧めはありますか?
Windowsで作成した画像を外付けHDDに保存する。 ※macとWindows共通で使えるFAT32使用 それをmacPCのpythonのglobで画像のパスを読み込んだ時に 「バスケ」や「ポケモン」などの濁点と半濁点の検索ができません。 ※printで中身を見るとあります。 原因や対処方法がありましたら教えて下さい。
あれはあれでunicodeなんだよな 統一できてない
>>335 ありがとうございます。 うまくできました。 >>299 これ貪欲法で解ける?? 解けるならAtcoderのCくらいででそう Mac は「ハ + 濁点」「ホ + 半濁点」に分割しているのか 1文字にまとめるのが普通
昔からそうだったとかでもないのに デファクトスタンダードに合わせるのは嫌というイキりたいOSの性格が現れている
半角カナを全角に変換した時に 文字数が変わるのを許容できるかという問題
単純なy1,y2の差ではなく、 y1がy2をcrossover(上抜け)したところの値とy2との差を、crossunderするまで取り続ける y1がy2をcrossunder(下抜け)したところの値とy2との差を、crossoverするまで取り続ける そのデータを取得したいのですが 何かうまい具合にできないものでしょうか where使って切り替わりの判別はできたのですが import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() t = np.linspace(0, 10, 1000) y1 = np.sin(t) y2 = np.cos(t) ax.plot(t, y1) ax.plot(t, y2) fig.tight_layout() plt.show() np.where(y1>y2,1,0)
test = set(A[‘A1’] for B in C[‘C1’] for A in B[‘D’] ) ってどういうコマンドなんでしょうか。 入れ子が多すぎてよくわからず… 何がどう処理されてtestには何が入るんでしょう?
>>346 バラす場合は test = set(A[‘A1’] for B in C[‘C1’] for A in B[‘D’] ) ここでバラすってことですかね? >ここでバラすってことですかね? >>348 フィルタリングしてるのはわかってるやんな? >>350 すみません フィルタリングってなんでしょうか…? >>345 forループに直して読めばいい test = set() for B in C[‘C1’]: __for A in B[‘D’]: ____test.add(A[‘A1’]) あまりいい内包表記の使い方ではない 直前のコマンドの実行結果の確認ってどうやるんですか? shellで言う、echo $? をやりたい
[{'id': 1, 'name': 'hogehoge', 'start_time': datetime.time(22, 0)}] ってリストを {'id': 1, 'name': 'hogehoge', 'start_time': datetime.time(22, 0)} と言う辞書に簡単に変換する方法ってありますか? クエリーセットから辞書に出来れば一番いいんだけど...。
>>357 cross地点のラインとか見やすくていいですね 実際に使うチャートのプロットに使ったら良い感じになりました! ありがとうございます!! Wsl2上Ubuntu20.04でtorch使って機械学習させてたんだけど、3万イテレーションぐらいで Segmentation fault とだけ出て落ちてた VRAMの容量が不足したと考えてあってる? あとLinux環境でこれをデバッグするなら何がいいか教えて欲しい
Linuxの組み込みRuby・mruby とかは、Top, Valgrind などを使うのかな?
>>1 p = [0,1] q = [2,3] を r = [0,2,1,3] にまとめたい、、、 >>358 良かった。おめでとう >>363 zipとflatten使えばできる、flattenは自前で書いても可 >>360 再現性あるかどうかは大事。ないなら電圧降下とか宇宙線とか回避できない事象かもしれない。 再現性あるならまずはメモリのテストとか? メモリ壊れててSegmentation faultは運良すぎる 十中八九バグ踏んでる
>>360 まずは普通のubuntu環境でやってみな note.nkmk.meブログ書いてる人は一体何者なん?凄すぎでしょ
.pyの拡張子のプログラムファイル送られてきたんだが ひらきかたがわからん
単に開きたいならテキストエディタでおけ よくわからんものをいきなり実行しないほうがいいでしょ。
返信ありがとう。 ココナラの仕事関連で贈られたブツだから 妖しくはないと思う。 ただひらき方がわからんだけw テキストね。ありがとう!
.pyだからgoogle colabとかvsでもひらけますか?
すまんが、開発環境について教えて欲しいんだけどさ NumPyの行列がどんな形してるか、あらかじめ推測がつく場合にVSCodeのエディタ上で表示してくれるような機能ってなんかないのかな? あったら教えてほすぃ
>>375 今グーグルコラボひらいたんやが。 ファイル、編集、表示、挿入などあるけど。 なかなかファイルを読み込むっていうのができひんねん。 教えて下さい! ファイル→ノートブックをアップロード→ダウンロードできひんw
当該ファイルをテキストエディタで開いてコピペしたらええんでないの?
Pythonの乱数はCPUのbit長とあまり関係ないみたい 64bit= 8バイトや128bit = 16バイトが効率がいいのかとおもったが 一度にまとめて長いのを生成したほうがいいみたい https://ideone.com/JlYdMk import random from time import perf_counter def randcomp(byte = 4, loop = 100000): N =[] K =[] for i in range(3): K.append(2**i) N.append (2**(8*byte*K[-1]) -1) for i in range(3): t = perf_counter() for n in range(loop * int(4/K[i]) ): random.randint(0, N[i]) t = perf_counter() - t print("%d%s : %0.3f sec" % (8*byte*K[i], "バイトで乱数生成" , t), flush=True) print("同一長乱数はまとめて生成したほうがいいが分割したほうがいいか") randcomp(100, 30000) 納得 整数の乱数も浮動小数点から生成してるのね 整数値はCPUの整数演算から生成してるとおもってた
>>376 PyCharmのPro版ならそういう機能あったかも。まあ有料だけど 年3万かあ・・・・教えてくれたのはありがたいけどちょっとこれは・・・・
量子使う奴は意思が入り込むよ 未来の科学ではそんなの当たり前になってるだろうけど、現時点ではオカルト 二重スリット実験とかも本当は不思議でも何でもない
ほんとの乱数を使う必要がある場合と疑似乱数でいい場合は区別したほうが良くないか。 Pythonで出し分ける方法は調べてないから知らないけど。
seedを物理的に作ってあとは擬似乱数だな 組み込みだとADコンバータのLSBを使ったりする
pythonの資格取りたいんですが難しいですか? どれくらい勉強すれば行けますか
>>365-367 wsl2上ではイテレーションはまちまちだけど再現してる ノーマルなubuntu環境構築して再現性あるか見てみるわ 調べりゃ解ることを わざわざ聞くやつは 2マン時間で十分だと言うことだろう
小さめファイルのハッシュ値を計算したい人です ファイルIOにかかる時間のほうが圧倒的に時間食うことがわかりました ハッシュ計算が3倍遅いほうでも差がほぼないようです
データフレームのある列で、0が連続する値だけを起点にデータを分割する いわゆるビニング処理をしたいのですが こういう感じにしました https://ideone.com/JIk4Zz たぶん期待通りの処理(df_sample["b"]で0以外の値が連続するブロックだけ抽出)になったのですが 改善できないでしょうか >>399 君には難しいだろう。 たぶん無理だから諦めた方がいい。 Pythonは統計とマシンラーニング課題も出るからそれらの背景知識がなければ受からないと考えたほうがいいし、Pythonを学ぶ意味も意義もなんの価値もない というのと、そんなことでいちいち根拠は?と思考停止する程度であればなにも成すことはできない。 よってそれら含めて知識として習得するつもりがあり、そのはじめの一歩として資格試験に挑戦するというのであれば、勝手に挑戦すればいい >>399 マジで厳しいこというかもしれないが 何のためにその資格を取りたいと思ったのか 何のためにPythonを学ぼうと思ったのか 心から学びたいと言う欲求があなたの中にあるのか あなた自身がこれら命題に答えられなければ、時間の無駄になるだろう Pythonは一般人でも使いやすいからシェアNo.1になってるような言語でしょ ラズパイIoTでも使うしAIのためだけの言語では無いよ
>>396 VIDEO 仕事で使う人で2年程度はかかるらしいよ ひろゆきは自分で試していない。 検索して、それを話しているだけ 自分の経験に基づかないから、いつも話が浅い。 だから聞くだけ、時間の無駄 検索して分かるような事しか話さない Python は良いみたいですよ。 流行っているからとかw
Python は文系は無理。 大学院数学科か、AWS 機械学習の資格が必要 だから、YouTube で有名な雑食系エンジニア・KENTA とか、 たにぐちまことも、Pythonの動画を作れない だから、英語だけできる文系女は皆、Ruby on Rails へ行く。 Railsは算数で十分 Pythonの文法だけ知っている香具師は、いらない。 仕事ができないから
フランス語で講釈たれたときもそうだな フランス語の専門家が誤りに突っ込んできて それで黙ってしまった
ケンタって人pythonをスルーしてるのはなぜなんだろう
KENTA は文系でしょ。 TOEIC も、800点以上取っていたかも? 英語ができるから、10言語以上のプログラミングに強い でも、Python は別。 大学院レベルの特殊な勉強が必要だから、文系では無理
うーんニューラルネットワークってそんなに難しいことしてないんだけどな
ニューラルネットワークはともかく、他の言語出来たらPythonだって出来るでしょ。NumPyとかPyTorchだけがPythonじゃないし。なんか知らんYouTuberを根拠にするとか頭おかしすぎる 正直BASICみたいなもんだろ、
PythonはCとかで作れられたソフトのラッパーにすぎないだろ 元の操作が難しくても初心者向けにラッピングしてあるんだろ BASICみたいというのはその面あるかと 当時だとアセンブラのラッパーといえるだろうが
Pythonで記述法が独特だとおもってたけど いま高級言語の FORTRAN BASICを調べたらまあまあ似てた
とにかく手軽で便利、マルチプラットフォームで動く高機能なスクリプト言語 一般人から研究者まで、エンジニアじゃなくても手軽に扱えるシェアNo.1のプログラミング言語 さあ今すぐPythonを始めよう!
やる気次第でしょ インフラ屋さんだけどPythonとGoがあれば仕事が楽になる
生まれて初めてカキコします。 pythonでエクセル内の 指定したセル範囲を画像として保存することはできるのでしょうか? openyxl等の使い方を見ましたが該当する機能が見つからず。。。
カキコって何歳だよ 画像は難しそうだよな ブラウザ経由ならまだ割となんとかなるかもしれんけど
>>426 5chははじめてか、力抜けよ 画像は難しい(意訳: 無理とは言ってないが見当がつかない) >>424 そんなことを逝っていたらいつまでたっても創められない なんでもいいからすぐにやれ! >>425 >>431 わかった、明日本屋さん行ってくる。 >>424 無理 そういう質問してくるやつは全員使い物にならなかった 独学で行ける奴は独学で行けるかどうか質問する前に独学できる範囲は独学しちゃうからなあ。 その質問が出る人と出ない人の違いが不思議だよね。 子供の頃に近くに誰も教えてくれないジャンルで何かを自分で調べてやったかどうかの違いなのかなあ。
全くのプログラミング初心者はCとJavaをやってからPythonやるのおススメ するとCでポインタに挫折し、Javaでオブジェクト指向に挫折するはず 次にPythonをやると大幅に難易度が下がり感激して習得が進む
独学ってなんだろうなとは思う 今やネット使えば相互で学びを得られるわけだし
できるやつはそんなくだらない質問してる間に書いてるからな よほど頭が良いやつを除けばプログラミングなんてスポーツに近い ある程度書きまくって理解するという面がかなりある
>>432 素直でよろしい わからないことがあったらすぐにここで聞くがよい、少なくとも私は答えてあげよう PythonのpyautoguiでDMMGAMEPLAYERのクリック操作ができません 多分他にもできないソフトや操作がある気がします できるようにする方法をご存知の方いませんか?
管理者権限でPythonやVSCodeを動作させるというのはやってみましたがダメでした それとは違うものですか?
クリックスピードが速すぎて認識しないことあったけどそれとは違うかな
循環参照とグローバル変数の解放忘れは どうにもならずでよい?
>>441 それなー制御レイヤでガードがかかってて出来ないんだよ 仮想環境でプレイヤー動かして外からマウス操作するとできる ahkならうまくいくと昔見た気がする 昔MMOでマクロ動かしてたときにjoytokeyは通るのにUWSCが通らないのは何でだと思ったらJoytokeyは使ってるAPIが古かったのを思い出した
GUIは他で作って呼べばいいやとか思ってたけど 触ってみたら楽しくなってきちゃった…
自分で使うのは勝手だが、他人に無理に使わせようとして面倒をかけないようにしろよ
パイソンって何のOSで作って、何のOSで動かして どんなハードウェア使ってるのかイメージわかない
昔はアプリ内スクリプティングによく使われてたし そこまでOS依存ないよね
>>450 何のOSでと言ってる時点で適性無さすぎ 渋谷のOSは人気があったんだけど、なくなってしまいました
>>455 いやーこの辺の理解は難しいよ 俺はPythonがC言語で作られていることを知っているが C言語が何で作られているかは知らない >>458 大本の大本を辿ればハンドアセンブルに行き着く 始めは機能が限定されたCコンパイラを作り、だんだん必要な機能全てが揃ったCコンパイラを作る >>461 Cコンパイラが何でできているか知っているのは コンパイラを作った人だけだからね 君は作ったことあるのかい >>462 gcc知らず? clang知らず? cl知らず? 何でできてるかって実装言語? gccならCだよ clangはC++ clは詳細はわからんがC/C++でしょう キーワード引数の違いで引数cがあるときだけ下側を呼ぶような関数オーバーロードってできないんですかね def myfunc(a:int,b:int) def myfunc(a:int,b:int,c:int)
>>463 gcc はカバのダンスの調教に疲れて c++ になったかと ラズパイを動かすための言語って思ってる人もいるかもしれない
>>463 それはそう言う例があるってだけの話 テキストを読んでバイナリを出力できる言語なら(面倒かどうかは別にして)コンパイラを作れるだろ >>468 念の為に聞いておくけどC言語はC/C+でないと作れないとか思ってないよね? >>470 何を言ってるんだ? 支離滅裂だぞ Cコンパイラの作り方を知りたいのか? 字句解析、構文解析、意味解析、コード生成、最適化とかを知りたいのか? コンパイラの教科書でも読めば? ちな俺は大学でその辺やってたから教えても良いよ Cコンパイラ作りたいなら湯淺太一先生のコンパイラの教科書読みな この本は昔大学で使っててアセンブリ言語のコード生成までちゃんと書いてある 著者はLisp処理系とか作ってた人 この本読めばRustがどういうコード生成してるかもわかる
>>473 なんでCでしか作れないんだよw おちょくるのもいい加減にしろ というかマジでわかってない? コンパイラとリンカとか知らんのかな それなら謝るけど
あまりに前提知識が無さすぎるが故に煽りっぽくなってしまったのなら俺の責任だからそこは謝るよ
どうでもよくないよ コンパイラのこと知らずにRust書いてるならかなり怖い
PythonのスレでRust書いてる前提で話すほうが怖いわw
>>479 ん?あ、すまんw リアルに勘違いしてたw アスペ出たなあ ほとんどのスレが閑古鳥だからかスレチでも書きたい欲求が上回るんだろうね
ただpythonでC/C++拡張を書く場合には普通に有効だし 知っていて損はないと思うけどね スレ違いスマソ
>>474 お前には聞いてないからいちいち絡んでくるなよ... アウアウウー Sa45-sGwS、ワッチョイ 81f0-sGwS は同一人物でしょ スレ違いだけど、こっちの流れのほうがわからん 462の発言に対して463が否定した その後の467が??? >>462 テテンテンテン MMe6-zh4g > Cコンパイラが何でできているか知っているのは > コンパイラを作った人だけ >>463 ワッチョイ 81f0-sGwS > gccならCだよ > clangはC++ >>467 ワッチョイ 8201-yYWu > それはそう言う例があるってだけの話 > テキストを読んでバイナリを出力できる言語なら(面倒かどうかは別にして)コンパイラを作れるだろ >>484 だからC言語(のコンパイラやインタプリタ)はC/C++言語でなくても作れるって話 >>463 は単なる一例 もちろんPythonでも同様 >>485 一例ってことは、 462に対して例をあげて否定した463を肯定しつつ、新たな話題で絡んだってことよね 463以前でもそれ以降でも「C/C++以外では作れない」なんて言ってないのに >>486 どうやったそんなアホな解釈になるんだよw 462 はコンパイラ一般の話を書いてるのにそれに対して個々のコンパイラの例を挙げても否定にも何にもなってないって話だぞ >>487 >>462 コンパイラ一般の話と >>463 いくつか例外があるぞと >>467 いくつか例外をあげても意味ないぞ こういう流れだったか > テキストを読んでバイナリを出力できる言語なら(面倒かどうかは別にして)コンパイラを作れるだろ んで、2行目のこれは「どこに」かかってるんだ? >>488 頼むから書いてもない例外とかいきなり出してこないでくれ > んで、2行目のこれは「どこに」かかってるんだ? いくつかの例以外のものを作れるだろって話 例外 → 一般とは違う例 と読み替えてくれ その作られている例と作れる話が繋がらなかったんだ とりあえず流れは理解したわ 横槍すまんかった
>>490 > 例外 → 一般とは違う例 > と読み替えてくれ 意味不明、487の一般の意味がわかってないだろ... 全般と書けばわかるかな? そもそもPythonもC言語で実装されているとは限らないしね。普通はCPython以外のことを考えなくていいと思うけど、今でもpypyとか使おうと思ったら考えなくちゃだしな(使ったことないのでよく知らないけど)
c++で思い出したんだけどboost.pythonでndarrary渡したあとそのままndarrary操作してたら処理にアホほど時間がかかったわ 結局vectorに入れ替えて処理したあとpythonのリストに変換して戻したら早かった 今思えば最初から渡すのリストで良かったな ndarray渡す利点なんかあるのかな?
>>494 コピーを減らせるのが利点だけど、アクセス時のチェック等で遅くなったら意味ないのでポインタを使う。 コピーをするにしても、ndarrayのデータは連続してるのでリストより速くなると思う。 初めてvsコードに触ったんだが pyhtonのバージョンはどうやってわかるんですかねー 教えて偉い人!
September 2022 (version 1.72) これのことかな? すまん。よくわからんw
>>495 データが連続してるからリストより早いってのはありそう 昔のコード発掘できたら試してみるわ >>496 右下に表示されてる そこクリックしたらインタープリターを選択っていうのがでてくる >>501 右下だとこうなります。 imgur.com/a/6CZm37Y なかなかに初心者には難しいです。 あ!できたっぽいw python3.9.0ってでてきた。 これかな?
半島系のクズは皆殺しでOK 日本に来て強姦と窃盗を繰り返す極悪非道の朝鮮人
>>497 RubyやPHPで使われてるから普通に現役だよ 手書きだとCFGから左再帰の除去だとか 先読みトークン数の問題とかすげー面倒だから 初心者はまずbison使えば良いんじゃないか 質問です この引数は普通関数と可変引数ですが この関数を簡単にする方法ありますか? 5個以上の場合も全部記述するしかないですか? def connect(F, *x) : l = len(x) if l==0 : F() elif l==1 : F(x[0]) elif l==2 : F(x[0],x[1]) elif l==3 : F(x[0],x[1],x[2]) elif l==4 : F(x[0],x[1],x[2],x[3])
>>506 は 消費メモリと消費時間を計測するベンチマークの補助関数としてつかいたいのですが >>508 サンクス F(x)で駄目だったですが それでいいんですか FastAPI気軽に使えて良いわ 自動で/docs作られるからUI作んの完全に後回しにできる ついでにSQLModelも、と思ったけどrelationship周りがエラー出たり出なかったりおかしかったが原因がわかった SQLAlchemyのバージョンが最新のものだrelationshipが効かない、1.4.35だといける・・ あとCRUDの並行処理は無理ぽいかも。 これらさえなければ個人でさくっとお気軽にウェブアプリ作るフレームワークとして完璧なんだが
ちょんてさ、半島に帰れば差別されないのに絶対に半島に帰らないよね? それは、日本が平和で豊かで、 日本人はみな親切だからです。 なのにちょんは差別されてると妄想をいだいて 日本人女性を強姦しまくってる! ちょんは皆殺しにするしかない!
半島に絶対帰らないちょんw 日本人は犯罪者に親切し過ぎる!
Python初心者ですが新事実を発見しました クラスのメンバ変数はデフォルト値が設定してあっても コンスタントラクタで初期化しないかぎり、別に生成したクラスobjと共有されてるようです リストとか特定の変数限定かもしれないですが
具体的にこれですが class A : L = [] def __init__(self): pass class X : L = [] def __init__(self): self.L = [] a = A() a.L.append(7) b = A() print(b.L) # 新規生成なのに値が入ってる a = X() a.L.append(7) b = X() print(b.L) # 正常 print(a.L) # 正常
>>525 pythonから入った者には そらそうだろとしか思わないw たぶんオレは他言語扱えないな 他の言語でも同等の機能を持つものはあるけどpythonはどちらの変数なのかを明示しないから混乱し易い
どっちも同じに見えるのはその方が便利だと思ったんだろうか 必要なら使う側で見分け付くように名前を付ければいいという柔らか運用
>>531 > どっちも同じに見えるのはその方が便利だと思ったんだろうか 変数宣言をしないって言うポリシーなので最初に使った場所で決めるようにした/せざるを得なかったじゃないかなって思ってる > 必要なら使う側で見分け付くように名前を付ければいいという柔らか運用 使う側はそれでいいけど宣言する人が勘違いしてたら意味ないわけで... クラス変数をself.でアクセスしない運用にすれば取り敢えず解決
self.__class__.foo self.FOO
質問です。 requestsを使って画像をダウンロードする時、 一定のサイズ以下の物をダウンロードしないようにしたいです。 どのようにするといいでしょう?
>>536 どうすればいいって 自分で質問して自分で答え言ってるじゃん streamを有効にして、ちびちびと確認しつつ取得
>>539 つまり一度ダウンロードしてからcv2等でサイズを確認し、 OKならリネームして保存、NOなら削除 という感じでしょうか? requests ファイルサイズってググれば一番上に出てくる
サイズって、実データのサイズじゃなくて画像のピクセル数とか色のサイズってこと?
画像のサイズっていう文脈なら俺はim.sizeとかを想定するなー request文脈なら容量のサイズだけどな!
すいません。 質問の仕方がまずかったです。 画像の横幅とか縦幅の方のサイズのことです。 横幅350px以下の画像をダウンロードする時に除外したいのです。
まあフォーマットによっては頭だけ読めばわかるけど…
元々はサイズなんか判らん、というプロトコルがあって、 それでは不便だからと建て増しで追加してるから、 判る場合も判らない場合もあるんだよな 判ったとしても嘘をついている場合もある
>>547 なるほど そんな事情があるとは知りませんでした。 オンライン上でサイズを調べるのは無理そうなので、 一度ダウンロードしてから仕分けるようにします。 ご迷惑をおかけしてしまいすいません。 ありがとうございました。 パッとヘッダ見た感じjpegなら0xA3にWORD値で高さ、0xA5に幅、どちらもリトルエンディアン pngなら0x10にDWORD値で高さ、0x14に幅、リトルエンディアン って感じだね 上手くヘッダの一部だけダウンロードして画像サイズを得る関数を作ればトラフィック軽減になるかも?
デザインパターンのSingletonパターンって必要ですかね・・ 結局なんらかのカウンターで一元管理することになりませんか・・
バイトコードってヒープ領域に格納されてvmに渡されるのですか?
>>549 ビッグエンディアンね jpegは画像サイズが含まれるセグメントの位置が固定ではないので決め打ちは危険 >>552 そうです 内部的にはPyCodeObjectという形で実装されています >>524 他言語触ってて 先に型ヒントつけて宣言しとこで同じ間違いしたわ >>553 本当だ逆に覚えてた恥ずかしい JPEGはサイズ前の5byteが共通っぽかったから>>550 ではFF C0 00 11 08を検索するようにしてみたけどFF C0後の3byteは可変っぽいね そもそも1KB以内にサイズ情報があるかも分からないのか 不特定の文字・数字・記号、またそれらの組み合わせを意味する表記で記入する方法を教えて下さい [123456aaaあ井う~~」 ↑みたいなのがあったとして、数字や文字は毎回変わる、場合によっては桁数が変わったりもする テキストファイル内で上記のパターンの文字列を見つけて、その前の位置で改行を入れるみたいなことをしたいです イメージですが下記みたいに表して a に代入しておいて [123456aaa文字] → [%%% ¥¥¥¥¥¥¥¥] or [%(桁数)¥(桁数)] replace(a,”/n”+a) でテキストファイルを書き換えるようなことって可能ですか?
これは煽りではなく真面目なアドバイスなんだが、プログラミングより国語を勉強した方がいい その言語能力だと難しいと思う
222tq2tq2tq269ああ%64agaoiwahaio.59gagagahai3a.t69a 5>22gahaiiha この文字列を 222tq2tq2tq269 ああ%64agaoiwaha io.59gagagahai3a.t69 a 5>22gahaiiha この出力結果にするにはどうすれば良いですか? なら大丈夫ですかね? この場合だと「文字列2つ + 記号1つ + 数字2つ」のパターンを見つけて改行したい
じゃあそのパターンで改行すれば… 正規表現でいいんじゃないかな
>>567 その正規表現の表記の方法がよく分からないです 123abcdeあいう ↓ “\d{3}\w*.{3}” これじゃダメみたいで、どう表記するのが正解なのか分かる方いたら教えて欲しいです 表記自体は合っていたのですが、re.match()でやってたせいで出力されなかったみたいで、re.search()に変えるだけで解決しました
matchは使わずに search(r'^なにか') でいいよな fullmatchは^と$で ^や$を使うなというのであれば、$だけ使うパターンも整備されていないと不完全
正規表現に関してはrubyやperlみたいに演算子にしてしまうのがベストだと思う searchだとかmatchだとかregexpだとかmatch_allだとか覚えられんて
命名とかAPI設計がイケてない match、search、fullmatch・・・ たまにしか使わない人は諦めて毎回リファレンス参照するしかない
list.append()が破壊的だったかすら忘れてぐぐる
覚えられないのではない 覚えないという選択をしているのだ 覚えるために何か工夫したのか?
イテレータ判定されるのにfor できないんですが イテレータとはforができるものではないんですか X = type("") if hasattr(X, '__iter__') : for x in X : pass
覚えないといけない時点でおかしい 理解すれば覚えなくていいのが正解 list.append()は破壊的で、str.replace()は非破壊であることに、 合理的な説明は無い その方が便利なことが多そうだからとか、メモリの都合とか、 一旦そう決めちゃったからとか、そんな理由に過ぎない
list.appendは配列の終わりにつけるだけ str.replaceは配列の途中に差し込む可能性があるからでは? メモリ操作のコストが違うじゃん
配列が格納してある後ろに空きスペースがたくさん確保してあるならそうだろうけど で、コストが実際に違ったとしてもそんなことは知らんがなでしかない
みんな知ってることだけど、listはmutableでstrはimmutableだからだよ。 これでもう各関数が破壊的かどうかいちいち覚える必要はなくなったね!
listはある程度後ろに確保してるしコストが実際に違ったらそれは明確に合理的な理由でしょ
>>585 これ まあそういうものとして覚えるしかないわけだけど べつに目的の物が作れればどうでもいいんじゃないの? ミッションクリティカルなモノをコレで作ったりするのかな?
linkedなリストは関係ないよな 連続したメモリに入ってる配列的なやつはアレだけど
PyObject*の配列です PyObject **ob_item; // PyObject*の配列 Py_ssize_t allocated; // アロケートされてる個数
0から255までの数字が入った要素数1000の配列があって、 Cだとunsigned char list[1000]; みたいに宣言してlist[i]で参照するとアドレス計算で値を取ってくるけど、 pythonはどうやってるの?
ちょっと調べた限りやっぱりPythonのリストはポインタの配列だと思うんだが違うっていうなら何か教えて insertの遅さとかで連結リストではないとは思うけど
cpythonのソースはマジで読みやすい Rubyとかもうぐちゃぐちゃしてて読めねえもん
実際の配列のサイズはPyObject_VAR_HEADマクロのob_sizeに入ってる
listにappendすると、ポインタの配列の末尾にポインタが追加される 配列のサイズが変わるので、サイズを増やした配列を作ってコピーしないとできない 筈なのに、idを調べると変わらない **ob_itemに入ってる値は変わるけど、**ob_item自体のアドレスは変わらない ということ?
組み込みだから作り直した配列にidがコピーされてたり
VM上は指すオブジェクト変わってないのにid変わったらあかんでしょ
appendしても同じオブジェクトという時点で違和感があるんだよな 明らかに別物やん 仮にappendが非破壊で list = list.append() とした時にidが変わる方が納得できる
>>605 逆だよ ob_item自体は大きさが変わる時にreallocでアドレスが変わるけど 中身の方はポインタをコピーするだけだから変わらない >>609 そもそもが全部Cで実装されてるんだからそういうメモリモデルなんだ、という理解で良いと思うよ >>611 あなたは何もわかってないのは理解できました >>613 わかんない? 違うよ どんどん主張が後退するんじゃねえかなという期待の下、繰り返すけど リンクリストはリスト的なものを作るときに第一の選択肢としてはこないと思うよ。 任意の要素へのアクセスがO(n)かかるから。 必ず頭から順番に読んで、途中に挿入したいことが多いとかいう状況だったら使うけど、こういう特性を、癖があると思う人の方が多いんじゃないかな。 そういうコンピュータサイエンスの初歩みたいなところの実装が気になるなら、Javaを勉強してみるといいかもね。 リストも辞書もセットも、複数の実装方法が標準で用意されてて明示的にどれを使うか決めなくちゃいけないから。 そう考えると初心者にJava教えてた頃ってコレクションで付いていけなくなり勉強を諦めた人多いんだろうか。
>>609 夕飯を食べる前の自分と食べた後の自分は別のインスタンスか?って問いにyesと答えられるならばイミュータブルなものにしかidを付けてはいけないと考えているのだろう(そういう言語もある、Haskellとか) そうでなければ、ミュータブルなインスタンスはミュータブルなんだからidが同じでも中身は変化すると考えるべきだろう idってCでのアドレスそのものなんでしょ 実装の都合でアドレスが変わったらidも変わるというだけの話で、 何らかのポリシーみたいなものは背景に無いような
>>617 CPythonではな。(すみません知りませんでした) しかしGCがかかりまくるVM上で動くPythonの実装もあるから、CPythonではそうっていう認識に留めておいたほうがいいんじゃないかなあ。 idが変わる/変わらないとミュータブル/イミュータブルは一対一対応?
>>619 まず、イミュータブルというのをどう定義するかによると思うけど (タプルはイミュータブルだが、タプルの中にリストを入れた場合、リストほミュータブルで、リストに変更を加えてもタプルのインスタンスが新しくできるわけではない) そういうややこしい例を除いても、 イミュータブルならば、値を変えたらidが変わる 値を変えてもidが変わらないならミュータブル しか言えないんじゃない? 定義や実装で何がミュータブルかがころころ変わってはいけなくて、 pythonではどんな環境でも同じものがミュータブルであるべき で、idが変わる/変わらないが環境依存ならば、idとミュータブルは関係ないことになる
pythonの辞書ってc++のmapと違って内部でソートされてないからアクセス遅いっぽいんだよね keysで取り出しても登録した順だし 文字列でも数値でもキーにできるからそういうものなのか
>>615 最後尾への追加削除がO(1)だったからリンクリストだと思ったけど リアロケートの実装でどうにかそれっぽくなるんだねぇ 全く気にしてなかったけど、勉強になったわ ループで一つずつappendしていくようなコードは、 溜めておいて一気にどーんで高速化できそう
Elixir なんて片方向リストだから、先頭の要素の追加・削除のみ速い。 末尾では全要素をたどる Ruby は両方向リストだったかな?
>>623 pythonの辞書は順番を保持することが仕様で規定されてる 3年くらい前からだっけ? キーバリューやから順番気にしたことなかったわ
順番が同じだとセキュリティの問題があるから意図的にランダムにしてなかったっけ
>>624 C++のvectorとか、JavaのArrayListの典型的な実装だと、リアロケートが発生するときに倍ぐらいの領域を予め確保しておく、ってのが普通って読んだな コードレベルで読んだ訳じゃないから確たるエビデンスがあるわけじゃないけど。 辞書は3.5だかそのぐらいで入れた順になるように仕様が決まったよね それまではバラバラだったはず あとソート済みが欲しいならsortedcollectionsがあるんじゃないの Pythonでパフォーマンス気にするようなコード書いたことないから速くなるかは知らないが パフォーマンス気になるならもう普通にpybind11よ
isPrime(n: int): __for i in range(2, n//2 + 1): ____if (not n%i): ______return 0 __return 1 numPrimes = 0 for i in range(2, 250001): __numPrimes += isPrime(i) print(numPrimes) cとかだと5秒以下で終わると思うんですが pythonではどうやって高速化できますか?
エラトステネスの篩みたいなまともなアルゴリズムを使え
>>635 range(2, n//2 + 1) を range(2, int(n**0.5)+1) にするだけで速くなると言うのは違うか。 n**0.5 は math を import するのが面倒だっただけ。。。 >>637 言語間の速度差を埋めたいという文脈で 片方により効率的なアルゴリズム使えというのは筋が違うと思う それやったら相手のCも早くなるやん それはそうだけどPythonをできるだけ速くしようというのは徒労に終わるんだよな
>>640 > 言語間の速度差を埋めたいという文脈で そうか、単にPythonで高速化したいだけに見えるけど? > pythonではどうやって高速化できますか? >>635 そもそもこのプログラムは一行で済む print(sympy.primepi(250001)) 公式のドキュメント読むと 「pip は推奨されるインストーラ・プログラムです。 Python 3.4 からは、 Python バイナリ・インストーラに最初から付属するようになりました。」 とか見るけど、触る環境どれも最初からインストールされてた試しがなくて手動インストールばっかなんだが
>>648 どこのバイナリインストーラ使ってるの? >>648 たぶん入ってるけど実行ファイルのパスが通ってないんだよ debianとかはOSのスクリプトを実行するための環境なので 最小限になるようパッケージが分かれている 不便にみえるけどユーザが使う場合はパッケージ外で導入した方が 特定のバージョンも好きにえらべてシンプル
npm/yarn, Ruby のbundler などは、デフォルトでコマンド実行できるけど 多分これらは、デフォルトで環境変数PATH にあるフォルダにインストールされるのだろう
>>648 python -m pipするのが安全やで(pipコマンドだと、複数バージョン入ってると意図したpythonに紐づいてないpipが実行される場合がある) pythonつかって紙に書いた文字判別するとかって簡単にできますか?
>>655 無料のライブラリなんかありませんかね?無いんなら諦めます pythonでなんかかっこいいことがしたいです でもやることが見つかりません。どうしたらいいですかね 今までポイントサイトをseleniumで自動化したりdiscordのbot作ったり動画編集自動化したりしてきたんですが先というか続きが見えません
PyPIザッピングして良さそうなモジュールみつけてかっこいい応用を書く
ラズパイでIoT リアルの物を動かせると、やれる事の幅が広がるよ
>>660 壁に落書きしてくるのがかっこいいと思ってるんなら大間違いだわw PyPIで良さそうなモジュール見つけるってどうやるの? PyPI サイト見てtrend moduleみたいなの適当に選んで説明見ても詳しい使い方がわからない
電子工作もそうだけど、環境は整いすぎに整ってて、やりたいことがあれば何でもすぐにできる でもやりたいことが見つからない さてはみんな環境を整えることを目的にしているな
アホな質問だな~ まずやりたいことがあって、それからツールを探すものだろ
その通りだけどやりたいことが見つからないんだわ もしかすると勉強からの逃避のためにプログラミングという逃げ場を作りたいのかもしれない。やりたいことが自然と出てきたらやることにするよ
>>654 EasyOCR は? pytorch必須だが 使い物になるOCRはみんなAIで有料なんだよな 客はDXしたい企業だから高い
料金みたことある?業務で考えたらめちゃ安いとおもうが
有料OCR知ってる俺スゲー君なんて相手にすんなよ...
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる そしたらgoogle様が無料開放してくれる筈
AIだから教育が必須で、それなりにコストがかかる こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する 各国で自分のとこの言語についてやるのが筋だけど、 どうせ日本はやらないのでgoogleがやる
似たようなので、音声からテキストへの変換も金かかる あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、 文化が大きく前進するだろうに金がブレーキかけてる 国の事業としてやれば一人頭の負担なんて微々たるものなのに
>>677 つまり文字起こし言いたいんだろ? なんかクソ認識悪いAPIだったら何かあった気がする 有料と言ってもgoogleAPIってかなり安いと思うんだけど 手持ちの本数十冊OCRして1,000円いかなかった気がする
某有名ゲーム会社で働いてる友人が、「Pythonではあまりクラスを使うべきではない。 それほど高度なプログラムでなければ関数を使えばいい」と言っていたんですが、 そうなんでしょうか? 皆さんの意見を聞かせて頂きたいです
関数でできればいいけど、引数たくさん渡したり、グローバル変数で渡してたり、 みたいな汚いことするくらいならクラスがいい
Javaのようになんでもかんでもクラスを作る感じじゃないというのは事実。 でも、dataclassとかnamedtupleとかは使うかな。 とはいえやることによると思う。
状態を持つオブジェクトを扱うならクラスは必然なのでは
pythonはメンバ変数にself必須なのがダルい メインプログラムまでクラス化する必要はないと思う 規模が小さければモジュール変数をグローバル変数のように使うのが便利 vscodeならインテリセンス利くし
>>687 プログラム水準(?)の高低でなく、実行速度の遅速でそう言われるのを聞いたことはある。大昔ね。 事実かは知らぬ。 >>687 使うべきでない理由をなぜ聞かなかったのか? それを書けば話は終わる 君の友人ほどスキルのある人はここにはいないからな >>687 必要になるまで不要なもので汚すな シンプルに書けってことかと >>691 だなselfを二文字くらいの別名に出来ないのかな? perlから来たからselfは当たり前だと思ってる
開発者間で同意取れるなら ただの関数の引数だから好きに変えられはする
グローバル変数用のファイルを作ってas gでインポートってのをqiitaで見たけどかなり便利 g.nameみたいにアクセスする
それは他に影響しないというだけで、グローバル変数の欠点は何も解決しない 作って使ってすぐ捨てるならいいけど、保守が必要なら時間かけてシンプルにしとかないと
グローバル変数はプログラム全体を通した設定値とかに使うもんじゃない? それこそメインプログラムにとってのselfよ 変に引数取りまくるより可読性高いと思う 規模にもよるんだろうけど
configを読んでグローバルに格納してmain()を呼ぶ みたいな作りになってるのが多い うちのスクリプト
設定値の保持ならぜんぜんOK 状態を丸見えで管理できないとこに置くなってことでしょ
関数の中に下請け関数があって、 なんかごちゃごちゃしてきたからリファクタリングだと外に出したらスコープから外れたので、 じゃあみんなグローバル化したれ、みたいにglobal付けて誤魔化す
>>687 どうせ、いたずらにclassを多用したゴミトランプゲームを 見せたんだろ?いつまでも練習だからって言って、設計もしないで ゴミコードを見せ続けるから嫌われかけてるんだよ。 クラス化するのは、言語のタイプやプロジェクトの規模ではなくて データ同士の相関を元に、見通しをよくすることが目的だと思う あるいは自分用ライブラリとしてカプセル化しておきたいとか そういう話を置いて、やらない方がいいレベルの問題があるのかw
>>687 おまいは友人に言われた事を何でも信じるのか? この洗剤飲めるの。by アム・○○ぃ 匿名掲示板で聞いて得た答えを信じるというのもどうかと思う
レスしてくれた皆さんありがとうございます 参考にさせて頂きたいと思います >>689 CUIの簡単なカードゲームではどうでしょうか? >>693 失礼しました 曰く「クラスを下手に使わない方がコードが無駄に複雑にならなくてよい」 からだそうです >>694 まさにそんな感じです >>698 ちょっと彼に悪いかなって… >>707 ゴミときたもんだ 彼の人柄はそんな感じじゃないよ ねえ、openpyxlとかでオンライン上のExcelファイルを修正できないの?
どこかのクラウド(どこ?)に置いたファイルの意味なのか Office365で作成したファイルなのか
どっちにしても手元に持ってこないと厳しいんじゃないかねえ
関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。
abcを使わないとできんことはあまりやりたくないねえ
>>716 > 関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。 なら初めからそう言えや まあそう言われたら適切な方の決め方について小一時間は問い詰めたいけどなw >>722 teamsに申し込んでoffice365に申し込めばクラウド上でエクセルが使えます >>712 カードゲームならカードクラスは作ったほうがよさそう。 あとはカードゲームのルールによる。 >>724 687が戒めたいのがまさに724みたいな馬鹿野郎なんだろうな。 目的と手段が入れ替わってclass考えて作るのに必死になる馬鹿。 カードクラス作ってもいいけど、同じカードが存在しない、記号4つと数字1~13の組み合わせの ものにクラスがいちいちいるかな。 カードクラスはカード1枚を表して、なにができればいいんだ? 記号クラスがあって、各記号クラスがあって、ナンバークラスがあって、 is_MarkMatchとかis_NumberMatchとかもってんの? idとprintがあればいいのかな。まあいいけど、そんだけのために classいちいち用意するのめんどくない? 複数枚のカードを扱うcardsクラスなのかな?機能はいろいろ持てそうだけど ゲーム固有すぎてどうなのかな?
可読性考えるとクラスのほうが良いわな 自分だけが使うなら好きに作ればいい
自分だけが使う場合でも後々困る 読みにくくていいのは再利用しないと判ってる場合