【まず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 ### >>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使うからそういうリスクないけども pypiのパッケージって存在が保証されるんじゃなかったっけ すいません、言葉足らずでした 自分で作ったアプリでリポジトリも自前のリポジトリです >>495 多言語のバージョンマネージャーのanyenv で使もう、rbenv のインストーラ https://github.com/rbenv/rbenv-installer/blob/main/bin/rbenv-installer これを簡単に説明すると、 Mac のHomebrew の場合と、Linux の場合で、処理を切り替えている 23行目 : rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)" で、-v : 「コマンド」を実行せず、実行対象となるコマンドやファイル名、 関数・エイリアスの定義を表示する 25行目 : if [ -n "$rbenv" ]; then で、-n : 文字列が1文字以上(ヌルではない)のとき真(not zero) つまり、初回はgit init して、2回目以降は、git pull する if [ -n "$rbenv" ]; then git pull --tags origin master else git init git remote add -f -t master origin https://github.com/rbenv/rbenv.git git checkout -b master origin/master fi >>499 の続き 69行目からも同じ 69行目 : if [ -n "$ruby_build" ]; then で、-n : 文字列が1文字以上(ヌルではない)のとき真(not zero) つまり、初回はgit clone して、2回目以降は、git pull する if [ -n "$ruby_build" ]; then git pull origin master else git clone https://github.com/rbenv/ruby-build.git "${rbenv_root}/plugins/ruby-build" fi こんにちは。 文字列を空行で分割したいのですが 良い方法が見つからず悩んでいます。 たとえば、文字列を2つに分割したいです。 良い方法があればヒントをいただけると助かります。 ---------はじまり aaa bbb <==== ここで分割したい ccc ddd ---------おわり サンプルの文字列がおかしくなったので再度書き込みます。 bbb と ccc の間の空行で分割したいです。 aaa bbb ccc ddd pythonって簡単にできる命令が多いからそれ探しがちだけどそういうの考えなきゃいくらでもできるだろ 単純に配列に一行ずつ読み込んで、要素の中身をチェックして空ならそこまでの要素を切り出してくとか 全部をひとつの文字列として変数に入れて、split(\n\n)みたいな感じで分割すればいい プログラムの初心者です。 書籍を見ながら勉強しているのですが、 指示通りに入力しても正常に反応しなくて、どこが間違っているのかわかりません。 どなたか教えていただけませんか? >>505 import tkinter root=tkinter.Tk() root.title("初めてラベル") root.geometry("800x600") label=tkinter.Label(root,text="ラベルの文字列",font=("System",24)) label.place(x=200,y=100) root.mainloop() こう入力しましたがウィンドウが表示されませんでした。 ファイルの文字コードがSJISになってるんじゃないかな UTF-8で保存し直してみたら >>506 です。 こちらで解決しました! お騒がせしてすみません。 if x : return elif y : return else: 処理 みたいな、ガード連打するときなんか改行なしで行きたい気がするんだけど やっぱ許されぬ罪なのですか神父様 Kotlinとか書いてると実にそう思うが、そんな将来は来ない if x or y: __return else: 処理 じゃだめなん? >>513 主題はそこじゃなくて アーリーリターンが続くような構造では改行レスのreturnと書きたいが、許されるかどうか ということでは 大学の研究室のコードとかはめちゃクソ改行レス あいつら道具は動けばいいんでしょ精神だからぬ でもカッコやendいるわけじゃなし 1行returnくらいあってもむしろ見通しいいし if x or y : return orでつなげるなら一応一行でも行けるぽいけど ガード節早期リターンをいれるなら if elif elseでつなげるよりもifの連打でとことんリターンさせた方が条件の独立性も保たれるしわかりやすい てかelifやelse 意味ないし if a: return if b: return if c: return でも基本的にフロー制御せずに済むようにするのが一番 jupyterlabのvpythonの拡張機能を入れようとしたら 3.3.2~3.4.0と5.3.2~5.4.0を同時に求められたんですがどうしたらいいですか https://i.imgur.com/tBr5qLg.png >>501 Ruby では、空行は改行が2つ続くので、そこで分割すると、 input_text = <<'TEXT' あ い う え TEXT p ary = input_text.split( "\n\n", 2 ) # 最大で2分割 #=> [ "あ\nい", "う\n\nえ\n" ] ---a.py----- import b x="abc" b.kansu() ---b.py----- def kansu() global x print(x) a.pyを実行させて、その中で呼び出された関数kensuの中でa.pyで定義された変数xを参照したいんですけどできます。 xが定義されてないて言われるんだけど。 import b b.kansu(x) --- def kansu(x):print(x) >>524 そうやりたいけど、 b.kansu()をb.kansu(x)に変更するのが大変だから、質問してる。 質問です 大量にあるpng画像の中にある特定の画像が含まれる画像だけ抽出することはできますか? 例:オンラインゲームの撃破ログ時に特定の画像が画面内に現れるとする(ヘッドショットアイコンなど) その画像は不変であるが、画面内のどこにあるかは不特定。 特定の画像のimgを先に作成しておき、その画像が含まれる画像のpngデータを抽出したい。 >>523 できるけどおすすめしない import b b.x = “abc" b.kansu() bにxのアクセサ(プロパティ)つくるのがましかな >>528 出来ました。 ぜんぜんおすすめのような気がする。 ありがとうございました。 変数じゃなく定数だったりすると、 本来は、別のconfig.pyあたりに書いて同じことをするんだっけ? import config as g g.x = 'abc' みたいに bbox = [0, 0, 100, 100] l, t, r, b = bbox l = 20 print(bbox) -> [20, 0, 100, 100] こういうことがしたいんですが、どうすればいいですか どういう単語で検索したらいいのかすらわかりません >532 辞書使って無理やり。 bbox = { 'l': 20, 't':0, 'r':100, 'b':100 } bbox['l'] = 20 bbox_values = list( bbox.values() ) print( bbox_values ) あえてやるならこんなのとか 単語で検索するとしたらオブジェクト bbox=([0],[0],[100],[100]) l,t,r,b=bbox l[0]=20 print(bbox) ->([20], [0], [100], [100]) 配列順に意味があるなら L,T,R,B = 0,1,2,3 bbox[L] = 20 とか 意味ないならクラスか辞書で保持すべき あーなるほど、そういう感じなんですね わかりました。ありがとうございます なんか要素へリンクしてて l = bbox[0] print(l) # 0 l = 20 print(bbox[0]) # 20 みたいな感じになると思ってました bboxクラス作ります >>537 話ずれるけど、要素を外で書き換えるよりも箱の拡大縮小みたいなメソッドを作る方が一般的な気がします openpyxlでxlsxファイルを作る時にひとつのシートに複数のグラフを描こうとしたらThe same chart cannot be used in more than one worksheetってエラメ吐いたんだけど何でだろう エラメでぐぐってもイマイチよくわからなかった chart2=chart1 とかやったりするとそうなるかも 複数チャート作る時に前のチャートを使いまわしたりしてない? 使い回しはしてましたね… グラフ描く回数の分同じ記述を何度もするのが嫌だったから関数にして複数回呼び出せばいいかと思ってた グラフ描画部分の関数に引数として描画シートとか参照するセルの範囲を渡してやってたんだけどそれじゃ駄目だったか ダメってわけじゃないけど気を付けないといけないポイントがある チャートとかのいわゆるオブジェクトのコピーはdeepcopy使う 配布するpyスクリプトで標準外パッケージを使いたいけどユーザの環境を汚したくないというときはvenvのような仮想環境か pyinstallerでまとめるくらいしか手は無いのかな。 どちらもpython.exe自体をコピーして大げさなんで、jsのwebpackみたいなパッケージのバンドルができたらよかったんだけど。 質問なんです GIMPのpython使っています # -*- coding: utf-8 -*- import glob,os,re file = glob.glob(‘C:\Users\name\Desktop\*.jpg’) で取り出したファイル名を使ってファイルを開こうとすると ファイル名が日本語の場合文字化けしてファイルが開けませんでした。 文字化けを直すにはどうしたら良いのでしょうか? print(file)した時に文字化け表示される文字は 'C:/Users/name/Desktop\\\x83A\x83\x8a\x83G\x83N\x83`\x83\x83\x83b\x83g\x91\xce\x89\x9e.JPG' こんな感じです よろしくおねがいします >>544 >ファイルが開けませんでした。 この時どんなエラーがでましたか? >>545 RuntimeError: 'C:\Users\name\Desktop\�A���G�N�`���b�g�Ή�.JPG' を開いて読み込むことができません。 Invalid argument これと詳細な情報のところに Traceback (most recent call last): File "C:\Program Files\GIMP 2\lib\gimp\2.0\python/gimpfu.py", line 740, in response dialog.res = run_script(params) File "C:\Program Files\GIMP 2\lib\gimp\2.0\python/gimpfu.py", line 361, in run_script return apply(function, params) File "C:\Users\name\AppData\Roaming\GIMP\2.10\plug-ins\add_aaaaaaaa.py", line 11, in aaaaaaa >>544 'C:/Users/name/Desktop\\\x83A\x83\x8a\x83G\x83N\x83`\x83\x83\x83b\x83g\x91\xce\x89\x9e.JPG'.decode("mbcs") >>544 バイナリでglobしてバイナリでopenしてみれば? cp932がutf8の文字列として解釈されてるのが原因だと思う glob(b'*.jpg') >>547 ありがとうございます! 無事ファイルが開けてプラグインが完成しました!! もう一つ質問で悪いのですが これもGIMPです 数字を文字列にして文章とつなげているのですが その半角数字を全角数字にしようとしましたが エラーが出ます どうしたらいいのでしょうか? コードを書くと書き込めなかったので スクリーンショットを貼ります https://imgur.com/a/F2J1Ksw エラーはこちらです https://imgur.com/a/xv8Hcrt >>550 https://ideone.com/ 再現ができないのでここにコードを書いて、そのリンクを貼ってください コードを書いて、Runボタンを押すとリンクが生成されます こんな感じで https://ideone.com/UGO5O1 >>550 gimp2にバンドルされてるpythonは2.7なのでそのコードは使えないね python2ってなんだよと思ったら、gimpって開発の勢いがないソフトだったんだな 2007年10月24日 - GIMP 2.4.0 2008年10月1日 - GIMP 2.6.0 2012年5月3日 - GIMP 2.8.0 2018年4月27日 - GIMP 2.10.0 今は2.10.30 Python 3.0は2008年12月3日 たびたびすいません、GIMPのモノです。 glob.globが治っていたのが勘違いで 今度はアドレスに日本語が入ってると何も検索してくれなくなりました どうしたらいいですか? >>> glob.glob(b"C:\\Users\\name\\Desktop\\新しいフォルダー\\*.jpg") [] >>> glob.glob("C:\\Users\\name\\Desktop\\新しい\\*.jpg".decode("mbcs")) [] >>556 ありがとうございます! 無事小文字から大文字になりました 書き間違いだろ 「新しいフォルダー」と「新しい」のどちらかが、存在しないのでは? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる