◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:Pythonのお勉強 Part68 YouTube動画>1本 ->画像>6枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1663235546/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
!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る「横着」禁止) https://techiedelight.com/compiler/ Run Code機能あり。 http://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 http://pastebin.com/ まずまずシンプル。 http://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Pythonオフィシャルサイト http://www.python.org/ ◇Pythonドキュメント https://docs.python.org/ja/3/ ◇まとめwiki http://python.rdy.jp/ ●関連スレ● 自称初心者は↓へ 【まず1嫁】くだすれPython(超初心者用) その57 http://2chb.net/r/tech/1653225908/ 〇前スレ〇 Pythonのお勉強 Part67 http://2chb.net/r/tech/1653540315/ 次スレの建立は>>985 が挑戦する。(980通過して24h後も落ちなくなった) ### END of TEMPLATE ### VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured meboっていうチャットボット用のAPIを操作したいのですが
単純なAPIが使えなくて挫折してます。
meboHP:
https://mebo.work/ meboAPIのAI構築について:
https://zenn.dev/makunugi/books/f3d9eb62b6d133/viewer/f0c36f 環境
google colab(Python 3.7.14)
コード
https://pastebin.com/jjDUXv4h 現在の出力
rpc error: code = InvalidArgument desc = Document name "projects/mabo-f1cc7/databases/(default)/documents/bots/" has invalid trailing "/".
サーバーからのステータス
<Response [500]>
勉強してて、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になってるか確認してみて
下でも上の表示がいいんす
>>10 解決しました。
>>10 のレスは無視してください。
>>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 英語の略語を集めたサイトはあるけど一般的な略語はともかくabspathみたいな奴はヒットしないし逆にcwdみたいに短い略語はヒットしまくるから使いづらいよ
https://www.abbreviations.com/category/COMPUTING >>30 osモジュールの該当メソッドの説明を読むのがいいと思う
https://docs.python.org/3/library/os.html 一般的なunixコマンドから拝借してるものが多いから
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が批判されがちなので批判の文脈で喋ったほうが肯定的に聞いてもらえるだろうという余計な意図が入ってるのではと邪推してしまうね:)
>>86 > Trellixによると、35万件を超えるリポジトリがこの脆弱性に脅かされていると見られ、その多くでGitHub Copilotなどの自動ツールが使われているとのこと。
前知識なく普通にこれ読んだら、35万件のリポジトリがGitHub Copilptを使っている、そして、Copilotがその脆弱性の原因であると思うでしょ
というかこの記事書いた人はたぶんそのように誤解してる
>
https://www.trellix.com/en-us/about/newsroom/stories/research/open-source-intelligence.html まあソースも推計方法や論理がガバガバで似たようなレベルだが
>>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あれば事足りる。
ファイル名に使えない文字を全角に変換するコードってこんなに長くなるものなんですか?
https://qiita.com/kusunamisuna/items/a32679874afedc032158 name_ng = ["/","\",":","*","?","<",">","|"]
こんな感じでリストに入れてfor文の中で replace で置換すれば良いんじゃないかと思ったけど、リストにする段階でエラーになります
上記のURLの記述が最適解?
簡略化された書き方があったら教えてほしいです。
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は好みのオプションでどうぞ
>>154 ありがとうございます
やはり至るところで誤差が発生するのですね
四捨五入は今回の用途ではどちらでも良い感じです
せっかくなのでまとめてみました
https://ideone.com/JmTu06 ありがとうございました
先に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 最初に調べるキーワードが出てこなくて分からないことが多いので情報助かります
頂いた情報を元に解決する方向でやってみます。ありがとうございました。
>>169 >>173 複素数や四元数を使うのが割りとマジでお薦め
>>188 Ruby, Selenium でも、JavaScript を使って出来たけど、
ソースコードの何かの単語がブロックされるので、
ここには貼れないので以下へ
https://jsfiddle.net/w3anscm6/ 質問です
以下のプログラム(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)
何度も本(スクレイピング・ハッキング・ラぼ)見返したけど間違ってないんです…
お願いします
https://ideone.com/vADQwg for i in range(1, 100) で 99 回 next を呼んでいるのに、なぜ 79 で終わってしまうのですか?
>>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を使いました。 ほぼ素人ですみません。
コードじゃなくて食わせるデータがおかしいんでないの
「python toml decoder duplicate keys」で検索!
TOML ファイルの形式になっていないとか?
ファイルがBOM付きUTF-8 になっているとか?
Python は、BOMなしUTF-8 じゃないの?
https://git.cardiff.ac.uk/c2021544/blogg/-/blob/abf082d45bcacad0728c2a03e91baf103046eba9/venv/lib/python3.6/site-packages/pip/_vendor/toml/decoder.py このファイルの781, 783 行目に、raise ValueError("Duplicate keys!") がある
>>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 まぁ、こんな状態でスクレイピングとかアホかって感じだけど
>>272 だけど今試したら3.10.8インストール出来た
https://www.python.org/ftp/python/3.10.8/amd64/ のフォルダの属性設定を間違えてたらしい
よって
>>273 は昨日の時点ではインストールしてないとすぐに分かるんだね
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
かな
文字の挿入は総数がつじつま合うようにもっと工夫が必要だな まあ頑張ってくれ
>>310 >>311 ありがとうございます。
試してみます。
>>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 ありがとう
このソートって思ったよりも難しいな
ツリー構造は理解できねえわ
>>299 https://ideone.com/b6vqgk すごーく分かりづらいけど、2種類に分けて導き出した
区切り文字中心に考えたのに、そこで処理を分けてない体たらく
あと、同じ文字は出来るだけ遠く?は難しかった
〆切ってそうな話題ですまん、Python覚えたくてやってみた
質問です。 vscordとpycharmと他のパイソン系なのですが 「マルチグラボ」対応してるのを探してます。 お勧めはありますか?
Windowsで作成した画像を外付けHDDに保存する。 ※macとWindows共通で使えるFAT32使用 それをmacPCのpythonのglobで画像のパスを読み込んだ時に 「バスケ」や「ポケモン」などの濁点と半濁点の検索ができません。 ※printで中身を見るとあります。 原因や対処方法がありましたら教えて下さい。
あれはあれでunicodeなんだよな 統一できてない
>>335 ありがとうございます。
うまくできました。
>>299 これ貪欲法で解ける??
解けるならAtcoderのCくらいででそう
Mac は「ハ + 濁点」「ホ + 半濁点」に分割しているのか 1文字にまとめるのが普通
昔からそうだったとかでもないのに デファクトスタンダードに合わせるのは嫌というイキりたいOSの性格が現れている
半角カナを全角に変換した時に 文字数が変わるのを許容できるかという問題
>>299 https://ideone.com/7qVDRD 内包表記とスライスを使ってみた
・・・Pythonヤバすぎる、便利すぎる
単純な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には何が入るんでしょう?
test = set(...) は
https://docs.python.org/ja/3/library/stdtypes.html#set-types-set-frozenset なんで置いといて中身の話だけど
A['A1'] の所を一時的に C B A と順に3回置き換えて動かすとみえてくるかも
>>346 バラす場合は test = set(A[‘A1’] for B in C[‘C1’] for A in B[‘D’] ) ここでバラすってことですかね? ゴテゴテになりましたがなんとかできました
https://ideone.com/huqmu0 #0.0 97
#crossover sin,cos 2
#crossunder sin,cos 1
>ここでバラすってことですかね?
>>348 フィルタリングしてるのはわかってるやんな?
>>350 すみません
フィルタリングってなんでしょうか…?
>>345 forループに直して読めばいい
test = set()
for B in C[‘C1’]:
__for A in B[‘D’]:
____test.add(A[‘A1’])
あまりいい内包表記の使い方ではない
差とったバージョン貼るの忘れてました
>>349 https://ideone.com/yDQwqO せっかくnumpyやpandas使っているのにforで回す感じが納得できませんが妥協します
直前のコマンドの実行結果の確認ってどうやるんですか? 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)
>>382 https://docs.python.org/ja/3/library/random.html#random.random > ほとんど全てのモジュール関数は、基礎となる関数 random() に依存します。
ソースまで追ってないけど係数掛けてるだけでない?精度求めないなら構わないけど
納得 整数の乱数も浮動小数点から生成してるのね 整数値は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等の使い方を見ましたが該当する機能が見つからず。。。
カキコって何歳だよ 画像は難しそうだよな ブラウザ経由ならまだ割となんとかなるかもしれんけど
xlwingsでExcel操作してセルを表示
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.copypicture もしこの操作ができるならpillowのImageGrab.grabclipboardで画像化
できそうにないなら同じくImageGrab.grabでスクショ
>>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がどういうコード生成してるかもわかる
>>471-472 御託はいいから
>>470 にyes/noで答えろよ
>>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 > どっちも同じに見えるのはその方が便利だと思ったんだろうか
変数宣言をしないって言うポリシーなので最初に使った場所で決めるようにした/せざるを得なかったじゃないかなって思ってる
> 必要なら使う側で見分け付くように名前を付ければいいという柔らか運用
使う側はそれでいいけど宣言する人が勘違いしてたら意味ないわけで...
つい最近同じように、クラスを覚えようと
「python class」でググった一番上のサイトにやられた
https://camp.trainocate.co.jp/magazine/python-class/ クラス変数もインスタンス変数もめちゃくちゃだった
クラス変数を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}”
これじゃダメみたいで、どう表記するのが正解なのか分かる方いたら教えて欲しいです
正規表現の勉強がてらやってみた
https://ideone.com/vPYWtM 最後の1行はマッチしないね
表記自体は合っていたのですが、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 無料のライブラリなんかありませんかね?無いんなら諦めます
>>654 判別とはどういうことをしたいのかよくわからんけどとりあえず python ocr とかでぐぐればいいんじゃね?
https://gammasoft.jp/blog/ocr-by-python/ 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クラスなのかな?機能はいろいろ持てそうだけど ゲーム固有すぎてどうなのかな?
可読性考えるとクラスのほうが良いわな 自分だけが使うなら好きに作ればいい
自分だけが使う場合でも後々困る 読みにくくていいのは再利用しないと判ってる場合
>>725 689だが、トランプはクラスを作った方が(少なくともnamedtuple,dataclass)便利だと思うぞ
>>726 記号クラス、番号クラスなんて作らない
記号はenum、番号はそのまま1~13でいい
が、どの記号が黒だ赤だ、どの番号が絵柄か(JQKA)
みたいなのはたとえインスタンスが一個でもメソッドになってた方が便利だと思うけどなあ。
カードは内部表現とUI上の表現が異なるのが自然だし、そういう意味でもクラスにしておくのは悪くないと思うが
クラスにしすぎてもしょうがないというのは、ゲームのルールをクラスにして共通のインタフェース持たせて、バリエーションを切り替えられるようにしても大抵は仕方ないみたいなことだよ
もちろん、どんなゲームシステムを作るかによるし、ルールを共通インタフェースで入れ替えられるようにするメリットがある場合もあるけど
全てユースケース次第じゃね 13×4のブール配列で持っていたほうが都合がよい場合もあるだろうし
とりあえず作って、必要に応じてリファクタリングしていけばいい
カード型のインスタンスを生成するデッキクラスを作りたいやん deck.suffle() hands = deck.draw(5) みたいなさあ あとは各ゲームで処理つくろ
多くのレスを頂き、ありがたく思います
ちょっと自己顕示欲が強い気もしますが、俺のGitHubを公開させて頂くので、
よろしければご覧下さい
https://github.com/masa-gh/practice のblackjack_3.pyがそれです
これでもクラス使わないで書けるのかな…
力作だね 友人のアドバイスは痛いほどよく分かる クラス云々よりも「ここからメインの処理」以降の各処理を関数にまとめるほうがずっと大事だよ
何のためにでっかい関数の中にクラス作るのか分からん この設計センスなら友人のアドバイスは正しいな
レスありがとうございます
>>708 クラス使った方が見通し良くなりますよね?
スッキリJavaにもそう書いてありました(Pythonの本ではないですが)
>>709 複雑にならない方がいいからだそうです
>>710 ええ、ですので皆さんの意見をお聞きしたんです
>>711 うーん、明らかにプロと思われる方の書き込みもありますし、
信じられるレスはあると思います
>>716 ただ彼の主張では、なるべくクラスは使うな、ということでした
Javaを独習した経験がある俺からすると、少し疑問符が付くのです
クソクラスをクソと認識できるためにもそれなりの能力が要るからね
>>724 そうですよね
カードのクラス作りました
>>726 複数枚のカードを持つCardクラスです
ブラックジャックなので、A・J・Q・Kの値は別に決める必要があります
>>727 可読性は重視したいです
>>736 そう言って頂けると大変ありがたいです
やっぱりそこは1つの関数にまとめた方がいいんですね
>>737-740 それも友人に、グローバル変数は少なければ少ないほどいい、と言われたのを
受けてのことです
>>735 ざっと見た感じ、そりゃ色々言われるわ
クラス云々言ってるのに、blackjackっていうデカい関数の中にクラス切ってる時点で吹いたわ
あとクラスの役割分担というか、所属してる関数もおかしく感じるわ
プレイヤークラスっていう名前なのに、にルール関係のスコア計算、バースト判定とかが入ってるし
それこそblackjackのルールを管理をするクラスを作る方が自然だべ
あともうし自分で書くとしたら、ルールクラスにis_winっていう関数作って、そこで勝利判定してtrue/falseで返すわ
最後に全パターンで人間/CPUに対して勝利判定かけてるけど、参加プレイヤー/CPUが増えた時の勝利判定の実装とか
これベースだと面倒だろうなって思った
>>743 >グローバル変数は少なければ少ないほどいい
これはまず変数のスコープは狭い方が良い、っていう話だぞ
(グローバル変数だとそれこそスコープが広くてどこで書き変わるのかが不明瞭になるから、なるべく使うなって言われてる)
バカデカい関数を作るって何の解決にもなってねえwwwwwww
使い回さないのに関数化やクラス化する意味ってあるんだろうか
is_<動詞> ってたまに見るけどどこかで流行ってるの?
>>746 この業界には、「一処理は100行に収めるべし」という格言があってな
つまり100行以上の処理があったら、100行以内にぶった切って関数にして順次呼ぶべしってことなんだよ
理由は知らん
まあ分割っていうか処理に名前つけろやって感じだな 抽象的に書こう
でかい関数はあれもやってこれもやってになってるから、 それを機能毎に分割すればいいだけ 1箇所からしか呼ばれない関数がいくつもできるけど、それは問題ない うまく作ってあれば、関数の戻り値を次の関数に渡すだけ、みたいなシンプルな構造に自然となる それぞれの機能が変数をいろいろ共有していて切り分けられなかったら、元々の書き方が悪い
pythonではクラスをあまり作らないほうがいい、じゃなくて お前にクラスは百年早い、って言いたかったんだろその友人は。 碌に関数も作れないのだからクラスなんて無用の長物。
昔、関数ごとに仕様書作成が必要な現場があって、それを嫌って ほとんどの関数が200行を超えるサイズで書かれる様になった
文書をアウトライン化するような感じで使うのね メンテのときに不要な部分を読み飛ばせるのがメリットか
何か楽をするためのプログラムを作るのはいけるけど、 サイトの仕様変更で動かなくなったときの修正が苦痛だな、、 そのまま放置になりがち、、
スクレイピングはそのうち廃れる気がする 元データがあって人間用に加工して表示したものをまた元データに戻さなくても、 最初から元データで公開した方がお互い楽なことに気づき始めた
C++でキー処理が数百行で、しかもファンクションキー毎に少しづつ違う という構成のものを改修させれて辟易したことある もしや、行数で成果が評価される現場だったのか
>>756 人間向けのHTMLを解析すれば無料なのにAPI経由は有料ってのも多いしな。
Python勉強してるけどどうやって初心者の粋を超えたらいいのかが分からない 何か作りたいけどその何かが思い浮かばないし 自動で巡回してエロビDLするとか電子書籍自動でスクショとかできるんだっけ?
>>759 早速思い浮かんでるじゃん
誰かができないと言うからやらないというなら何の勉強にもならない
明確な目的が無く勉強自体が目的なら機能しないゴミしか作れなくても意味があるし思い浮かんだもの全部作ればいい
>>756 もしかして、APIが存在しない世界から来た方ですか?
別に既にあるものでも構わないから、何か作りたいというモチベーションがある内に色んなものを作った方がいい 独学は特に大事
途中で奥ちゃった そしたら、次に何か新しいもの作りたくなった時に何が足りないか自分で調べられるぐらいにはなってると思う
クラスを設計するのはものすごく難しい 作り始めないとわからないことも多いし 途中で仕様が変わったりしたら 簡単に破綻する 大きなプロジェクトでは 途中でクラス構成を変えることは 困難なので しばしば大変なことになる
>>759 この前も同じこと言ってる人がいたよ
作りたいものがないのでなんかアイディアないですかって
まず、何のためにPythonを勉強しているのか聞きたい
普通は作りたいものがあったり、仕事だから、課題だからという
動機があるはずなんだ
動機もなく身に着けられるものじゃないよ。プログラミングは一応専門技能だから
>>766 最初から完璧な要件・設計で開発なんて不可能だから
途中で構成変わる前提で組み立てるんだよ
クラスに限った話じゃないけど
インスピレーションを得るなら多くの作品に触れることでしょ
プログラムやりたいと思った動機ってそれぞれあるだろう
ズボラほど上達が早いように思う やりたくないことは全部コンピュータにやらせたい
現実は必死に努力してQiitaにちょっとやってみたーみたいなこと書いてるやつばっかりだけどな
部品の置き換えが利くってのは完璧なプログラムとほとんど同義だね 具体的にねっちょりと書くしか無いこともあるけど
質問です。 これをヘッドレスモードで動かしたいのですがどうするといいでしょうか? from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager browesr = webdriver.Chrome(ChromeDriverManager().install())
すいません。 解決しました。 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless') browesr = webdriver.Chrome(ChromeDriverManager().install(), options=options) browesr.quit()
ちゃんと終わってる筈なのにタスクマネージャに残るんだよな
async関数の終了を2箇所で待つ方法は無いですか? 普通にawaitを2回使うと既にawaitedした処理だぜってエラーが出ます。
答えは持ち合わせてないけど同じことを考えたことあるな
>>780 エラー握り潰しても、肝心な処理待ちが出来ないので駄目です。
メモ化する関数でラップ 頻発するならデコレータ書く
>>756 廃れないよ。Webって広告で成り立っている基本人間向けの情報発信ツールなんだから、人間向けのデータ(文章とかね)のスクレイピングは依然として残る。
APIは有料というのは広告収入につながらないから割と当たり前の話で。
利益を目的としないデータ公開はオープンデータ化していくだろうけれど、そういうのって政府や自治体のデータ公開、大学などぐらいしか基本的にはないだろう。
>>782 メモ化だと結果は再利用できますが、同時に待つことができないように思います。
>>778 task = asyncio.create_task(async_fn())
result = await task
result = await task
>>785 うまく行きました! ありがとうございます!
TaskというのがJavaScriptのPromiseみたいな事してくれるんですね!
なんでOpenCVはちょっとしたことでぶっ壊れるんですか?
_max=7 _min=3 a=2 if a>_max: a=_max elif a<_min: a=_min print(a) これってもっとスマートに書けませんでしたっけ
ちなみに0を含む自然数で range(_min,_max,1) です これの範囲外は判定できるのですが _minより小さく外したのか、_maxより大きく外したのか って一行で短く書けなかったかな、と。 記憶違いかもしれません、無かったような気がしてきました
>>790 できました!!
そうですこれです!
_max=7
_min=3
for i in range(10):
print(i,max(min(i,_max),_min))
ありがとうございます!!
最近excelで、答えがマイナスなら0にする、という処理がめんどくさいと思ったけど、 max(0,x)でシンプルに書けた
>>790 は一見何をやっているのか、やりたいのかわからんし
メンテナンス性が悪そうだ
>>788 の方はわかるし改造しやすい
コードは短ければ良いというものではないな
やりたいことをまず自然言語で書く minとmaxの範囲内ならそのまま出力 範囲外ならばminとmaxでガードする これだけの情報量があるので、コードがそれなりの長さになって当然
>>788 np.clip(array, _min, _max)
何がコードゴルフかはジャンルにもよるよなあ。シェーダーなんかだとminmaxみたいなのは常套句みたいなものだし、 pythonの内包表記もちょっと凝り出すとコードゴルフ的になる。コーディングガイドラインがあればいいけどね。
>>794 さすがにこのくらいはグラフ考えて分かってよ
まあ、minmaxの良くないところは、慌てて順番反転させたりする事故が起きると何もクリップしてくれなくなるところなんだけど(良く使うなら関数化しておくべき) とはいえ、minmax的なのNGって、関数型言語全否定に近いものがあると思うんで、その立場でいいのかは考えるべきだと思うけど。 もちろん手続き型メインのPython使ってるんだからPythonではそんなのお門違いだという意見も否定はしないけど
maxとminでもいいと思うけど 頻繁に使うならclamp(val,lo,hi)みたいな関数作ればいい
初コメです。質問させてください。 ウィジェットに、押すとnotepad.exeを起動するボタンを作ったのですが、起動したテキストに文字を書き込む(テンプレート)ボタンを作りたいのですが、どのようにすれば良いでしょうか…
>>802 PyAutoGUI
内容次第ではPythonやめてAutoItだけの方が楽
AutoItとかAutoHotKeyとかキーボードやマウスをプログラムから操作して 自動化するツールはいろいろあるけど、 どれが最強なのか今ひとつ判らない 簡単にする為に出来ることを減らしていたり、 いろいろできるけど言語仕様が原始的すぎたり pythonと同じ書き方ができて出来ないことがないのが理想
対象のプログラムやウィンドウが背面に行ったり最小化されててもちゃんと動くかどうかで選べばいい
対象プログラムが背面にあっても動くってウインドウハンドルにSendMessageを直接送る感じ?
windowsのアプリをバックグラウンドで起動して動かすようなのが出来たらなぁ マウス取られるから他の作業できないんだよね
WindowsをVMに入れるか、リモートデスクトップ複数人ログイン対応のWindowsならフォアグラウンドでも実質バックグラウンドにできるから困らなさそうだ Win32APIを直で叩きまくればバックグラウンドでも動かせるような気がしないでもないけど、イベント処理のメインループが回るかは謎だね。全然詳しくないや。
>>790 がメンテ性悪いとか言う人は
プログラマー向いてないと思うの
temp = min(input, upper_limit) output = max(temp ,lower_limit) これを合体させただけなんだけどな
関数化せずにインラインでそれ書いてきたらレビューでハネる
>>809 まあ適宜空白入れろよとは思う
a = max(min(a, _max), _min)
>>810 そもそもmaxの中にminがある時点で頭がおかしくなる俺の場合
import ctypes
SendMessage = ctypes.windll.user32.SendMessageW
hWnd = ごにょごにょ
pos = (y << 16) + x
SendMessage(hWnd, 513, 0, pos) # WM_LBUTTONDOWN
SendMessage(hWnd, 514, 0, pos) # WM_LBUTTONUP
>>806 こんな感じかな
どのみち、どう処理されるかは相手次第になってしまうけど
背面とか最小化とか、最悪トップに出てきたり
>>813 それは自動整形機能の仕事で人間が気遣うことではない
>>803 pyautoguiで一歩進みました!ありがとうございます!
>>810 その2行なら受け入れるけど合体させるのは意味はないじゃんって思うよ
関数名と変数名を工夫すれば良いと思う _付けるだけでそれを区別するのはちょっと
>>818 それは、+=や、f.write(','.join([若干長い内包表記]))が許されるかみたいな話とも繋がっていて、
ぶっちゃけ何度も出て来ればこんな簡単なのは1行にしたくなると思うよ
内包表記だって1行で書きたいから書くって側面もあるわけじゃない。
>>816 掲示板に書く時におまえが気遣えよって言う指摘だぞw
a = range_ni_osameru(_min, a, _max) どや!
def range_ni_osameru(_min, a, _max): return _min if a < _min else a if a < _max else _max こうかな!
>>823 俺なら
return _min if a < _min else _max if _max < a else a
って書くかな
行数というよりは、中間の変数を登場させたくない 合体させるにしても、後ろに繋げていく方式とネストを深くしていく方式があって、 ネストだとどうしても可読性を損なう
普段可読性重視だけどリスト内包表記だけは速度変わりすぎるから超複雑にしちゃう
100倍変わるなら考えるけど、倍程度ならどうでもいい
内包表記も+=も三項演算子もlambdaも、(言語設計者に対して)日和って半端なもん入れてんじゃねーよって思う。
ごてごて書けるラムダを入れないのは良心を感じるけどなあ
>>827 処理時間がめちゃ長くて100倍速くしたいならそもそもCythonとか考える
処理時間ちょっとイラッとするぐらいだったら内包表記で倍速くなれば十分なので内包表記止まりかな
サンプルコードがlambdaで書かれがちなのもあって その場で関数定義できるの知らずにごてごて書くケースよく見かける 悲しい
なるほどlambdaに関しては色々意見あるな。半端な知識で物言った俺が悪かったわ。
Pythonやるならまず「多重継承」な! なぜ多重継承かというと、自然言語処理において語句の意味は「文脈」によって異なるからだ! 随意筋 不随意筋 ↖ ↗ チンポ チンコの随意筋と不随意筋 http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650 https://mobile.twitter.com/daikidomon/status/1385368820240437248 土門大貴/Daiki Domon @daikidomon Pythonの多重継承がわかりづらい。 継承クラスの左のクラス名を指定とかあたおか。 https://twitter.com/5chan_nel (5ch newer account) >>827 30分かかるループの中心で何度も使われてたら
倍速になったら15分短縮出来るし
100分の1なら数秒で終わるんだが
>>828 内包表記: あり
+=: あり
lambda: あり
三項演算子: お前は遺憾
とりあえず読みやすいように書いて、速度で困ったら考える
>>837 =
内包表記? あり
:+= ? あり
:lambda ?あり
:三項演算子?お前は遺憾
:以下略
ということですね
C言語とかの伝統的な三項演算子と違って、 pythonのはなかなかいけてると思うけど
他の言語なら三項演算子は大好きなんだけどPythonだと異物感がある
並びが (Trueの場合) (条件) (Falseの場合) になるのが気に食わん
if <condition> then <val1> else <val2> も英語として不自然さは無い それを、?と:にするのは無理がある 冒頭からifで始まるとif文と区別が付かないので、少し倒置して、 <val1> if <condition> else <val2> も一応文として読める C言語よりはまし
通常のif文でも処理(結果)を先に書く新しい言語を作るか
プログラミング言語に英文的な自然さとか求めて無いんだわ 読む順と評価順が入れ替わってんのがセンス無いと思う
処理をifで修飾するというのは既にある elseは知らん
そうする合理的理由を説明すれば納得するものじゃないの? そういうのを聞きたいんだよ
英語だと if が後置されることもあるからなあ 内包表現は数学の集合の書き方からすれば普通 ラムダは lisp のラムダ関数から考えれば普通 一応理屈はあるけど
三項演算子だけじゃなくて、Perlみたいに後置ifを実装してれば違和感ないんだろうね (Trueの場合) if (条件) Falseの場合はなにもしないけど、Pythonだとpassがあるから三項演算子だけで十分って判断かな
そうか結構、式である三項演算子や内包表記やlambdaも受け入れられてるんだなぁ。そうなるとなんでmatchを式にしなかったのか。コレガワカラナイ
後置ifは文だから値を返す必要がない(=elseは不要)。三項演算子は式だから値を返すのに必要。 なんでこの2つを混ぜたような文法にしたのかなんとも不思議。
どこが変なのかわからん 俺の英語スキルが高杉なせいか…
lambdaといっしょでゴチャゴチャ書きづらいのが良心 実際は構文解析が楽だとか余計な()が不要とかあるんだろうけど
全部英単語でつなげるから、エディタで色変えたとしても見づらいってのはすごく感じる
import re str = 'abc123456defg' s = 'bc' m = re.search(f'{s}(\d{2})', str) if m: print(m.groups()[0]) \d{2}だと12が表示される \d{1}とか\d{6}だと想定と違う なんで?
そりゃ、想定が間違えているから、以外になんか考えられるのかい? 何を想定していてどうなったかも説明しないで、想定と違う!って 言われてもね、人に説明する気も無けりゃ教えを乞う態度でもないし 何したいの?日記ならよそでやってくれる?
>>> f'{s}(¥d{2})' 'bc(¥d2)'
まあまあ、お勉強スレなんだし未熟者同士で問題解決していくスタンスで良いんじゃないの
f文字列で¥とか/区切りの一部だけを取るような事出来ないのかな? splitしてスライスで取るのはどうも好かん
>>1 >>866 > ★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、 > ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止) > https://techiedelight.com/compiler/ Run Code機能あり。 > http://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 > http://pastebin.com/ まずまずシンプル。 > http://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 それも必要悪だな 貼った先が無くなった後でログを見た人に何の知見も残せない
>>876 >デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
一回 python を選択すれば、あとはずっと選択したpythonのままになりますよ
外部を利用する根拠がインデントの崩壊だけなら、崩壊していないのだから不要 なるべく単体で完結していた方がいい コードが長いとか、修正後のコードと比較したいとかになると、 さすがに掲示板の機能を超える
今更ここで議論する課題でもない この件はペンディングとして、運用時に自己判断でよいだろう
日付(○年○月○日 ○時○分)を抽出してクリップボードにコピーするのってどんな感じでやればいいですかね…
コピーはコマンドでできるから Windowsならcopy、Macならpbcopy テキスト抽出して外部コマンド実行するだけ
例えば、Ruby でクリップボードを使うなら、 あらかじめ、クリップボードへ「 あい 」を入れておいてから、 以下のスクリプトを実行すると、 文字列の前後にある、空白類が削除されて「あい」となる ただし、RubyはUTF-8 だから、Windows のCP932 と変換する必要がある # クリップボード内の複数行文字列の、各行の先頭・末尾から、 # 連続する空白類を除去して、クリップボードに入れる str = `powershell Get-Clipboard` str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換 ary = str.each_line.map( &:strip ) # 連続する空白類を除去する IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す clip.print( ary.join "\n" ) end
ググったらpyperclipって便利なモジュールがあるらしいよ 前レスから予想するにウィジェットの日付けをメモ帳に貼り付ける感じかな ウィジェットからのデータ取得はウィジェット作成時にStringVarを関連付けてget,setで取得すれば良い ログを残すならファイル入出力でやるべきではと思うけど
rubyの人最近見なくなったと思ったら また自己主張してきたな
千葉県は恐ろしい田舎なうえ、今もドンドン衰退してる最中。 でも、関東以外の人はそんなこと知らないから、東京の一部みたいな顔できるよ。
逆に考えることもできるよ。 電車一本で東京に出れる田舎って最強。 みたいな。
すみません、python超初心者なのですが
https://github.com/ihopenot/LpkUnpackerのpython LpkUnpacker.py /path/to/lpk outputdir /path/to/config.jsonのコードを使いたいのですが、何回やっても
python LpkUnpacker.py "C:\11302997995514316369.lpk" "C:\aaaa" "C:\config.json"
^^^^^^^^^^^
SyntaxError: invalid syntaxのエラーが出てできません。
どうかご教授の程よろしくお願いいたしますm(__)m
>>902 そのコードをpythonから読み込んでいますか?
>>902 SyntaxErrorなんで構文に間違いがあるんだけど、ここじゃ正確なコードが貼り付けられないから、自力解決を目指すか、外部サービスを利用してコードを晒すかしてください
>>902 ファイルパスの¥を2個つけないとエスケープ文字になるんじゃ
うろ覚えで関数名だけわかってるような状態で 関数の使い方がよくわからなくなることがある たまにドットが前に来るやつあるじゃん kansu(引数) .kansu(引数) aaa.kansu() モジュールがどうとかいう話なんだろうけど こういうのみんなどうやって覚えてるの?
組み込み関数は全部覚える そこに無ければオブジェクトのメソッド .sort()とsorted()みたいに両方にあったりもする
IDEを頼るのです ここかここがええんかと関数名をちょっとタイプしてみてああんそこはダメぇ(OKという意味)と出たシグネチャを使えばよい
>>902 LpkUnpacker.pyがあるディレクトリまで移動して
python LpkUnpacker.py だけでやってみて
usage:ほにゃららってでてるか?
https://mobile.twitter.com/yukiya285/status/1594225137171451904 ゆきや@創薬エンジニア
@yukiya285
機械学習の分野でPythonがよく使われる理由は、ざっくり言ってしまうと、理論の根底にある数式が理解できていなくても機械学習ができるから、ということになります。理論の理解は後回しにして、とりあえずいろいろやってみる、ということができるのがPythonということになります。
https://twitter.com/5chan_nel (5ch newer account)
理由が理由になってなくね? NumPyやsklearnのようなお手軽ライブラリが充実してることが理由じゃないのか
cをやろうがアセンブラをやろうが 誰かが作った技術の上でしょ スクリプト言語を使う1番の理由は生産性の高さだよ
Pascal なんかは プログラミング教育を意識して作られてたものだが 真逆の発送のツイートだな
>>913 どうだろ
俺は数学できるけど早いcが書けないからライブラリに頼れるpython選んだのが始まり
ライブラリとか言っても判らない人向けの説明なんでしょ
やってみるのはいいことだけど ライブラリ任せにするのは他力過ぎて草
ライブラリ最高や!ワイよりちゃんとした実装してるしな。ワイが書く必要なんて無いんや……… って気持ちになるから嫌い
ライブラリ任せにするのはダメな人はコンパイルはコンパイラに任せずに自分でやってるのかな...
もしかしてライブラリに使われてるcのソース読まない人たちばかりなのw
必要ならライブラリのソースも読むけど普通は読まんな
で
>>924 はコンパイラのソースを読んでるの?w
>>916 おめーらホント視野の狭いクズばっかだな
最適な言語を使うのは
プログラマの基本中の基本だぞ?
それとスプリプト言語使う仕事なんてのは
どんなバカでも出来る仕事であって、
それだからこそ、プログラマはスプリプト言語を使う機会は少ないのだよ。
おめーのようなバカは
プログラマ気取りの
ただのコーダーだw
半島ヘかえれよチョソ!
>>926 ライブラリの話からなんでコンパイラが関係してくるんだよ
それとコンパイラってソース公開されてたっけ?
読めるかどうか自信ないけど、公開されてんなら読んでみたい
>>928 > それとコンパイラってソース公開されてたっけ?
マジで言ってるのか?
そんなレベルでよく
> もしかしてライブラリに使われてるcのソース読まない人たちばかりなのw
なんて煽れるもんだな
>>929 どっちだと思う?w
ここではっきりさせないほうがあなたのためになるんだと思うよ
>>928 他人の書いたコード任せというのはコンパイラを使うことにも当てはまるからだろ
>>930 > それとコンパイラってソース公開されてたっけ?
なんて聞く奴なんてどっちでもいいわw
たまにPythonの実装(C言語)を読めるのが正義、みたいに思ってるやつおるけど 大抵の場合は読む必要は無いし、勉強がてら読むか、 ライブラリ使ってて気になる挙動(不具合の可能性があるやつ)に遭遇した時に 実装確認するぐらいじゃね?
最速を争う言語ならコンパイラの実装に寄せて速度を稼ぐのもアリだけど、Pythonでそんなことする意味は1㍉もない
>>927 生産性の高さという使い分けの話をしてるのに何を言ってるんだ
プログラマがPythonを使わないと言うならそうなんだろうよ
マ版に帰れよ
pythonのC実装ってPyObject*観たらおしまいやで
a = [0.2,0.6,0.1,0.3,0.9] b = ['A','B',C''D,'',E''] とあって、aを0.5以上ならTrue、違えばFalesの真偽値に変えて、 bからTrueのところだけ抜き出すにはどのように書けば良いですか?
a = [0.2,0.6,0.1,0.3,0.9] b = ['A','B',C''D,'',E''] c = [y for (x, y) in zip(a, b) if x >= 0.5]
>>943 リスト内でfor文とif文使うんですね
ググってそれっぽい感じではあったのですが
Rのノリで書けないかなと困ってました
ありがとうございました
>>942 numpy使えば直感的にできる
a = np.array([0.2,0.6,0.1,0.3,0.9])
b = np.array(['A','B',C''D,'',E''])
print(b[a>=0.5])
numpyとかpandasのループの処理を一言に圧縮してしまう書き方は流石だよな
>>945 うおお、凄くすっきりしましたね
直感で分かりやすい
ありがとうございます
b = b'\xfc\xfc\x8a\xbf\x8e\x9a' j = b.decode('sjis', 'ignore') print(j) ↑これと同じ書き方をC/C++もしくはGO言語で教えて下さい ようは、変換できないバイトは読み飛ばして残りを変換してくれればいいだけなんですけど、 調べても分かりませんでした。
スクリプト言語はマルチプラットフォームで高度な機能を使えるのが強みよね windowsならMutiByteToWideCharみたいなAPIがあったはず サクラエディタのソースコードみると良いかも
みなさま ありがとうございます。 エディタのソースコード、確かによさそうですね。 バイナリエディタとか凄い重いファイルでも一瞬で開くので実装参考にしたいですね。 理解できるか分かりませんが・・。 勉強してみます。
愚直に(lib)iconvで変換でいいんじゃない? 止まったら飛ばして変換続けるだけの単純な作業 それかiconvにかわる何かがあれば逆に知りたい
文字コードから文字コードへのmapがちゃんとしてないので、 文字コード変換は本質的に不完全
MSが変な実装したせいだろう 「~」辺りがおかしくなる
間違ったかなり後で修正したので、どっちもありというさらにややこしいことに
Ruby では、NKF を使う Iconvは、Ruby 1.9から非推奨
>>959 NKFを利用する理由とIconvが非推奨な理由を書かなければ、ここでは無駄なレス
Ruby では、UTF-8 がデフォルトなので、 そのバイナリをCP932 として入力・解釈し、CP932として変換・出力すると、 解釈できない文字はデフォルトで、? に置き換えられる bin = "\xfc\xfc\x8a\xbf\x8e\x9a" p bin.encoding #=> <Encoding:UTF-8> bin.encode!( 'CP932', 'CP932', :invalid => :replace ) p bin.encoding #=> <Encoding:Windows-31J> p bin #=> "\x{FCFC}\x{8ABF}\x{8E9A}" puts bin #=> �漢字
Pythonにボロクソに負けて悔しいRubyキチガイ Rubyはもう終わってるから出てくるなよ
てか今ruby使う意味あるの? どう考えても乗り換えた方がいいよね? どう贔屓目に見ても衰退していく一方でしょ?
Ruby on Railsは今でも生き残ってるのでrubyも使われていると言えなくもない そんなこと言ったら、perlだって今でもいろんな所で使われ続けている それらは今更新しいもので置き換えるコストもかけてられないし、 今後も使い続けられるだろうけど、新規で何かを作ろうとは思わない 単に保守され続けるだけ
とにかく動くサービスつくりたいならTSかRuby(Rails)と思うけどな べつにひとつの言語に縛られるわけじゃなしよくわからん
JavaScriptが1位を独走するようなサンプリング空間はどうでもいい
半島系帰化人のように ゲリ便をジュルジュルと食べる! おいしい!
最もライトな層まで含めると、VBAとかになるじゃない?
今の時代は、HTML・CSS・JavaScript がかなり使われているだろうなあ
うちのサイトは今でもhtml手書きだけど、自動生成でないhtmlなんてごく僅かだろう
開発現場で使われている言語で評価するか、 稼働しているシステム上の実行イメージ数で評価するか、 稼働でみると意外にCobolやFortranが浮上してきたりするかも ファームまで含めればC言語なのかな?(アセンブラは除くとして)
動いてる、で勘定するとJavaの35億なんじゃないの 新たにコードを書いている件数でないと
C#じゃないの Windowsマシン一台につき何十本単位で常時動いてるわけで
intel CPUのマイクロコードはもっと動いてるな 動いてる禁止
そうなると開発環境が入っていないPCは除外しないといけなくなる
>>964 ほんそれ
>>965 だから新規でわざわざ覚える必要無い言語のphaseになってるって話
過去に作ったperlのツールに機能追加とかしたくなった時に、 折角だからpythonに移植したりする 正規表現周りはperlの方が優れてる気がする
l = [0, 1 ,2 ,5, 7] n = 4 ln = [0, 1, 2, 4, 5, 7] 数値比較をして、prev <= x <= next位置に挿入する myInset()関数作りたいんだけど、ループと代入連打して泥臭く書いてくしかないですか? ちなみにリストは全部int型、重複あり、ソート済み 入力値もint型、既存要素と同値ありです
手順を守りたいならfindとinsertでしょうね
元が重複ありソート済みなら
>>988 で問題ないんでないの?
殆どソートされてるものをソートするコストは低そう やろうとするのはソート処理の一部を自前で書こうというもので、 既製品を使った方が簡単で速い
>>987 import bisect
bisect.insort(l, n)
リストに挿入ならこれ一発で
一見面白そうな話かと思ったが普通にappend後ソートしかなかった
こういう時は大抵、insort_leftみたいに専用のモジュール使った方がだいぶ早い
append後ソートは流石に無駄が多すぎ 上で答え出てるが木構造ベースのアルゴリズム使えばO(logN)で挿入出来る
速度に困りそうなときはbisect、一発動けばいいときはsortで済ませちゃうかもな bisectは標準モジュールだし、辞書でC++のmapのlower_bound/upper_bound相当のことをしたいときにも使えるから知っていて損はないと思うけどね 本当に速度を追求するなら、Pure PythonじゃないB treeとかを使いたくなるよね。 めんどくささは速度を追求するほど上がっていくから確かにどの程度速度で困っているかによってベストの実装は変わるとは思うけど。
read.cgi ver 07.7.25 2025/07/21 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20250924053130ncaID:0IYvIpx66のレス一覧: 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 最初に調べるキーワードが出てこなくて分からないことが多いので情報助かります
頂いた情報を元に解決する方向でやってみます。ありがとうございました。
>>169 >>173 複素数や四元数を使うのが割りとマジでお薦め
>>188 Ruby, Selenium でも、JavaScript を使って出来たけど、
ソースコードの何かの単語がブロックされるので、
ここには貼れないので以下へ
https://jsfiddle.net/w3anscm6/ 質問です
以下のプログラム(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)
何度も本(スクレイピング・ハッキング・ラぼ)見返したけど間違ってないんです…
お願いします
https://ideone.com/vADQwg for i in range(1, 100) で 99 回 next を呼んでいるのに、なぜ 79 で終わってしまうのですか?
>>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を使いました。 ほぼ素人ですみません。
コードじゃなくて食わせるデータがおかしいんでないの
「python toml decoder duplicate keys」で検索!
TOML ファイルの形式になっていないとか?
ファイルがBOM付きUTF-8 になっているとか?
Python は、BOMなしUTF-8 じゃないの?
https://git.cardiff.ac.uk/c2021544/blogg/-/blob/abf082d45bcacad0728c2a03e91baf103046eba9/venv/lib/python3.6/site-packages/pip/_vendor/toml/decoder.py このファイルの781, 783 行目に、raise ValueError("Duplicate keys!") がある
>>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 まぁ、こんな状態でスクレイピングとかアホかって感じだけど
>>272 だけど今試したら3.10.8インストール出来た
https://www.python.org/ftp/python/3.10.8/amd64/ のフォルダの属性設定を間違えてたらしい
よって
>>273 は昨日の時点ではインストールしてないとすぐに分かるんだね
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
かな
文字の挿入は総数がつじつま合うようにもっと工夫が必要だな まあ頑張ってくれ
>>310 >>311 ありがとうございます。
試してみます。
>>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 ありがとう
このソートって思ったよりも難しいな
ツリー構造は理解できねえわ
>>299 https://ideone.com/b6vqgk すごーく分かりづらいけど、2種類に分けて導き出した
区切り文字中心に考えたのに、そこで処理を分けてない体たらく
あと、同じ文字は出来るだけ遠く?は難しかった
〆切ってそうな話題ですまん、Python覚えたくてやってみた
質問です。 vscordとpycharmと他のパイソン系なのですが 「マルチグラボ」対応してるのを探してます。 お勧めはありますか?
Windowsで作成した画像を外付けHDDに保存する。 ※macとWindows共通で使えるFAT32使用 それをmacPCのpythonのglobで画像のパスを読み込んだ時に 「バスケ」や「ポケモン」などの濁点と半濁点の検索ができません。 ※printで中身を見るとあります。 原因や対処方法がありましたら教えて下さい。
あれはあれでunicodeなんだよな 統一できてない
>>335 ありがとうございます。
うまくできました。
>>299 これ貪欲法で解ける??
解けるならAtcoderのCくらいででそう
Mac は「ハ + 濁点」「ホ + 半濁点」に分割しているのか 1文字にまとめるのが普通
昔からそうだったとかでもないのに デファクトスタンダードに合わせるのは嫌というイキりたいOSの性格が現れている
半角カナを全角に変換した時に 文字数が変わるのを許容できるかという問題
>>299 https://ideone.com/7qVDRD 内包表記とスライスを使ってみた
・・・Pythonヤバすぎる、便利すぎる
単純な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には何が入るんでしょう?
test = set(...) は
https://docs.python.org/ja/3/library/stdtypes.html#set-types-set-frozenset なんで置いといて中身の話だけど
A['A1'] の所を一時的に C B A と順に3回置き換えて動かすとみえてくるかも
>>346 バラす場合は test = set(A[‘A1’] for B in C[‘C1’] for A in B[‘D’] ) ここでバラすってことですかね? レス:1-200 201-400 401-600 601-800 801-1000 ALL
このスレへの固定リンク: http://5chb.net/r/tech/1663235546/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Pythonのお勉強 Part68 YouTube動画>1本 ->画像>6枚 」 を見た人も見ています:・洋画・海外ドラマで英語のお勉強 Part17 ・ニートだけど資格の勉強始めたら毎日がすごい充実してる!お前らもやれば? ・【Xデー近し?】経団連お墨付きの日経新聞も「対韓強硬論」を報じてしまう ・【TBS】みだらな青ちゃんは勉強ができない→ひとりぼっちの○○生活→Oh!ベイスターズ2019★2 ・夜勤俺「仕事落ち着いたしクソ底辺職場から脱出する為に資格勉強でもやるかな(バサっ」先輩「ちょっといい?」 ・勉強机をパソコンデスクにするのってダサい? ・【確定申告】経費ってどこまで経費にしていいの? 勉強の為の風俗も経費にしてオッケー? ・【乞食速報】Yahooショッピングで1万円以下のイヤホン20%オフクーポン コスパ最強のやつ教えろ ・【ボクシング】WBO世界ライトフライ級タイトルマッチ 田中恒成、初防衛成功!12回判定勝ち、最強挑戦者との無敗対決制す ・【経済】ポケモンGO開発者が明かす次なる展開はポケモン育成機能強化と新たなキャラクター追加 目下の課題はサーバダウン防止とバグ修正 ・一流企業就職のためにTOEICの勉強してますか? ・【戦争】昭和天皇とサヨク工作を勉強するスレ ・バカが楽典勉強してるがト音記号の意味がわからない ・なんでSONY信者ってSwitchの携帯できるという強みを理解できないの? ・ 【悲報】 海外にはドラゴンやフェニックス、グリフォン等の強力な幻獣がいるのに日本にはいない。 ・【九州豪雨】稲田防衛相、「政務」(民間との勉強会出席)を理由に自衛隊の豪雨対応中に一時省内を不在に★11 ・毎日勉強もせずに野球やってるガキが掛け持ちエンジョイ勢の海外に全く勝てないっておかしくねーか? ・松本人志、日本吃音協会の抗議に「お笑いを勉強してほしい。悪意を持っているわけではない」★2 [muffin★] ・【朗報】最強お絵描きAI登場で絵師様(笑)全員失業でハローワークへwww案の定嫌儲のワナビ絵師様も大発狂www★2 ・【東京五輪】「オリンピック強行は無謀すぎ」ひっ迫する医療の現場から怒りのNOサイン [砂漠のマスカレード★] ・【テレビ】<ますおか岡田>「4年前のことなのに」強制わいせつで書類送検の初鹿議員を擁護?『ゴゴスマ』が炎上! ・刺殺されたライバーの“婚約者”がYouTube開設も強制削除、問題視された“動画の中身”とチャンネル名 [おっさん友の会★] ・【サッカー】バルセロナ会長「誰かと契約するお金がない」 レバンドフスキ獲得断念か 来季強化計画も白紙 [久太郎★] ・【サッカー】アジア杯 豪州がグループ首位突破 ウズベクと1-1ドロー、日本3位抜けなら16強で激突の可能性も [久太郎★] ・【朗報】#ババババンビとかいうアイドル界最強のおっぱいグループwwwwwwwwwwwwwwwwwwwwwwww ・【DHC会長】日本を支配するコリアン系は頭が良いのではなく、猛勉強し良い大学に行き大企業に就職してるだけ。日本人の方がずっと頭は良い [ネトウヨ★] ・【競馬】ドバイターフ(メイダン・UAEG1) 日本の最強馬ドバイでも!アーモンドアイ(ルメール)直線抜け出し完勝!ヴィブロスまた2着 ・【英語のお勉強】歌詞を日本語に訳してみるスレ 2 ・【ZETA最強】Stylishnoob part2974 ・【最強三輪】ジャイロ総合【HONDA】part19 ・【PS4/PS3】Grand Theft Auto Online強盗専用★19 ・韓国LG、HEPAフィルタと紫外線殺菌を搭載した史上最強の「マスク」を発表 ・ハマる人続出!『ザ・ファブル』のTwitter広告が最強なワケ [鳥獣戯画★] ・新形式問題のTOEIC受験票キタ。あと10日間で100点upしたいけど何勉強したらええの ・【希望の党】小池氏どう説明する?希望公認候補に「性的関係強要」報道 18年前に和解成立 ・元和食料理人「寿司を1ヶ月勉強しただけで予約半年待ちの店を作れてワロタw」 ・【毛髪強盗】ハゲ「髪を出せ」3人組がかつら工房を襲撃し、かつら200kgと材料の毛髪を強奪 ・【インフラ】首都圏震度5強 都市基盤、脆弱さ露呈…10年前の教訓生かせず [ramune★] ・【千葉】「よーし、強風の中でBBQするぞー!」→風下側のお家11軒が全焼★5 [和三盆★] ・【USA】ラッパーXXXTentacion(XXXテンタシオン)を射殺した男(22)逮捕 車強盗の前科 ・必死に受験勉強して高い学費を6年間も払って、それで就く仕事がマツキヨでガスター10を売る仕事か? ・【癒着・横暴の末路】阿波おどり15万人減 1974年以降最少の人出 問われる市長の責任 ★2 ・三大情強気取りの好む用語「ネットブック」「メトロUI」「ガラホ」「IT化」「WindowsPhone」 ・本日は、シャインポストHY:RAINの実質TOP、苗川柔ちゃんのお誕生日です!最高のライブを楽しもう! ・ゆたぼん覚醒YouTubeライブで「高校受験勉強ライブ配信します。中卒とか恥ずかしいから絶対高校行く」 ・【朗報】ネトウヨに強力な援軍が登場有名タレントが自民党・武藤貴也を援護「パンドラの箱を開けたい」 ・【動かぬ証拠】完全純日本人の市民団体代表が「朝鮮人強制徴用工1万人」と記載ある三菱重工社報公開へ ・【自作自演】元アイドリング菊地亜美がイケメン会社員とのお泊り熱愛をフライデーに自ら売り込んで掲載させる その9.9 ・【サッカー】日本のサッカー文化は絶滅寸前!?『スパサカ』放送終了に涙「地上波おわた…」★8 [幻の右★] ・【テニス】大坂なおみ 逆転で2年連続ベスト16進出。相手の揺さぶりにミス連発も見事立ち直る[全豪オープン] ・【WhatsApp使お】LINE、利用者7800万人の通信履歴や連絡先データ等を基に「信用スコア」を算出、貸金業を開始へ★2 ・小さいスマホがほしい、でもiPhoneはいやという我が儘なあなたに 片手サイズの「Xperia Ace」がiPhoneよりお得な価格で ・【沖縄】「ヒトの肛門周辺には平均0・14グラムの便が付着」 生理中のプール授業は強制? 医学、人権上問題は?★3 ・【<#`Д´>】 「父の強制徴用の恨だけは晴らしてほしい」…三菱裁判で読み上げられた手紙★2 [07/24] [荒波φ★] ・日本人「お前の不幸が俺の幸せw」外国人「The only thing that really matters is your happiness! ;)」 ・【速報】ケンモメン御用達オーディオブランドBang & Olufsenから、全てを過去にする最強の完全ワイヤレスイヤホンが登場 ・【サッカー】<日本代表に迫る起用再考のデッドライン>現状ではアジアの強豪に通用せず…ボールロストを繰り返す中島翔哉ら固定の危険性 ・医者「10年間必死に勉強して、手術の失敗と訴訟リスクに怯えながら年収1500万って安すぎだろ!自由診療させろ!」👈何て答える? ・【徴用工問題】韓国政府が韓国企業だけの寄付で弁済推進 徴用被害者側「強く反対」「完全な外交的敗北であり惨事」 [12/26] [昆虫図鑑★] ・「つばきファクトリー 10th Anniversary Live Tour 2025 Spring ~OUR DAYS GO ON~」FC先行受付のお知らせ ★2 ・【奈良】新平民が“神武天皇陵”見下ろす 橿原・洞集落移転から100年…「強制的だった」 部落解放同盟の三宅さん研究成果、発表 ・【超難関】医師免許、弁護士、公認会計士、電験一種、ITストラテジスト、英検1級、アクチュアリー。お前ら、どの資格が一番欲しい? ・昔のiPhone信者「このサイズが丁度いいAndroidはデカすぎる」Apple「大きくしたやで!」信者「うおおおお!!!!最高!!!」 ・【安倍政権】 ベトナムに巡視船や取締船をODAで供与 中国との南シナ海領有権問題で防衛力強化へ フィリピンにも自衛隊の訓練機供与検討 ・【サッカー】本田圭佑に辛辣批評!バッシングの嵐「お粗末な内容だったが、先発起用は失敗だ」「存在が希薄」「ファンも罵声を浴びせた」 ・【文春】被害男性告白「クリームをお尻のほうに塗ってきて…」ジャニー喜多川氏はスタッフも襲っていた ★5 [Ailuropoda melanoleuca★]
16:31:34 up 11 days, 13:40, 3 users, load average: 100.30, 128.15, 125.65
in 5.2475969791412 sec
@[email protected] on 092405