くだすれPython(超初心者用) その34 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その33 http://echo.2ch.net/test/read.cgi/tech/1490424742/ >>54 IDLEのshellじゃなくてFile→New Fileでエディタ起動してコード書き込んで保存してF5押せばいい >>55 エンター押しても空行になりませんでした... そもそもコマンドプロンプトで出来ないコーディングとシェルでしか出来ないコーディングがある時点でパンクしそう.. >>56 EmEditerでやったら同じソースなのに今度はユニコードエラーが発生 もうわけわからない... あ、new fileでやったら動きました ありがとうございました... 失礼しました >>22 OKだよ >>45 それは仕様であって>>17 が考えること >>57 エンターを押した時点でforループが実行(完了)される。 >>> for a in [1,2,3,4,5]: ... print(a) ... 1 2 3 4 5 >>> print("こんにちは") こんにちは プログラミングやるならエディタで作成したファイルの文字コードは認識しとかなきゃダメ。 とりあえずUTF-8選んどけ。 ってか、>> ID 8pr90v8J は Android 5.0(Lollipop)を搭載したNexus 5 使ってるのか……。 >>63 emEditerのユニコードはshift-jisで動きました。 あとemEditerもIDLEも、空行なしでも動きました。 バージョンアップしてたらAndroid™ 6.0か…… どちらにしろ誤爆なので、見なかった事にして下さい お前、流石にその(画像は)引くわぁ〜 音楽もアニソンばかりだし、せめて水樹の曲入れるなら、田村の曲ももっと入れとけよ 花澤の再生回数だけ異様に多いな 誤爆 携帯の解像度から機種を特定→別スレから大学生と推測→携帯の販売時期を検索 →大学3〜4年と推測→ちょうど、nexus7 2012の修理方法を調べてた →正規復元方法を試す→不可→バッテリー交換しても電源が入らない→充電口の破損を確認→スイッチの異常か 基盤の異常かどちらか迷ってる→強い衝撃を与えたと聴いてる→どこスレで聞くか迷ってる間にアニソンすれに書き込み かと、思ったが、まさかのアニソンスレと誤爆 プロジェクトごとにパッケージ分離したくてvenv使うとこまでは分かったんだけど どういう名前でどこに置くのが一般的? みんなプロジェクトのルートに「env」とかでおいてるんですかね l がリストのとき、 if e in l: を多用すると極端に遅くなるんですけど、もしかして、線形探索して探していますか? s = set(l) if e in s: としたほうが速いですか? もしそうだとすると、自動的に if e in l: と書いたとき、 l を集合に変換して検索してくれればいいのにと思うのですが。 >>76 listをいちいちsetに変換したら、単純に線形探索するより時間がかかるからね。 最初からsetで持っておけば? setは順序を保持しないから、テストケースで失敗する事も有る 最後に結果をソートしても良いなら、気にしなくて良いんだけど……。 >>78 順序を保持しないコンテナのテストで順序をテストしようとしてるのがそもそもの間違い 素直にソートしれ >>76 listはハッシュ値を返せないオブジェクトも入れられるので集合変換の条件満たせない 検索重視ならOrderedDictがいいんじゃない?(それかサードパーティ製のorderedsetとか) >>82 OrderedDictをどうやって使うつもりや?言うてみい? >>77 なるほど。納得しました。 ありがとうございました。 >>77-83 みなさん、ありがとうございました。 Philip N. Kleinの『行列プログラマー』を読んでいて、はまっています。 M は行列を表わすクラスのインスタンスです。 M.D == (M.D[0], M.D[1]) M.D[0] は行列 M の行のインデックスです。 M.D[1] は行列 M の列のインデックスです。 M[i, j] で行 i、列 j の要素にアクセスできます。 M.D[0] == M.D[1] で、行列 M は対称行列です。 ↓の二つのプログラムは、同じ動作をすると思ったのですが、 (1)は正しく動作せず、(2)は正しく動作します。 なぜだかさっぱり分かりません。なぜ(1)と(2)で異なる動作をするのでしょうか? (1) S = set() for i in M.D[0]: ■■for j in M.D[1]: ■■■■if i == j: ■■■■■■continue ■■■■elif i > j: ■■■■■■t = i ■■■■■■i = j ■■■■■■j = t ■■■■S.add(((i, j), M[i, j])) L = list(S) L = sorted(L, key=lambda e: e[1]) (2) S = set() for i in M.D[0]: ■■for j in M.D[1]: ■■■■if i == j: ■■■■■■continue ■■■■elif i > j: ■■■■■■S.add(((j, i), M[i, j])) ■■■■else: ■■■■■■S.add(((i, j), M[i, j])) L = list(S) L = sorted(L, key=lambda e: e[1]) ループ変数の値をループ内で変更するとまずいとかそういうことはありますか? もっと問題をシンプルにしてみましたが、やはり理解できない現象が 発生します。 なぜか(1)と(2)で結果が違います。これは同じになりそうですが。。。 (1) S1 = {1, 2, 3} S2 = {1, 2, 3} for i in S1: ■■for j in S2: ■■■■t = i ■■■■i = j ■■■■j = t ■■■■print((j, i)) (2) S1 = {1, 2, 3} S2 = {1, 2, 3} for i in S1: ■■for j in S2: ■■■■print((i, j)) (1)の結果: (1, 1) (1, 2) (2, 3) (2, 1) (1, 2) (2, 3) (3, 1) (1, 2) (2, 3) (2)の結果: (1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3) iを内側のループで書き換えているのだから、当然そうなる。 >>86 尼のレビューがひどいけど、線型代数はプログラムと別に学んだほうがいいぞ pyautoguiを使った作業の自動化について教えてください。 以下の作業の自動化を試みています。 1.あるアプリケーションでファイルを読み込み、処理を行う →2.(処理を終えるまで待つ) →3.次のファイルで同じことをする(以下繰り返し) 2.の段階では現状、ファイルのサイズに合わせてsleep関数で調整していますが、 それだと、ちょっとした処理の遅れでタイミングが狂ってしまい、 以降の動作がうまくいかなくなる問題があります。 処理が終わって「クリックやキーボードなど、操作できるようになったよ」という 状態を認識する方法ってありますか。 対象プログラムの実装によるから汎用的な方法はないですな 解決法としては、どんな(余分な)処理をしても、あり余るsleep時間を設けてループさせる 処理終了後に画像やメッセージを呼び出して、認識させてから次に移る(フラグの受け渡しとか?) どんな処理か具体的に上げてくれないと解らない >>98 処理の内容は、ほとんど上記に書いた程度です。 音源から指定周波数の音を抽出するアプリがあり、 アプリ上のあるボタンをクリックすることで変換作業が行われます。 そこで新たに変換後ファイルが生成され、同時に10秒ほど処理待ちでフリーズ?して、 操作可能になったら次のファイルへ移ります。 >処理終了後に画像やメッセージを呼び出して、認識させてから次に移る(フラグの受け渡しとか?) こういう方法ができればいいとは思ってます。 sleepで稼ぐのは必要以上に時間もかかるし、確実ではないので・・・。 「フラグの受け渡し」というのは、例えばどんな処理なのでしょうか。 サンプルコードとかってありませんか。 >>96 使ったことないけど、スクリーンショットを撮って、その画像を解析するんじゃないかな? https://pyautogui.readthedocs.io/en/latest/screenshot.html locate でスクリーンショット内から特定の画像の位置を探せるから、例えば有効状態になったボタンを周期監視で探せば、読み込み完了が分かるでしょ? >>99 変換後のファイルが解っているならそれを待てば良いのでは? その後のスリープが十分な時間をおいてもそこそこには短いのではないかな? 本当はアプリ側から終了に関する何かができるのが良いけど フラグファイルを削除、shellでアプリを実行、shellの最後にフラグファイルtouch py側はフラグファイルができるの待ちなんてのは? winならHiMacroEx使って、マウス操作と(ファイル選択時に)キーボード入力したら良いと思う 一定隔離空けとけば、なんとかなるよ。 どうしても、pythonで実現しなければ行けない理由が有るなら教えて (つд⊂)ゴシゴシ プログラムより先にフリーソフト頼ったほうが良いと思うよ(個人的にだけど……。) python3 ファイルりね-む 拡張子を維持したい https://ideone.com/6EYAMA どなたか、分かりませんか? よくわからんけど os.path.splitext使うんじゃなくて? どう置き換えたいのかわからんし、コメントの「拡張子を表示している」の意味もわからん >>101 一つの手かもしれません。試してみようと思います。 >>102 似たようなことかもしれませんが、 最初考えていたのは変換ファイルが生成されるディレクトリのファイル数を監視して、 ファイルが増えたら次の処理へ進む、ということを考えていました。 しかし、プログラム処理中にディレクトリを見ていると、 「変換処理」ボタンを押して、処理が完了するまでに一旦ファイルが生成してしまうんですね。 しかし、画面上ではまだクリックとかは受け付けられない状態なので (例えばその状態でクリックすると、重いときによくある「プログラムが応答していません」となる)、 結局待機時間が必要となるようです。 最後の2行、もう少し詳しく教えていただけませんか。 理解しきれてなくて申し訳ありません。 >>103 目的は自動化処理の勉強でもあるので、 できる限り自分でプログラムを組みたいという意図はあります。 ただ、たまたまpyautoguiの存在を知ってpythonに手を出した部分もあり、 正直他の言語で対応できるなら、そちらを選択するのもありだと思っています。 よく使うOSはwindowsなのですが、 例えば、windowsプログラミングの知見があれば 今回のような状態を認識することとかできるのでしょうか? 悩むより、触ってみることの方が大事かもよ おちんちんについては。 Windowsで他のアプリを自動運転したいとき 俺ならUWSC使うな ボタンの状態なんかも読み取れるぞ >>106 110ではないがmacやlinuxならsikuliと言ったところか アプリ側が連続処理中ではちと無理だね 一回一回変換するなら無関係なファイルをバッチなりで作れば良いのだがどうもイメージしている感じが違うようだ。 役に立てずすまんね >>111 誤って解釈していたらすみません。 「変換は一回一回」というのは間違っていないかと思います。 あくまで、ファイル読み込み→変換ボタンをクリックという操作を pyautoguiにさせて、処理待ちフリーズ(といってもマウスは動かせますが。クリックを認識しない状態)が 終わるまで時間を稼いで、またpyautoguiで操作する、ということの繰り返しです。 そういう意味では、連続的に動いているのはpython側のプログラムだけで、 変換アプリ側は作業の待機状態になっている・・・ということです。 「無関係なファイルを作る」というのはどういう意図なのでしょうか。 とにかく、上記の「カーソルは動けるよ、けど画面上のアプリ操作とかは受け付けないよ」という状態を、 python側に強引にでも認識させることができればいいのですが・・・。 >>112 名前つけ忘れました。 また、 ×:「・・・」という状態を、 ○:「・・・」という状態が解除されたことを、 でした。 >>112 変換ボタン処理中になんらの変化があるなら、変化=処理中って事ですかね? 何にしても「意識できる違い」を作るなり見つけるなりしないと。 そしてその違いをpythonで見分ける方法を知れば良いと思うけど 正直uwscやsikuliを使う方が素直に「自動化」だと思う 元々これらのソフトはGUIの自動化ソフトウェアなのだし で、私から諸先輩方に質問が PILを使おうと思ったらPILLOW?なるものも候補に出てきました これは今後どちらかに統一される過渡期で両方出てくるのですか? >>115 >変換ボタン処理中になんらの変化があるなら、変化=処理中って事ですかね? >「意識できる違い」を作るなり見つけるなりしないと。 >そしてその違いをpythonで見分ける方法を知れば良いと まさにその通りですね。 例えば今思ったのは、いわゆる疑似フリーズ中に新規ファイルサイズが変化(増加)しているなら、 変化が止まったら次の処理へ、なんてことが可能かもしれません。 他には、python側でボタンを表示しておいて、 クリックを検出したら=ボタンを押せたら、次の処理へとか、 この辺りを試してみようかと思います。(うまくいくとは思えないのですが。) uwscは使ったことがないのですが、 こういった問題は対処可能なのでしょうか。 超初心者スレなのに、自動化ソフトの名前が次々出てきて為になるなあ 自分で処理部分も書くんなら、処理中フラグ作って、処理の直前でtrueにして終わったらfalseにする。 GUI自動化の方はそのフラグ見てfalseならボタン押す処理を書く。 ってか、そう言う処理はコマンドの方が向いてるんだが。 >>116 118氏同様、コマンドラインで1ファイルずつ変換するならば、コマンド呼びで…とも思わなくもないが GUIでこういう作り方を目指した…と言われてしまえばそれまで 環境やバージョン、使用ソフトウェア他、情報を全部提示するまでは 私以外は答えがないと思った方が良い>気まぐれはあるかも知れないが それと、私はpython初心者だから、方法論は答えられてもpythonとしての答えは難しいと思ってね pythonな御歴々のアドバイスを貰うに、質問者として情報不足している 最低限使用しているソフト名と動作時の状況が見える情報を添えて「ここがこう」程度の具体的提示は無いと… で、PILとPillowはちょっと理解。PILが古く、新しいのがPillow(PIL Fork)。 しかもPillowは今後注目のSIMD版なんてのもあるらしい >>119 多分変換するアプリは質問者が作ったんでなくて既存のアプリなんでしょ だからわざわざGUIにしたわけじゃないと思う だったら、GUIの自動化ツールを探すよりは、コマンドラインで実行できる変換アプリを探す方がマシな気もするけどね ただ、GUIのツールを自動化させると見た目的にカッコいいのは分かる なんでや全部コマンドラインでやったほうがスマートでかっこいいやん 銀行にお金入ってても現金で下ろせないと不安になるだろ? それと、同じだよ >>123 それは、分かる人には分かるかっこよさ 初見はグラフィカルな方がウケるんだよ >>96 >1.あるアプリケーションでファイルを読み込み、処理を行う >→2.(処理を終えるまで待つ) >→3.次のファイルで同じことをする(以下繰り返し) シェルスクリプトで書くと、必ず順番に実行される。 コマンド A; コマンド B; コマンド C; もし、これが並列に実行されると、プログラミングが難しすぎて、出来なくなるから、 わざと、並列にならないようにしている だから、Pythonからコマンドを呼べば? 処理は直列になる nums = [0,3,4,5,7,9] このリストに含まれない数字を探してappendしたい。 リストを埋めるだけなら見つけたのですが・・・。 for i in range(10): ○if not i in nums: ○○nums.insert(i,i) 答えというより考え方が知りたいです。 よろしくお願いします。 >>129 そのスクリプトを解説して欲しいってこと? >>129 宿題か何か? そんな処理に意味があるとは思えんが。。。 9以降はずっと無いから永遠に追加し続けておk? 9までだったら1から9までのリスト作ってXORしたら含まれてない数のリスト出来るんで、結合してソートとか。 ここ最近配列まわりの質問してる人でしょう 残念だけどプログラム(を学ぶということが)向いてないと思うので、早めにあきらめた方がいいと思うけどなあ for n in range(10): __if n not in nums: ____nums.append(n) あるいは temp=[] forループしてtemp.append(n) かな >>132 `sono,ko-do,bimyou for i in range(10): i wo 10 kai 繰り返す ○if not i in nums: not ない in 入って nums=複数の値 ○○nums.insert(i,i) noms に insert()=要素の挿入 inser(i,i) i番目 ni 変数iを挿入 基本的に間違ってる 違う関数をすすめる set を使u? x=[3, 4, 3, 2, 5, 4] y=set(x) # [2, 3, 4, 5] print(x,y) ary = [0,3] for i in 0..3 puts ary.include?(i) end Ruby で書いたけど、i は、0〜3 だから、0,1,2,3 の順番に渡ってくる。 配列の中に、i があれば真、無ければ偽 結果は「真,偽,偽,真」の順 >>129 ああ、分かった。 含まれてない数のリスト作りたいのね。 んじゃ>>131 の通りXORするか、>>132 のnums.append(n)をループ前に新しいリスト作って、そいつに対してappend(n)すれば良い。 >>132 や>>129 のif n not in nums:は、numsにnが含まれてるか走査してるからね。 range(10)で0から9までの10カウントしてて、>>129 では、たまたまnumsが0から始まってるから同じiが使えてる。 違う数字から始まるなら、その分+1とかすれば良い。 >>132 確かに>>129 から自分で気付いて改造出来ない時点でヤヴァイね^^; プログラマの道を諦めたおいらより才能ない。 a not in b # a が b に含まれない ifで 含まれてないなら実行 not in ではなく in なのか? 普通に勘違いしてたw 重複削除ではなく、重複を検索したいのかww warui,warui kore,paiza mondai,dana ganbare ちょww たくさんありがとうございます。 >>135 そういう説明が欲しくて質問しました。 私の書き方が良くなかったです。失礼しました。 それを見ながらコードにしたいと思います。 念の為、宿題、配列の質問してた者、paizaでもないです。 スクレイピングが出来るようになったので基礎をしっかり身につけたいなと思って 自分に貸した問題です。そしたらわけわかんなくて・・・www ありがとうございました。 うーん。。。 if i not in nums:を見つけた時点でほぼ答え出てると思うが。。。 バッチリ自分の探すコードと同じのって普通なかなか見つからんと思うのよ。 んで、数字を埋めてるって事は、数字の有る無しを判定してるって事で。。。 どのコードが自分の作りたい機能に使えるかを見つける為にも、探したコードは読める様になった方が良いよ。 前Javaスレで出会った人もそうだが、最近の子は物事を分解して組み直すって思考が苦手なんじゃないかと思えて仕方ない。 (GUI関係のコードとロジック部分のコードを分けて考えないで質問して来た) >>140 コードが読めないわけじゃないです。私、前スレの886で他人のコード読めるサイトがないか尋ねた者ですが、 誰かのコードを部分的に理解できるぐらいの知識はあります。質問をコードで答えてもらってもそれを理解できます。 しかし、いざ自分のしたいことをコードに表現が出来ないんです。書く前に頭で組み立てられない。 それゆえ、当てずっぽうにipythonに打って探してしまいます。 考えるときに手順を言葉で追っていくんですが、私以外の人はどうやって考えてるのかを知りたくて129の質問をしました。 ここだと言葉で説明してくれますから。 >>141 答えが知りたいんじゃなくて、学びたいのなら、まずは自分がどう考えたかを教えてください。 あなたの頭の中を晒してくれないと、適切なアドバイスも出来ないよ。 >>141 うーん? 当時のおいらみたいにプログラマになりたいだけで、作りたいものがなかったならともかく、作りたいものがあるんなら紙に書き出すなりして考えまとめれば>>129 なんてpythonみたいな便利機能の無いBASICでも二重ループとifで同じこと書けると思うんだが。 じゃあ>>129 はその処理をどうやって作りたいと思ったんだ? 作りたいものが画像処理とかバイナリの構造知らなきゃ作れない様なもんじゃ無いから、作り方を考えれば作れるべ。 本を読まないから、分からない 「たのしいRuby 第5版、2016」を3回読めば、たいていの事は書いてある。 それを読めば「みんなのPython 第4版、2017」も楽に読める。 この2冊は、表裏一体だから Rubyで書ける事は、Pythonでも書ける。 ただし、Rubyの方が簡単だから、学ぶのはRubyで学んで、 それからPythonへ翻訳すればいい 単独でPythonを学ぶよりも、Rubyで考えて、Pythonに置き換える方が、簡単 .gitignoreってファイルを上方向に検索する方法ありませんか? たしかループで親ディレクトリを辿ってファイルの存在を確認するとかそういうコードを書かなくても 標準ライブラリで出来た覚えがあるんですが思い出せません >>141 もう少ししたら仕事行くんで直接相手は出来ないが、>>143 の言う通り頭ん中晒してみれ。 おいらの言葉がキツかったんだろうが、>>143 辺りが懇切丁寧に指導するやろ。 おいらも明日帰ったら、突っ込み入れるし、おいらなりの頭ん中晒すから。 >>141 in → blackbox → out まずこう考える 次に blackbox をさらに砕いて in → (in → blackbox → out)#入力を展開 (in → blackbox → out)#処理を実行 (in → blackbox → out)#結果を整形 → out 頭の中でこんなふうにする。 最後に具体的なコードを書く。 回答ありがとうございます。 >>118 , >>119 , >>122 122さんの推測通り、変換ソフトは既存の市販ソフトです。 ですので、GUIで操作せざるをえないのではないかと・・・。 先にも書いたように、どうしてもpythonで、 というこだわりがあるわけではないですので、 違う方法も模索しようと考えています。 例えば、既存のソフトをコマンド上で操作することって、 技術的に可能なのでしょうか。 必要な知識を教えていただければ、勉強したいと思っています。 もはやpythonスレの範疇ではないですが、ご教示いただければ幸いです。 >>150 そのソフトが何かを教えてくれないと、誰も分からないと思う >>146 Rubyのコード汚いから帰ってくんない? ぶっちゃけこういう民度の低さのせいでRubyって言語自体に負のイメージ持ってる >>147 ごめんなさい。全然何を言ってるのか分からないです ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる