【まず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 ### ソースコードをutf8で書いたらいけない、ソースがutf8でなくshiftjisになってる、のどっちかじゃないか 自己解決です folder_path=folder_path.decode("utf-8") にしてみたら日本語でも行けました! お騒がせしてすいませんでした。 >>561 GIMPのコンソールだとglob.glob()の中はバックスラッシュじゃないと反応しなかったです >>563 そうなんだ わざわざ試してもらってありがとう Python2のglob実装みてみる >>564 のおかげで バックスラッシュに気づけたので 解決出来ました ありがとうございます >>562 気づかずすいません ありがとうございます! そういう事みたいでした u"C:\\Users\\name\\Desktop\\新しいフォルダー\\*.jpg" のように最初からユニコード文字列にするのが正攻法かな でもgimpのpythonコンソールに直に書く時は u"C:\\Users\\name\\Desktop\\\u65b0\u3057\u3044\u30d5\u30a9\u30eb\u30c0\u30fc\\*.jpg" のようにunicodeエスケープしないといけないのが難点 俺環のgimp2.10.30はスラッシュでも問題ないな uwscのBETWEENSTRに該当する 指定文字列から、AとBの検索語の間で文字列をカットする関数はありますか? まんま実装してるライブラリも探せばあるんだろうけど、普通は正規表現だろうね python 正規表現 タグの間を取得」とかでぐぐれば zipファイル解凍しなくてもファイル数の確認ができるのだが rarファイルではできないの? >>569 ありがとうございます labでいろいろ試してみます https://www.python.jp/train/loop/index.html を参考にwhile文でクレジットカードのアカウント管理プログラムを作ってみようと思ったんだけど 例えばパイソンクレジットのパスワードはpythonだとして text = "" while text != "パスワード": text = input("パイソンクレジット:") print("python") これで実行は出来たのですが2つ分からないことがあって ・パスワードだけじゃなくてIDや暗証番号などのも設定させたい場合の書き方 ・while文は「パスワード」だけど、これだけじゃなくて「パス」や「pass」でも答えが表示できるようにしたい この2つがどうしてもできません >>574 > ・パスワードだけじゃなくてIDや暗証番号などのも設定させたい場合の書き方 IDや暗証番号もinputで取る whileの条件を増やす > ・while文は「パスワード」だけど、これだけじゃなくて「パス」や「pass」でも答えが表示できるようにしたい while text not in ('パスワード', 'パス','pass'): >>575 後者やってみたけど パスワードpassじゃないと入力できなくなっちゃった 書き方がおかしいのか? 文字コード=sjis、改行コード=CRLFのテキストファイルを それぞれutf8、LFのファイルに変換したい どうすればいいですか >>578 with open('shift_jis.txt', mode='r', encoding='shift-jis') as f: lines = f.read() with open('utf8.txt', mode='w', newline='¥n') as f: f.write(lines) Windows相手なら encoding='cp932' が無難やね Shift-JIS_2004が来やがる事しばしば かと思ったらWindows-1254とかと誤判断 cchardet.detect(文字列)['encoding'] で取得した結果をopenのときに投げればいいんじゃないの 意外と使えるよ anser = input("パスワードは?:") while anser!="パスワード"or"pass"or"パス": print("OK") これでどうしてもエラーが出てしまう >>> "パスワード" or "pass" or "パス" 'パスワード' 想定してるような集合扱いにはならないのと、先に`answer != "パスワード”`が評価されるから >>> True or "pass" or "パス" True >>> False or "pass" or "パス" 'pass' のどっちかになる。 >>586 ちょっと違うみたいで anser = input("パスワードは?:") while anser!="パスワード"or"pass"or"パス": print("OK") で↑に行を開けると起動するんだけど 今度は無限ループになる上に、while文の"パスワード"or"pass"or"パス"が効かなくなる (enterキーとか適当な文字入力でも OK OK 質問です。 pyenvの設定をネットで調べると次の2つが見つかりました。 どっちが正しいのでしょうか? (1) echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile # ↑ binになっている echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile source ~/.bash_profile (2) echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bash_profile # ↑ shimsになっている echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile source ~/.bash_profile >>591 expected an indented block after while statement on line 2 >>589 漏れは、Windows 10, WSL2, Ubuntu 18.04 で、 日本人が作った、多言語バージョンマネージャーのanyenv を使っている。 nodenv(Node.js), rbenv(Ruby), jlenv(Julia), tfenv(Terraform)など、20言語ぐらいある。 同様のツールに、asdf もある 漏れは、~/.bash_aliases に、下のように書いている。 export PATH="$HOME/.anyenv/bin:$PATH" eval "$(anyenv init -)" これは、~/.bashrc の終わりの方で、 もし、~/.bash_aliasesが存在するなら、それを読み込むように書いてあるから if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi bash で、下を入力すると、 which ruby ~/.anyenv/envs/rbenv/shims/ruby which node ~/.anyenv/envs/nodenv/shims/node WSL2, Ubuntu 18.04 サーバー(CUI のみ)では、~/.bash_profile は存在しない >>589 https://github.com/pyenv/pyenv#installation まず公式読んで >>592 while True: answer = input('パスワードは?:') if answer in ['パスワード', 'pass', 'パス']: break print('OK') 先にチュートリアルで構文を学ぼ https://docs.python.org/ja/3/tutorial/ >>590 そのコード何がしたいかわからん inputパスがあってたら中身表示するとしたら while True: __ans = input('パスは?') __if ans.lower() in ['パス', 'パスワード', 'pass', 'password']: ____中身表示系書く とかだぞ あと評価式でorするときは1から書き直す if a == 1 or a ==2 or ,,, とりあえず君は初心者本1冊完走してから作りたいもの作ろう ~/.pyenv/bin/ か、~/.pyenv/shims/ に、 python, python2, python3 の内のどれかは知らないけど、 あるかどうか見てみれば? 普通は、多言語バージョンマネージャーのanyenv かasdf を使う。 pyenv だけ使う事はまれ nodenv(Node.js), rbenv(Ruby), jlenv(Julia), tfenv(Terraform)なども使うから それか、Docker。 Windows, WSL2 なら、Docker Desktop >>594-595 https://www.python.jp/train/loop/index.html 一応このサイト見て勉強してるのですが どうにもうまくいきません…… あとお二人方のコードで試したら、また別なエラーが出ました 作りたかったのは Q パスワードは? A パスワード、パス、pass でAを入力するとOKと表示されるコードでした >>583 自分は、pythonは記憶とんだ。 だから、門外漢だけど、 「"パスワード"or"pass"or"パス"」じゃないなら、ループ。 って、おかしくない? 「"パスワード"or"pass"or"パス"」ならループ。 じゃないの? ループを脱出したら「OKを表示」じゃないの? >>598 password_list = ['パスワード', 'パス', 'pass'] input_key = input('Enter Your password: ' ) if len(input_key) > 0: for i in password_list: if input_key == i: print('おk') if input_key != i: pass 自分の発想のアルゴリズムだと、 アルゴリズム変えなければ、たぶんコメントなしだね・・・・・。 >>598 本当に作りたいのがそれだけなら passlist = ['a', 'b' , 'c'] if input('password ? ') in passlist: __print('ok') なんよ とりあえず落ち着け。作りたいもの置いといて、基礎を学ぶのだ 今のままじゃ多分全部聞いて、全部身にならない >>603 上に上げたサイトだとローカル巻数とグローバル巻数の部分まで来たんですが ここがどうしても意味不明です まずIDLEだとインデントが上手くいかない 最後のprintだけスペース戻したらエラーになる >>606 VSCode入れて、それでそのチュートリアルやってみたら 質問です >>594 や>>603 のようにlistでin演算子を使ったところ 同僚に「あー……listでin演算子使っちゃうタイプね(ニチャア)setやdictならわかるんだけどね……(ニチャア)参考までにこういうブログ読んでね【listでin演算子は遅いことを示したURL】(ニチャア)」 ということがありました 苛ついたので月曜日までにPythonを改良して(Python4を自作する)listのin演算子を早くしたいです。よろしくお願いします IDLEは単純に使いづらいぞ、付属品だけど使ってる人皆無 VSCodeかPyCharmの無料版に切り替えた方が良いぞ 実際に開発する時も使うのはこのどっちかだし Pythonのインデントは基本半角スペース4つだから全角はもちろん、TAB文字でもNG だから最低でも半角スペースとかTAB文字が視覚的に表示されるエディタ使わないと話にならないし 何よりもデバッガ使って問題がある箇所を探す、っていう工程を覚えないと身にならん ラズパイでPyQt5使ってます。 IDEはeric6ですが、他にありますか? >>579 ありがとうございます openにこんなにいろいろ指定できるなんて感動 newline=に指定するのは出力したい真の改行文字ってことですね ついでに改行文字について調べてみたら、 Windows版Pythonでprintやwriteに使う改行文字\nってLFのことで、 ホントはCRLFを出力したければ\r\nと書くべきなんだけど newlineを指定しなければOSに合わせて\n→\r\nに変換して 出力してくれてるってわかってためになりました ただこれはいいことばかりではなくて、str.replaceで改行文字を 指定して変換をかけるような時は、しっかり\r\nと書かないといけない ので落とし穴でもあり、改行は恐いなと思いました >>615 ColabでGUI?っておもったけどローカルのJupyterに接続するんかな 手軽にリモート開発できていいかも 質問です。 MacOS10.12.6 [bash]のpython3.8.3で、 下記のエラーメッセージが出ます。 どういう原因が考えられますか? どうすれば良いのでしょうか? ImportError: dlopen(/Users/xxx/yyy/lib/python3.8/site-packages/PIL/_imaging.cpython-38-darwin.so, 2): Symbol not found: ____chkstk_darwin >>612 Python3.10になってIDLEメッチャ良くなったぞ 左にプロンプト専用のスペースができて表示が格段に良くなった あとはjupyterみたいなセルを導入して欲しいかな VSCodeとかPyCharmは聞いたことあるけど、明らかにIDLEの方が使われてるよ だって付属品なんだもん、そもそもエディターはVimしかありえないじゃん? Vim+IDLEが最強だって! IDLEはbatファイルから起動させるようにしてるわ 毎回importするパッケージや変数定義をbatファイルに記述しておいて batファイルでIDLE起動ドーン! これ超便利! 作業別にbatファイルを用意しておいてドーン! これ超便利! >>619 https://news.mynavi.jp/techplus/article/20200508-1031849/ 残念ながらPyCharmとVScodeだけでシェア60割近く握ってるんだ…… batファイル起動とかも、今なら別にGitでクローンして持って来れば良いから そんな面倒な事せんでも・・… 60%って書こうとしてたら60割って書いてたわ…… こんなアホみたいなミスするとは…… PyCharmとかvimがそんなシェアあるって嘘だろって数値だから ネタで割使ってるのかと思ったら素でやってたのか・・・ >>624 batも勘違いしてるでしょ? IDLE起動するとき毎回同じimport文やらを記述するのが面倒だから そういうのをbatファイルに記述しておいて、IDLEを引数渡しで起動させるってことだよ? Gitクローン関係無いよね? >>626 すまん、何か色々勘違いしてたみたいだわ 普通にコードのテンプレートみたいなものをbatで生成してるのかと思ったわ >>627 なるほど、そういう勘違いね IDLEでガッツリコードを書くわけじゃなくて、コードはVimで書く IDLEは実行とかテストとかだね、VSCodeとかPyCharmとかも結局裏でIDLEで実行してるわけで たぶんやってることは同じだと思う、知らんけど >VSCodeとかPyCharmとかも結局裏でIDLEで実行してるわけで IDLEってTkInter使ったただのエディタじゃね?VSCodeが裏で使うってどういう場面で? https://docs.python.org/ja/3/library/idle.html えー、IDLEは対話的インタプリタでありまして・・VSCodeはインタプリタの設定があるようで、 であるからして、えーインタプリタを裏で実行しているということでありまして えー、、、つまり最後に「知らんけど」って書いてあるのが全てであります IDLEは、コメントアウトのショートカットキーで"'# "に出来ない時点でアウトなんだよ >>630 それよりPythonそのものがインタプリタ言語でしょって話だろ 一行ずつ変換してCPUで実行してるで原理は変わらない 開発環境の標準化と管理しやすさから Docker使うのが楽ちんこかゆい >>616 >ただこれはいいことばかりではなくて、str.replaceで改行文字を >指定して変換をかけるような時は、しっかり\r\nと書かないといけない テキストモードでnewlineを指定しなければ読ま込み時に\nに変換されてるのでstr.replaceは\nで大丈夫 htmlのタグつきソースじゃなく、webの文字だけを直接取得する方法ってないの つ 「クローリングハックあらゆるWebサイトをクロールするための実践テクニック」 >>636 直接取得する方法は、webページ上でCtrl+A -> 右クリック -> コピー で直接取得できます! ちなみにhtmlタグつきソースからwebの文字を抽出する正規表現はこんな感じだと思います import re re.findall(r'>([^<>]+?)</(?!script)', htmlタグつきソース) 検索結果から結果の文字列だけ取りたいんだけど BeautifulSoupじゃなくてもとれるの? re.findall で, > と < の間の入力文字を取るってこと やはり一時sourceから整形しないといけないんだね while 10: if 10<100: input("数字") print("NO") elif 10>0: input("数字:") print("no") print("END") 数字:10を入力するとENDになって 11~100を入力するとNOと表示されて 10~0を入力するとnoと表示されて戻るプログラム作りたいんだけど 何を入れてもNOとしか表示されない 超初心者以前の知能が足りない人用スレが必要なんじゃないかな gensim使ってword2vecのモデル作ろうとしてんだけど、単語の長さが1文字になっている 例えば富士山って単語があって、その前後にきっちりスペース入っててちゃんと区切られてても、「富」と「士」と「山」として学習されてる モデル作るときのオプションになんかあるんかなと思って公式のマニュアルみたけど、それっぽいのないしどなたか助け船ください >>642 while True: n = int(input("数字:")) if n == 10: print("END") break elif 11 <= n <= 100: print("NO") elif 0 <= n <= 10: print("no") >>644 gensimとか全然知らんけども、調べたら VECTORS_SIZE = 50 #次元数は20〜50必要と書いてる あとは文章を単語に分けるget_words周りをチェックしてみたらいいんじゃないでしょうか https://developers.goalist.co.jp/entry/vector_jisho >>645 レスありがとう そのベクトルサイズっていうのは単語の意味を決めるベクトルの次元数を示してて、単語そのものの長さじゃないんだ めっちゃアバウトに言うと 抱き枕=抱き締める、枕 …ベクトルサイズ2 抱き枕=抱き締める、枕、気持ちいい …ベクトルサイズ3 ほんで次元数が増えれば増えるほど意味の精度が良くなる感じ 単語にわけるのは問題ない、中身みてもうまく行ってるんで よくわからん… >>648 ぜひ回答も書いてスレの肥やしにしてください >>589 の処理を要約すると、 ~/.bash_profile に、下の1 か2を書いているだけ (1) export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" (2) export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/shims:$PATH" eval "$(pyenv init --path)" 漏れが、>>593 に書いた、anyenv 用の下の2行と同じ意味。 環境変数PATH を設定してから、仮想環境を実行する export PATH="$HOME/.anyenv/bin:$PATH" eval "$(anyenv init -)" bash で、下を入力すると、 which anyenv ~/.anyenv/bin/anyenv 次へ続く 前からの続き ただし、漏れの環境は、WSL2, Ubuntu 18.04。 君のOS や、シェルが何か分からないが、 シェルで下を入力すると、 which pyenv ~/.pyenv/bin/pyenv # 1の場合 ~/.pyenv/shims/pyenv # 2の場合 1, 2で、どちらかが表示されるのでは? まあ、多言語バージョンマネージャーのanyenvか、asdf を勧める >>596 >~/.pyenv/bin/ か、~/.pyenv/shims/ に、 >python, python2, python3 の内のどれかは知らないけど、あるかどうか見てみれば? これは、たぶん間違い。 ~/.pyenv/bin/pyenv か、~/.pyenv/shims/pyenv がある 結局、~/.pyenv/bin/ か、~/.pyenv/shims/ は、各人の好みなんだろう Python venv 仮想環境のフォルダー名 --clearとやったら全部吹っ飛んだんだがどうしたらいいの? m1 macでやっててユーザー名変えたら何故かvenvがactivateされててもpythonコマンドが2系だったんでどっかのクソサイト真似たら想定してない結果になった これ復元できるかね? 同じく仮想環境でのエラーについて… modulenotfounderrorの原因って何があるかね(モジュールはrequests) winのvscode上で、仮想環境内にインストールは当然してるし、スペルミスもない、vscodeとPython両方ともパスも通ってる あと何がある?追加インストールしたモジュール全部このエラーになるんだ m1macではエラーはでなかったから尚更意味わかりません 箇条書きで整理してから肉付けしてみて 自己解決すんじゃないかな >>652 そら仮想環境は--clearしたら全部消えるし、ユーザ名変えたらパス変わるし使えなくなるでしょ 何らかのバックアップとってないと復元は無理だと思う >>653 何もミスしてないってのが間違いなんじゃねーの とりあえずsys.pathをprintすれ >>653 Ruby ではモジュールは、モジュール探索パス内から探される 例えば、モジュール探索パスに、フォルダa, b, c が存在する場合、 その先頭から、つまりabcの順番で、モジュールが存在するかどうかを探していく 同名のモジュールが、aとc内にある場合は、 a内のモジュールが使われて、c内のモジュールは使われない なので、この順番が重要 >>656 https://dev.classmethod.jp/articles/change-venv-python-version/ こいつの記事を見てインストールし直すといいとか書いてあったからpip installでできる何かかなと思ってreqxirements.txt作ったけどやったあとにそういえばPythonってファイルのことモジュールって言うよなと思いだして見てみたら全部消えてた こいつの説明もおかしいしclearなんて何をクリアーするのか分からない名前にする方もおかしいしモジュールなんて紛らわしい名前にする方もおかしいし全部がおかしい しかも一番最後に唐突にpyenvなんて単語が飛び出してきてるあたりvenvとpyenvごっちゃになってるんたろうな 記事読んだけどpyenvとvenvを混同してるの>>660 だけやん 何するにもまず公式サイトの説明かコマンドのヘルプみない方が悪いよ classmethodだから変なこと書いてる可能性は低いが公式ではないからね ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる