【まず1嫁】くだすれPython(超初心者用) その56
■ このスレッドは過去ログ倉庫に格納されています
当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。 「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合★は、 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式◇ http://www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その55 https://mevius.5ch.net/test/read.cgi/tech/1633070807/ 次スレたては >>985 あたりが挑戦する。 ### END OF TEMPLATE ### >>396 あ…、なるほど。それも確かにありますね…。 権限付与とか、Ubuntuでは関係ないので、 apk作成してから実際に確かめるしかないんですかね…。 やってみるしかないじゃなくて普通にAndroidの権限付与調べればいいじゃん numpyみたいに左辺値にも数値を取れるようなスカラー倍の実装ってどうやればいいんでしょうか? ↓みたいなものを実現したいです vec = Vec3d(1, 2, 3) vec = 3 * vec vec * 3は普通にVec3d.__mul__()を書けばいとわかりますが… >>401 後学のために知っておきたいんだが、rmulが素直な性質を持っていない場合(たとえば、s * vecでsが3の倍数のときだけベクトルの要素にすべてsinが適用される)、 3 * 4 * vecの評価順ってどうなるの? 12 * vecになるか、3 *(4 * vec)になるかで結果が変わってくるよね? 優先順位が同じだから左から処理されて12*vecになる。 >>404 サンキュー! 八元数なんかだと結合法則成り立たないから実装には要注意だね んなもん使わないけどw '2022-03-01'という文字列と今日の日付を比較したいのですが、うまくいきません。 文字列は datetime.datetaime.strptime(ooo,'%Y%m%d') で変換できました。 比較対象は、 datetime.date.today() かdatetime.datetime.now() にしてもだめでした。 よろしくおねがいします。 >>406 from datetime import date date.fromisoformat("2022-03-03") == date.today() datetimeだかdateだか、ちょっとした書きミスがバグにつながるから こういうのはyear、month、dayを抜き出して、3回比較するのが確実 テストコードも同じ過ち起こして、テスト通るのにバグるってなるんだよ・・・ >>407 >>408 ありがとうございました。無事に解決しました。 テストを神聖視しすぎ。本体とテストの実装者が同じだったら同じ過ちを犯すものだよ 最近見かけた日付関連だとファイル内の文字列"yyyy/mm/dd"と現在日を文字列比較してて しかも現在日から文字列作るのをロケール任せにしてたから、海外だと"mm/dd/yyyy"になってバグるというのがあった こんなのロケール知らずに普通にテスト組んでたら検出されない >>414 > テストの実装者 まじでテストコード知らんのやな ロジック書いてそうw >>414 違うロケールでテスト流せばすぐ検出されるよね? そのケースは個別のテストケース内で確認すべき項目というより別ロケールでのテストを計画しなかった人やチームに落ち度がある 日時を扱う場合にロケールやタイムゾーンは要求仕様の一部だから事前にテスト計画に入れるのが普通 >>414 テストの考え方間違ってるだろ 「テストしたから不具合はない」ではなく 「少なくともテストした項目については、挙動の確認/担保が出来ている」だぞ (ユニットテストはバグを検知するのでなく、動作担保のために作る) その例で言えば明らかにテストケース漏れだし むしろそういう懸念があるならレビューの時に真っ先にチェックするだろ テストコードを整備せずに、実装側を無意味に歪める方がおかしいだろ def test() print(1234) #=enddef test こんなエンドコメント入れてるんだが、ないかな? 長くなるとわかりにくいんだもん >>421 ちゃんとしたエディタなりIDEなり使ってたら 関数単位で折りたためる機能あるから わざわた付けなくても…… そりゃIDEで折りたためたり、コンボボックスにその関数名出てたりするけど そういう機能があるのと見やすさはまた違うからな 言語は違うけど、windowsのソースコードでもその手の終了示すためのコメントは使われてる >>421 ねーわ、と思ったが 2000行程度のファイルで試してみたら確かに視認性が上がった カラーリング次第なところはあるがテストコードに限らず有りだわ 俺もあったら削除するぞ派かな。 折り畳みの邪魔にしかならんし。 endがあるRubyでも似たようなコメント書いてたな このendはifだっけ?whileだっけ?で見に行くのが面倒になって付け始め 条件なんだっけ?で条件もendコメントに書き始めたら 見栄えが汚くなったなww while True: try: kakaku = btc_ask time.sleep(30) すんません教えて下さい、 30秒おきにループして、 BTCの価格を取得するプログラムなのですが、 この取得した価格を、 30秒前の前回取得した価格と比べるには、 どうしたらいいでしょうか。 30秒前のkakaku < 現在のkakaku このようなことがしたいです、 ループの中でkakakuを保持して、 次回のループの時の価格と比べたりできますか? 5x7(横x縦)の2次元リストのなかにデータが格納されています。 @その中に重複しているデータは何個あるか Aその重複しているデータを抽出する が、したいです。 誰かお分かりになる方、教えて下さい。 重複しているデータが1種のみ3箇所にあったときの回答がしりたい >>430 ループの外にprev_kakakuとcurrent_kakakuを用意しておいて ループ内でif kakaku := ary = [ [ 1, "a", 2 ], [ 2, "a", "b", 2, 3 ] ] この場合、出力はこれで良いの? "a" => 2 2 => 3 "a"が2個、2が3個 collectionsのcounterで終わりでは? >>433 なんとかできました、 ありがとうございます! anacondaとVSCODEで開発しています 昨日あたりから急にconda install したcv2とかpyautoguiとかをimportするとモジュールが見当たらないとエラーがでるように なってしまいました。 ですけど、conda info -eで見るとちゃんと環境は切り替わっているのですが、 pprint.pprint(sys.path)でimport先を確認するとなぜかcondaのbaseを見ています import先を切り替えるにはどうすればいいのでしょうか。 なんかUSBHDDを接続してドライブを増やしたときにpython実行した辺りから使えなくなった気がします エラーメッセージで検索すれば? anaconda の使い方や、import パスの仕組みなどを調べるとか スクレイピングがCloudflareでブロックされてアクセスできなくなってもうた Selenium(headlessオフ)でアクセスしてもダメ! でもChromeからのアクセスは大丈夫だから SeleniumとChromeってやっぱ違うんだね、今のところお手上げ>< フリー版?のcloudscraperでもダメっす、何か対策ありますか? どのサイトをクロールしようとしてるのか分からないと 徹底的にブラウザの気持ちになってリクエストを再現しろくらいの一般論的なことしか言えんよ >>421 有りか無しかで言ったら有りだけど、それ、pythonのデザインポリシーを冒涜してるだろ(笑) Selenium を使う場合、手動でブラウザを使うのと、全く同じようにシミュレーションすべき どこかが異なると、それを判別してブロックされる そんな複雑なチェックしてることなんてまずないだろ どうせUAがデフォルトのままとかその手がじゃないか ルビキチ rb mylist=mystr.split(",") mysize=mylist.size() mystr=mylist.join(",") py mylist=mystr.split(",") mysize=len(mylist) mystr=",".join(mylist) ある数列の連続性をカウントしてまとめたいのですが forで回してこうやりました https://ideone.com/lcnVcl ↑の例では #数列データ df = pd.DataFrame([1,2,1,1,1,2,3,1,2,1,2,3,1,2,1,2,1,2,3,4,5,1,1,2]) #連続性 #[(1,2),(1),(1),(1,2,3),(1,2),(1,2,3),(1,2),(1,2),(1,2,3,4,5),(1),(1,2)] #つまり # (1),(1),(1), (1,2),(1,2),(1,2),(1,2),(1,2), (1,2,3),(1,2,3), (1,2,3,4,5) 数列のデータはpandasのデータフレームで受け取るので どうせならpandasをもっとうまく使えたらなぁと思ったのですが何かいい案はないでしょうか。 やりたいことはカウントというよりも、 今現在の連続記録nに対して、これ以上は連続しにくいぞ、とか、まだまだ連続する、程度を知れたらいいなと思っています (数列は正の整数で連続し、連続が切れると1から始まります) 上でやったforのやつでも結果の関数を解くだけなので出来なくはないですが 何か野暮ったいかなと思いました >>448 元のseriesと、shiftメソッド使って一個行方向にずらしたseriesを引き算して、 1なら連続、とかやる方法はあるけど、あんまりエレガントにならないし、 遅いしメモリも食うしいいことなさそうな感じだなあ。 元配列[1,2,1,1,1,2,3,1,2,1,2,3,1,2,1,2,1,2,3,4,5,1,1,2])に含まれる1の数、2の数、3の数・・・をカウントするだけでいい 今の値が3だとしたら、次に4が来るか途切れそうかは、カウントした4の数から考えることができる↑だと4は一個だからほぼほぼ途切れるだろうということになる >>449 なるほど >>450 今の値が1連続目だとすると 常に、1連続以上になる確率が高くなりそうな気がしますが違うでしょうか https://ideone.com/rlGHHX 途切れた時点でのi-mが連続回数 何がやりたいのかいまいちわかんないけど >>452 ありがとうございます この数列は、カウンターが出力される機器のログを記録したようなものです ボタンを押すごとに1,2,3・・と数字がカウントされますが途中でリセットされます リセットのタイミングは機器によって異なります 極論、 { 1:1, 2: 10000, 7: 2 } のログデータを示した機器は(1,2)が10000回出ているので もし現在2回連続中なら、次ボタンを押しても1にリセットされる期待大だろうと思います 問題は、1,2,1,1,1,2みたいなseriesのデータでしか受け取れないというところで どうせなら受け取ったdataframeの操作だけでできないのだろうかとあれこれやってみましたが行き詰まり質問しました 上の極論例で言えば 圧倒的に1,2,1,2,1,2…のパターンが多いと思うので、良い感じにグループ化して 期待が大きい順にソートできないのかな、みたいな ゴリ押しコードではできそうになりました ありがとうございました。 1が出てきたところで分割するだけならmore_itertoolsのsplit_beforeが簡単 Counter(len(x) for x in split_before(array, lambda x: x == 1)) ある要素の次に連続した数字が出てくる確率を求めたいなら yield前に計算が必要なのでsplit_beforeはそのまま使えない https://ideone.com/TMXIXG (Counterの要素数が多くなるようならメモ化とかで最適化) >>454 ありがとうございます この賭けをするかどうか、がパッと見ですごくわかりやすいですね >メモ化 やってみたいと思います! ありがとうございました 画像認識用に Pillow package 追加した後に pyinstaller でexe化したら、吐き出されるファイルのサイズが全て大きくなりました。 --exclude pillow で除外するしかないのでしょうか? よろしくお願いします >>457 ありがとうございます。 仮想環境を構築してexe化するのがベターなのでしょうか? 不要なライブラリを一つずつ除外してアーカイブするってのは現実的じゃないですよね? プロの皆さんはどうやってますか? >>458 ありがとうございます。 py2exe でしょうか? pyinstaller に比べるとかなり軽量化されますね。onefileになりませんが、解決できそうです。 >>459 プロジェクトごとに最小限の環境切って出力までいく 他に手はない だからガバガバAnacondaとかが嫌われているんだね 組み込みに、必要なライブラリを必要なときに入れていく。最後にpyinstallerを入れてexe これが最小 exe化自体がPythonには向かないから肥大化は諦めろとしか まともな使い方したいならpip対応してインストーラーを配布 まあenv+最小環境でも20MBスタートくらいだしな なんだそんなもんか .NET Coreのシングルバイナリ(60MB)に比べたら小さいね >>463 やるにしても超初心者の手を出すことじゃねえなあ 超初心者ほど必要になってしまうジレンマもあるのかも知れんが >>465 anaconda+tensorflow+kerasあたりのお手軽AI環境構築で700MBくらいだった気がする def select(idx: int, name: str): ret = None __if idx: ret.add __if name: ret.add return ret こういう省略可能な引数に対する型ヒントはどう書きます? select(idx: int|None =None, みたいにしなきゃダメ? >>468 Optional パイプで区切る書き方は3.10以降しかできない すまん、書き方が悪かった None必須なのかなと思って。引数に何も入れなかったらNoneじゃなくて未定義なのでは? あとこれが通るのも違和感ある 初期化はおkなので? class Foo(): def __init__(self): __self.var : list[int] = [] # コイツ def insert(self, value: int): __self.var.append(value) > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^ あー、ホンッとに思い出すなあ(笑) キチガイの嘘つきの低レベルFランの、 朝鮮ゴキブリBot君は、 チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な ことはよーくわかったよ。 ホントなにもできない朝鮮ゴキブリBot君! クソチョンw クソチョンはウンコを食べる糞食人種w クソチョンはゲリ便をじゅるじゅると うまそうに食うw PysimleGUIで使いたい機能が動かない事があるんですが、 もしかしてJupyterNotebookってPysimleGUIと相性が悪いとかってありますか? 「ボタンを作りますか?」 「何個作りますか?」 みたいな? SmalltalkやZopeみたいな実行環境自体がGUIでIDEってやつかとおもったら PySimpleGUIはJupyterの外なのか そこまでうれしくはないな >>477 具体的には例えばこのページ(ttps://knt60345blog.com/pysimpleguigui_popup2/)にある 「popup_get_file」を使ってファイル読み込みダイアログが簡単に出るみたいに書いてあるんですが 実際にはダイアログボックスが表示こそされるもののそれ以降はエラーだらけだったりって感じです。 >>478 VSCって奴がメジャー?だったりするんですかね 教本に載ってた通りに環境をセットアップした状態だったんですが やっぱそういう相性とかあるんですね・・・ PySimpleGUI は、ネイティブアプリか? 一方、Ruby on Rails, Electron(Node.js + Chromium), Electron製のVSCode などは、 HTML, CSS, JavaScript を使ったウェブアプリ Jupyter Notebook もウェブアプリかも? そもそも、Windows 用のネイティブアプリがまともに動くのか、という疑問がある。 文字コードがUTF-8 じゃないし C# だけはWindows用言語だけど、それ以外の言語はすべてLinux用だから、 Windows用にコンパイルして、テストしているかどうか疑問 手動でモジュールをインストール(コピー)するにはどうしたらいいのでしょう? 環境コピー元でpip install numpyするとlib/site-package/numpyができる 環境コピー先のlib/site-package/の中にそのnumpyフォルダを単純にコピーしてやればいいかと思ったのですが これだと'No module named numpy'になってしまいます コピー先でもpip installしてやればいいのですが、nuget ironpythonで作った環境なのでそれができず(方法がわからず) 単純にコピーしてやればいいやというのが発端で起きた疑問です >>482 ユーザじゃないからわからんけど ironpython PYTHONPATH でググってみて searchPaths.Add(@"\Lib\site-packages"); engine.SetSearchPaths(searchPaths); でパスを追加すると、'Non-ASCII character '\xef' が出て numpyのpyファイルにエンコード指定を追加すると、今度はunexpected 'from'というようなエラーが出てしまうけれど エラーが出るということは正常にコピーできてるのかな。とりあえず動かなそうなので諦めます Windows+Python3.5です、少し古いかもしれないですがご勘弁下さい インストールしてすぐです requestsを使いたくて適当な記事からいくつかサンプルコードを打ち込んだのですが、ImportError: No module named requestsというエラーを吐かれて まずコマンドプロンプトでpip install requestsを実行すべきなのがわかりました しかしpip install requestsで新しく生成されたディレクトリは〜\Lib\site-packages\requestsで pip install requests実行前に、Python自体をインストールした状態ではLib\site-packages\pip\_vendor\にもrequestsディレクトリがあり しかしこの\_vendor\requestsフォルダはコマンドプロンプトでもPythonの対話モードでも認識されておらず、存在していないような扱いでした このLib\site-packages\pip\_vendor\内のrequestsが、どのような経路で利用されるものなのか教えていただけないでしょうか? あまり余分にファイルを増やしたくないので、_vendor\requestsの方を利用できる手段があるならばそうしたいのです >>485 ちなみに、サポート期限切れのバージョンを使わなきゃいけない理由はなに? >>485 "Requests officially supports Python 2.7 & 3.6+." https://pypi.org/project/requests/ Requestsでも3.6以上じゃないとサポートしていない >>485 pip install requestsは何もエラーや警告もでずに正常終了した? pip install requests実行してから、適当な記事からいくつかサンプルコードを打ち込んだときは、ImportError: No module named requestsはでなかったの? Windowsのバージョンはなに? pip\_vendor\はあくまでもpip自体が使用するモジュール 他のパッケージでも_venderディレクトリに限らず依存モジュールを持ってる場合もあるが 特定バージョンに依存してたり改変されてる可能性もあるのでもったいないからと言って外部から使おうとしちゃだめよ ├label 判定処理の開始 │├┬処理1の演算(複数行) ││└演算の結果で「判定処理の終了」に飛ぶ ││ │├┬処理2の演算(複数行) ││└演算の結果で「判定処理の終了」に飛ぶ ││ │└┬処理3の演算(複数行) │ └演算の結果で「判定処理の終了」に飛ぶ │ ├label 判定処理の終了 こういうことやりたいんだけど、gotoを使わないでやる方法てある? gotoは推奨しないていってるよね。 フラグとか使って、前の判定がNGだったかを見る方法しかないのか? 自分が考えたのは1回だけのfor文の中にこの判定処理入れて、途中てbreakでgotoの代わりをしたんだが、 >>490 >自分が考えたのは1回だけのfor文の中にこの判定処理入れて、途中てbreakでgotoの代わりをしたんだが、 単純に処理1の終了時に結果に応じてreturnおけば、それで簡単に抜けられるぞ ガード節とか早期returnで調べると分かりやすいかも 端折りすぎて何がしたいかわからん 単純に if func1() elif func2() else func3() の構図じゃねそれ 1→2→3→終了処理 1→2→終了処理 1→終了処理 この組み合わせになるってことだろ ifで簡単にやるなら ret = func1 if(ret) ret=func2 if(ret) ret=func3 finally() Flaskでつくったアプリをデプロイ先で"git clone", "pip install -e ."して入れていて、アップデートがあった場合はgit pullだけしています こういう使い方ってpipで管理できない以外で何か問題ってありますか? 確かでなくても何となく気になる程度の事でも書いてもらえるだけでも有難いです デプロイ時に公式リポジトリが落ちてる可能性あるからアリ いまどきはコンテナ生成時にpip使うからそういうリスクないけども ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる