【まず1嫁】くだすれPython(超初心者用) その59
当スレに★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(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ### うまいプログラムの構造がさっぱりわかりません…
入門書を終えて早速何か作ってみようと思い、画像を拡張子を変換するソフトを書いています
リーダブルコードにはシンプルであれとか単一責任うんぬんと書いて納得したつもりでしたが、いざ実践しようとするとわからんわからん
「画像を読み込む関数」、「画像を変換する関数」、「画像を保存する関数」
と作成してきましたが、pillowいじくって1、2行なので車輪の再発明どころか傷つけてる感じです
1つの関数にすべて集約してconvertと名付けたら良くないのでしょうか… >>4
標準ライブラリを見るとわかると思うけど、1, 2行だけの関数は別に悪いことではないし、珍しい事でもない
その関数のテストを書いたり、メンテしたりしてると実感できる
他の人の書いたコードとか特にそうだと思う
ていうか、色々詰め込んだ関数作ってしまってから、リファクタリングというものを知って悩むことも多いよね
最初から書き直した方が早いんじゃねみたいな convert関数でそれぞれの関数を呼び出せるようにした方が楽になりそう 忘れてたり知らない関数を触ろうとするとき、ドキュメントとかコメントも頼るけど実際たどるのはコードだから一つの関数に盛沢山だったら結構大変 極端な話、外からの役割がconvertなら内部はどうなっててもいい
最初から良質なコードは書けなくて当然
いつでもリファクタできる体制でいることが大事かな 画像処理の勉強してるんなら
pillow(PIL)使ったら負け 病∞∞∞∞!
漠∞∞∞∞∞!
向∞∞∞∞∞∞!
大∞∞∞∞∞∞∞!
度∞∞∞∞∞∞∞∞!
蔵∞∞∞∞∞∞∞∞∞! ご意見ありがとうございます
元画像を消去するかとか保存先はどうするかとか考えてたら複雑になってきたのでクラスを設けました
パスの扱いと画像の操作で2つ役割があるけどもう面倒なのでこのまま突き進みます
未来の修正は未来の自分に託す、ということで… 今の自分が把握できないコードを
記憶が曖昧になった未来の自分がどうにかできると思うのか… 成長した場合「だれだこんなバカなコード描いたのは」
成長してない場合「何描いてたか判んね」 pythonは関数が全部外から見られてしまうから
プライベートメソッドにする代わりに関数内関数にして隠すってやり方もある
なお速度は犠牲になる 見えるからって使うほうがどうかしてる
リフレクション系がお手軽だからこんだけ周辺ツール充実してんだし >>16
setter getterでそんなに速度落ちるの…… >>16
class の中の関数というかプライベートは
hoge() #public
_hoge() #protected
__hoge() #private
みたいなイメージ >>4
そのconvert関数のアイデアは、ファサードパターンとしてよく知られるデザインパターンのひとつ。
まあファサードはわざわざ勉強しなくてもすぐに気がつく小ネタ程度のパターンだけど、他には知っておくと役に立つものがいっぱいある。 f文字列はpython3.6だから7年前の新機能だぞ
もうなんのことわりも無しに使っていいだろ >古いPythonでは動かないから
"{}".format() だってもっと古いPythonだと動かないんじゃね tkinterでウィンドウサイズを取得したいのですがうまくいきません
https://techiedelight.com/compiler/?a1ad
root.geometry("500x300")を実行して、実際に表示されるウィンドウサイズもそのくらいの大きさなのですが
ラベルに表示される内容は"1x1+0+0"となってしまいます
"500x300+<実際の表示位置>"にならないのは何故ですか >>26
それだとroot.mainloop()に入ってからウィンドウが表示されるから
windowSize = root.geometry() の前に root.update() するか何らかのイベント駆動にすればいい >>27
あーそういうことだったんですね!
ありがとうございます! >>> p=0xf
>>> y=0x8
>>> t=0x1
>>> print(int(p),int(y),int(t))
15 8 1
0xfは16進数なのになぜ16ではないのでしょうか
ということはこの8や1も機械らしく0から数えたものを指している?
int('0xf') + int('0xf')のようなものに32を期待しているのにこれでは30ではないかと困っています
え、そうだったのかという初心者なりの困惑もあります
困らないものなんでしょうか >>29
エエエ
そこから?
10進数の一桁の最高値が10でなく9なのを見れば
16進数の1桁の最高値が15なのも納得できるはずだが 半泣きになりながらどこか承服しかねる気持ち😣
for文のiなどはたしかに0から始まることを意識して扱ったりしますが
こういうのは取り扱いやすく思ったままの値をくれるものだとばかり
>>> u=hex(16)
>>> print(type(u))
<class 'str'>
>>> print(u)
0x10
あっ!😡遁走 0xf最後の表記なfは16なんだとなぜか思い込んでた
0---9abc----fで桁上がりが16か、まさにそこから?って質問でした失礼しました Pythonとは関係ない話だけど
「午前11時45分」
「午後12時45分」
「午後1時45分」
時刻のこれだけは理解に苦しむ 「午後12時45分」は0時45分表記が自然だけど
「午前11時45分」「午後1時45分」は普通じゃね?こんなのが理解に苦しむ理由が分からんw まさにその二つに挟まれる違和感を言いたかったのであろう。
分かりにくいけどw >>32 >>33
なるほどね、その違和感を補正するには16進数という表記が10進数で書かれてるから対応が分かりづらくなると
じゃあ16進数で書けばいいな
16進数(10進数表現)
⇔ 10進数(16進数表現)
ということで数列(0,1,2,…)をベースに拡張するなら何進数であっても
N進数(10進数表現)
⇔ 10進数(N進数表現)
なのでした 1~12の数字のカテゴリ分けと午前午後のカテゴリ分けが
連動してないってことだろ >>38 超抜粋
> 日本における現行法令の上で「午前0時」、「午後12時」という2つの言い方が認められている。
> 「午後0時」という言い方は、日本における現行法令に基づく限り、「定義上は存在しない」ということになる。
午前は、0時から12時の13進数
午後は、1時から12時の12進数
ということか >>32
ドンマイ
自分は1mが60cmだとずっと思ってて恥をかいたことあり
人間は恥をかいて成長する >>42
午前11時59分の1分後は午前12時00分ではなくて午後12時00分だろ
午後11時59分の1分後は午後12時00分ではなくて午前0時00分だろ
午前は、0時から11時の12進数
午後は、12時から11時の12進数
何も間違っていない >>46
>>38 抜粋
> 子刻(正子)については、午前の欄の最初に「(午前)零時即午後十二字(子刻)」、つまり「午前0時=午後12時」と明記されている。
これだけ混乱させることが出来る日本の時刻表記は最高だぜ 午前零時=深夜24時
午後十二時=深夜24時
間違ってないぞ for/whileのelseが罠過ぎる
breakせずにループを抜けた時だけ実行されるって誰が使うんよこんなの
でも認定試験に出るから覚えないといけないんだよなー if/elseと考え方は同じ気がする
whileの条件がFalseになった一回だけelse内を実行するって事だよね? 具体的に言うとbreakしたのか最後まで回ったのかがすぐ判る
elseが無いと自分で別にフラグ用意するだろ?その手間が省ける やっぱ資格のための勉強って身につかんよな
わかるわかる
ばーーー do .. while がない方が痛い
余計なifが汚い while True:
なんかする
最後 if True: break
これでええやん 同等でも構造が明示的でないのが悪
シンタックスシュガーの存在をかんがえてみて for文でイテレーターはnextで次々に呼び出してるのは分かったんだけどlistもindexの最後まで同じような感じで呼び出してるの?
list型の変数をdir()で調べてもそれらしいものが分からなくて気になった。
c言語のfor(i=0;i<100;i++){}みたいなのがないか内部で行われてると思っていい?
ちなみにpythonもcも初心者です。 >>59
pythonのリストは
ja.wikipedia.org/wiki/連結リスト
の片方向リスト
[12,99,37]の内部表現は
[12| ]→[99| ]→[37| ]→[×]
のようになる
リストイテレータが最初にそのリストをを参照してた場合
nextを呼ぶと最初の要素12を返しイテレータ自身はリンクを一つたどって
[99| ]→[37| ]→[×]
を参照するように変わる
次にnextを呼ぶと99を返して[37| ]→[×]を参照するように変わる
イテレータが[×]を参照しているときにnextを呼ぶとStopIteration例外になる それって言語仕様で規定されてるの?
CPythonがそういう実装なのかな? CPythonの実装はポインタの配列
連結リストとは違うよ >>59
質問した者です。
みなさん、ありがとうございます。 質問です
https://sorabatake.jp/12047/
これをやってみたのですが 404 です
死んでますか? tkinterのText()を扱うクラスを作ろうとしたんですが次がわかりません
def __init__(self)内でtext = Text()とすると、別のメンバ関数でtextが見えずエラー
なので、クラス変数(?)として宣言したいのですが・・・どうすれば? 初めてリンター入れてみたらこれでもかってくらい指摘入って面食らいました
「そこまで言う意味ある?」って気持ちは湧きつつも、自分は文句言うほどレベル高くないし大人しく従ってますが
ググるとPEP8に従わないやつは糞だとか原理主義なこと言う輩が多いのが気になりました
こういう輩は無視してOKですかね? >>69
村のルールに従わない住人が村八分にされるのと同じで
PyhtonはPEPを信条に運営されているから
PEPに従わないヤツを排除する動きがあるのは当然
それを踏まえてどう行動するかは君次第 >>67
まずクラス変数とインスタンス変数とローカル変数とグローバル変数の
スコープの区別ついてないんじゃないか? ルールがないと混沌化するしイザコザが発生するから
たしかに原理主義的だけど公式で推すのが平和的でスマート >>73
Rustは自由だよ
例えばある企業があるいはあるプロジェクトが各々の独自のスタイルガイドを定めて用いてもよいとなっている
一方でスタイルガイドについて定めのない一般的な場合はRust公式のrustfmtの整形出力フォーマットに従う
標準のスタイルガイドが定まっているプログラミング言語は無用な論争や混乱もなく優れているよ クソみたいなルールを押しつけてくるようになるまでは役に立つよね 自由とかギークを何よりも重視する従来のOSS的価値観から見れば異端
プログラミングそのものが好きなのか、プログラミングはただの道具なのか
価値観の違い pythonの仮想環境って何で仮想環境って名前にしたの?
単にパス通したりして工夫してるだけで既存システムはそのまま使ってるだけなのに
仮想化って大げさだと思うけど
このネーミングに反対する意見って出なかったの? >>80
それは、virtualなんちゃらの歴史を知らなすぎかなあ。
hardware virtualizationだけがvirtualなんちゃらを名乗っていいわけじゃないから。 >>80
一つのマシンで複数の環境を切り替えて使える場合、各々の環境は仮想的であると言える
何もおかしなところはない 単に実環境を切り替えてるだけなら仮想的ではないわな
一部は共有してるけどあたかも独立した環境であるかのように扱える仕組みでも有れば仮想的と言える(Python自体は共有してるけど独立した環境であるかのようには扱えない)
まぁ文句言っても仕方ないのでよくあるPython独特の用語の一つだと思って受け入れるしかない >>80
jail とか vm とか色々なアプローチがあるな 環境変数によって環境を変えて動作を変えることは
単なる環境であって仮想環境たる要素が何もない話と同じかな 詭弁に近いけどPythonのみの隔離環境とみると
venvもchrootもDockerも同種にみえん?
元になったvirtualenvのサイトには
virtualenv is a tool to create isolated Python environments.
と書いてるし軽いノリで付けた言葉が残ってるだけにもみえる 仮想メモリとかだって一種の隔離環境なわけだしね。具体的にどんな要件を満たしてたら仮想で、満たしてなかったら仮想じゃないってものじゃない気がするけどな。
他の言語だって仮想環境って言ったりするでしょ。 例えば
実メモリアドレスに対して仮想メモリアドレス
実ディレクトリパスに対して仮想ディレクトリパス
そういう実と仮想がないならば
今回の場合は仮想環境ではなく単なる環境切り替えが正解かも あなたの拘りはわかったので自分の中で勝手に呼び分けといてください virtualイコール仮想的って不十分なんだよね
実質的にはみたいな意味もあって、公式には離婚してないけど実質離婚状態みたいな場合でもvirtual使ったり
他には実質的には内紛みたいな場合だと、virtual civil warみたいに表現するし、virtual civil war訳すときに仮想的な紛争とか訳したら誤訳になる
tPythonのvenvは実行環境ぐらいに捉えてる tは無視して
topコマンドのvirtの話入れようとした痕跡 >>94
>tPythonのvenvは実行環境ぐらいに捉えてる
「実質的には」はどこに行ったの?
名目的にもvenvはただの実行環境だからvirtualはそぐわないよね? まずvenvが対象にしているのはライブラリ依存関係の環境(==pip)である。
何がvirtualでないenvかを考えるとシステムにインストールしたPythonに紐づくpipかな。
様々な用途の開発で同じグローバルなpipを使うのは問題があるし、Linuxの場合はOSが使ってるから不用意にシステムPythonのpipを使わないほうが良かったりする。
プロジェクトごとに分離した依存関係管理ができるツールの1つとしてvenvがある
独立環境とか分離環境とかがより適切な命名だったのかもしれないけど、業界の慣習的な命名に後からとやかく言ってもしょうがないかもね >>100
>業界の慣習的な命名に後からとやかく言ってもしょうがないかもね
python業界だけの特殊な慣習だぞ グローバルのパッケージマネージャ使っても本来何の問題もない
それこそ業界の慣習
依存関係管理の単位がどのパッケージマネージャの実体を使うかに依存してるほうがおかしい パッケージマネージャーの機能不足を別のツールで補ってるだけだからな
他の言語で言うところのプロジェクトと目的は同じ venvってpython本体やライブラリをまるっとダウンロードして格納してるって知ってびっくりした。
一見ものすごい無駄に思えるけど、こういう単純なやり方が結局ベストってことだよね?
そういうのに耐えられるくらい仕様がシンプルかつスリムだというのも地味にpythonの強みなのかな。
他の言語で同じことやろうとしても簡単にはいかないよね。 >>104
本体や標準ライブラリはダウンロードしないぞ
どこ見てんだ? 「悪しき命名は悪しき設計の表れ」だと再認識させてくれる良い事例 >>105
venvのScriptsにpython.exe含め色々な実行体があるけど、これって本体じゃないのか。
たしかにdll類がどこにも見当たらない。dllは本体インストール先のやつを使うのかな?
てことはこのpython.exeは多田野ラッパー? >>107
python.exeはラッパーじゃなくてランチャーだよ あーなんか実験したらわかってきました。
ライブラリはパッケージマネージャ(pipやpoetryなど)のキャッシュを探しに行き
見つかればそれをコピー、なければダウンロードするわけですね。
賢いっすね。てか当たり前か。
ありがとうございました >>113
> 見つかればそれをコピー、なければダウンロードするわけですね。
コピーもダウンロードもしない。
モジュール検索パス(sys.path)から見つかれば実行されてなければエラーになるだけ コンテナ化が進めばvenvはなくなっていくのかな(´・ω・`) >>117
なくならない
Dockerに限らずだけど、コンテナ環境って結構複雑だし 日本人が作った、多言語バージョンマネージャーのanyenv なら、20言語ぐらい使える。
同様のツールに、asdf もある
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
echo $(anyenv root)
/home/ユーザー名/.anyenv
echo $(rbenv root)
echo "$RBENV_ROOT"
/home/ユーザー名/.anyenv/envs/rbenv
echo $(nodenv root)
echo "$NODENV_ROOT"
/home/ユーザー名/.anyenv/envs/nodenv site = '''\
外務省ホームページ
G7広島首脳コミュニケ
地域情勢
53.\
'''
uri = "htt" + "ps://www.mofa.go.jp/mofaj/files/100507034.pdf#page=35"
print( site.replace("\n", " > "), uri, sep="\n" ) >>117
わざわざvenvで済むものをコンテナにするのはないかなー。
必要なディスク容量も違うし、コンテナ環境のメンテの方がvenvのメンテより面倒だし。
libなんちゃらのライブラリの依存がとんでもない場合(CUDA使って機械学習とか)以外はあまり使おうという気にならないかな。 lambdaの方がdefで定義するより爆速じゃね
そうするとdef func()じゃなくてfunc = lambdaって書くデメリット何? defもlambdaも毎回評価しないし速度差あったとして気になる?
どちらかというと中途半端なlambdaは撲滅してほしい
表現力低いのに無理やり書いてるコードみると泣ける うわrichのトレースバック(エラー表示)めちゃ便利じゃんなんで教えてくれなかった
必死にすべての使った変数を表示する方法とか調べたりこういうところで聞いたりして諦め
確認用のprint設置を乱発してた(debug書式のは可読性的に邪魔でやめた)
たどり着いたのは詳細なエラー表示でflake8で「まあこれでいいか…解決には半歩も助けにならなかったな」とかやってたが
今なんとなくrichの前見かけた気になってたこれを設定したら舘ひろしもびっくり見えちゃうんですじゃん
https://rich.readthedocs.io/en/latest/traceback.html
https://rich.readthedocs.io/en/latest/reference/traceback.html#rich.traceback.install
似たような初心者のために書いておきます!
他にもこういったTUI環境でも使える必携補助装置があれば、ぜひ教えてください matplotlibのArtistAnimationだけど、なぜか一番最初に全グラフを合成したものが表示されてしまう
これって仕様ですかね?
Python 3.10
matplotlib 3.7.2 Pythonでコラボタートルの勉強をしてるのてすがこの図形を描くのにはどうすれぱいいのでしょうか?まったく分からないです…
https://i.imgur.com/xBVeKkU.jpg うわーまったくわからねえと思ったが
タートルってあれだよな学習用のとか考えてて思い付いたのは
図面1も2も亀さんを片側に曲がりながら円になって戻ってくるようにすりゃいいイメージだよな
指定した角形数で360度まわってくればいいから360割るいくつかでその角度ずつ曲がらせればよいのでは!
起点に戻ったら角度ずらしてまたやるんだろうけどそのずらしはちょっとわかんない! ずらしは中心から伸びてる線の分割数10の角度だな(たぶん)…
算数レベルもあぶない自分の考えを書き出してみました識者の意見求む
勉強してるなら自分で考えなさいと言いたい、これが出来る前フリとかした状態だろうしちょっと考えればって状況のはず 依存性の注入というのがいまだにわからんのだけど
なんの本買ったらいいの? 依存性の注入は、Ruby では出てこない
だって、Duck Typing だから。
メソッド名が同じだけで良いから
例えば、enumerable に対応するには、each メソッドがあれば良いだけ。
インスタンスにeachがあれば、enumerableのすべてのメソッドが使える
依存性の注入って言ってる香具師は、C# だけでしょ。
動的言語にあるとは思えない >>133
DIって話には出るが
ろくな解説書ないな
Androidのdaggerとかhiltとか探してみたが
DI自体についてはすでに知ってる前提の奴ばっかりだった 詳しいのはmark seemannの本
日本語では出てないかもしれない DIって車と車の部品の関係でよく例えられるけど、これだけならオブジェクト指向プログラミングでは普通なこと気がするんやが、なんか特別に勉強する必要があるんかな(´・ω・`) 超絶初心者です、Python出来る人でもネットに転がってるコードとかコピペして
ちょちょっと編集したりする事あるんですか? >>146
回答頂きありがとうございます。
そうなんですね〜 慣れて覚えてれば空で描けるが
以前に描いた自分のコードからコピペることが多いな 指先から紡ぎ出すようになるのに何年くらいかかりますか 何年やってもできない人はずっとコピペだよ
逆にできる人は1年目から空で書ける >>144
楽に逸脱行為できる仕組みを提供してくれてるんだけど
リフレクションが透けてキモいし一般化する必要はなかったよね
そこまでメタなものじゃなくて目的に直結した便利機能があれば十分 フロントエンドエンジニアのフリーランス平均年収867万円!98%がリモート可案件!
業界別ではSIer 950万円、SaaS 921万円|SOKUDAN調査レポート
一般的な平均年収599万円よりも、+268万円高い。全案件の56%が年収800万円超
フリーランス・複業・副業の求人マッチングサービス『SOKUDAN(ソクダン)』を運営する、
CAMELORS株式会社は、フリーランスWebディレクターの平均年収・時給について調査した
フリーランスフロントエンドエンジニアの56%が年収800万円超
・一般的な平均年収599万円よりも、フリーランスの方が867万円と+268万円高い
・週3日以下の案件が約62%、リモート可能な案件は98%
・案件が多い業界は、SaaS、Web制作、システムインテグレータ
・求められるスキルはJavaScript、React.js・Next.js、Vue.js・Nuxt.js、Typescript
・平均年収867万円、平均時給4,303円
・中央値年収819万円、中央値時給4,063円
・年収800万円以上が56%を占める
・年収1,000万円以上が22%を占める
・年収600万円以下よりも年収1,200万円以上の方が多い
一般的なフロントエンドエンジニアの平均年収 「599万円(求人ボックス・給料ナビ)」 以下の様なスクリプトがあります
class Student:
def __init__(self, id, name):
self.id = id
self.name = name
def main():
s1 = Student(1, "Mike")
print(s1.name)
return 0
if __name__ == '__main__':
exit(main())
ここで、Studentクラスの__init__内に以下のような処理を入れて、
自インスタンス名がs1ならself.nameを"John Doe"に
変更させたいと思ってます
if 自インスタンス名 == "s1":
self.name = "John Doe"
インスタンス側で、自インスタンス名を取得する方法がありますでしょうか
クラス変数にinstancenameみたいなものを追加しようかと思いましたが
わざわざインスタンス名と同じ値を設定しなければならないというのもイマイチに思ってます >>156
無理
s1 = Student(1, "Mike")の行は右辺から評価されるわけでinitが実行されるタイミングでその処理結果を代入する先のインスタンス変数名を把握しようがない >>157
評価の順番で無理ですか
分かりやすい説明ありがとうございました
__init__ではなく、別のタイミングで呼ばれるクラスメソッドでは方法はあるのでしょうか
たとえばクラスに
def check():
if 自インスタンス名 == "s1":
self.name = "John Doe"
といったメソッドを追加して、メイン側では
s1 = Student(1, "Mike")
s1.check()
みたいにする等して、インスタンス作成後であれば取得することは可能なのでしょうか あってるけどアサイン後ならわかるのかとミスリードせん?
コンテキスト側からは追えないこともないけども >>158
煩雑なだけだからできないと考えた方がいい s3 = s2 = s1 = Student(1, "Mike")
としたときどうすんのって話もある >>160
なるほど
いろいろ回答ありがとうございました
処理全体を見直そうと思います pip searchってもう使えなくてpypi.org見れって言ってくるんだけど、これってふざけてませんか?
CUI主義の人はこれだと困るじゃないですか
なんでこんな仕様変更したんだろう 同じ名前なのにこいつはglobalでこいつはlocalですよ
そんなつもりじゃないですよね?って教えてくれる
terminalとvimでの環境でも使えるなにかってありますか
エラー報告器というのか、ハイライトというのか
なんだなんだどこかの仕掛けが反映されてないぞ、二つの別のリストがあるのではという状況になってます vim-lspで好きなランゲージサーバと連携したらつよつよにはなるけど
globalつかうコードを避ける、使うのはアクセサだけにするなど自制するのがシンプル vim-lspやランゲージサーバーを知らなかったので調べてみますありがとう
なかなかシンプルには頭の中からしてまとまらなくて…頑張ってみますw vscodeとpycharmがただで使えるのにvimで頑張るのか(´・ω・`) >>168
スマホのtermux上で遊んでるだけなので、楽しんでたプログラムが思いがけず大きくなりました
linuxディストリビューションを入れることも可能なのでvscodeも試してみたことはあります
スマホ画面ではそう使いやすくは無く、初心者なのでなおさら苦悩が増えました
といった理由でterminalでvimとなってます
さっきpluginとしてvim-lspとPlug 'mattn/vim-lsp-settings'を入れてみました
黄色や赤でスペースがなってない!などと自分のコードをド派手に隠します…
printと書くとポップアップで自分には参考にならないpython docsと似た仕様をあらわす英文がでます
いまのところ使いこなせそうにありませんw yahooの再設定で生年月日わからんから生年月日を検索するツールを作りたいん
プログラム知識ないからAIで作らせたいん
どうすればいいんですか? AIの知識があるなら
プログラムもAIで作ればいいんじゃないかな 総当たりじゃ解けないようになってるはず
サポートに問い合わせろ 問い合わせても「お答えできない」としか返ってこないから意味ないん 宿題にはお答え出来ません
宿題と判らないように質問してください 30代Pythonバカチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! 「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 30代Pythonバカチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! スレタイにふさわしい質問ですがryeってのどうですか?
Pythonバージョンの切り替えとかほぼしないしpoetryで不満ないんですが
この手のツールはあんまりフラフラ変えないほうがいいですよね? Rustで作られた
Pythonの環境管理・installなどのツールか
venvなどよりryeおすすめって記事をよく見る 日本人が作った、多言語バージョンマネージャーのanyenv がある。
同様のツールに、asdf もある。
他には、Docker もある
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv 30代Pythonバカチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
そしてスレ主がその極悪非道の強姦魔バカチョンです!
Python使う奴はチョンが多いです。
しかも北朝鮮人ですから犯罪なんでもやります。
必ず家族の戸籍を確認しましょう! pythonは俺が作った最強の系が多すぎて困る
豪語するのはデファクトになってからにしてくれ vscodeのプラグイン分割されたせいか動きがおかしいしやつがいくつがあるな(´・ω・`) aleにエラー警告など出してもらうことにしてみたらすっきりして満足なのですが
警告内容がステータスラインとコード中のふたつ表示され邪魔で
コードのなかには赤とか青のハイライトだけでステータスに表示されてればよいなと思いました
どのように設定すればよいですか
自分の.vimrcのlspに関係する部分
call plug#begin('~/.vim/plugged')
Plug 'prabirshrestha/vim-lsp' Plug 'mattn/vim-lsp-settings'
Plug 'w0rp/ale' call plug#end()
if executable('pyls') au User lsp_setup call lsp#register_server({
\ 'name': 'pyls', \ 'cmd': {server_info->['pyls']}, \ 'whitelist': ['python'], \ }) endif
" vim-lsp left signcolmn off
setlocal signcolumn=no let g:lsp_diagnostics_enabled = 0 " 警告やエラーの表示はALEに任
せるのでOFFにする
" my ale setting let g:ale_linters = { \ 'python': ['flake8', 'mypy'], \} pywebview から webview2 で表示させた中身は、どうやったらスクレイピングできますか? pythonは門外漢なのですがコードを読めずに困ってます
dp=[[0,0] for _ in range(N)]
dp[0]=[1,1]
これは何を表していますか?
dp[i][0]%=MODとか出てくるからdp[i][j]は数値だと思うのです dp=[]
for _ in range(N):
dp.append([0,0])
dp[0]=[1,1] 全ての要素が [0,0] である N-1 個のリスト dp を作成
dp の最初の要素に [1,1] を代入 for文の変数が_ってこの変数自体を指定することはありませんよってポーズ? ふつうは言語機構つかって
[[0,0]] * N
と書くけど知らないと魔法にみえるからありなのか >>201
[0,0]のリストが同じIDでN個入ったリストができんだよね…… たしかに
dp[0]=[1,1]
でしか操作しないならタプルにしてるだろうし撤回するわ 同じ実体を指してるリストが欲しいケースってそんなにあるんだろうか
簡便な記法をレアな用途に当ててしまってる気が >>195
N=3だとすると
dp=[[1,1], [0,0], [0,0]]
にしている webアプリを作ろうと思って、ローカルの環境でsqlite3を使って作ったDBとflaskとを組み合わせて開発しました。
しかし、webに公開することを考えると、mysqliteのような簡易なDBではなくちゃんとmysqlを勉強してそちらを使うように作り変えるべきでしょうか? >>209
同意だけどアクセス権とかどうすんのかな 読みだけならアクセス数がそれなりに多くても平気
不特定多数が同時に書き込んだり
書き込み時に読み込みがブロックされると困る仕組みならサーバー型のデータベース使う # >>121
title = "第124回『「韓国徴用工問題」動かぬ証拠で一気に終結』【「日本製」普及Ch】"
uri = "htt" + "ps://www.youtube.com/watch?v=iu4jdRIKxUU&list=PLm1mQfWiRy2LycHWplMELJtgLje8YaeHL"
print( title, uri, sep="\n" ) def wrapper_func(*args, **kwargs):
__#何かの処理
__return func(*args, **kwargs)
def func(aaa, bbb=None, ccc='CCC'):
__pass
例えばですが、上記のようなラッパー関数を作ったとき、元の関数へ引数をそのまま渡すために *args, **kwargs とか使うと思いますが、
この書き方だとVSCodeとかでwrap_funcを使用するコードを書くときのポップアップの引数表示とか補完で元の引数名が出てきません。
docstringとか書けば説明欄は表示させられますが、*args, **kwargsを使いながらも、元の関数の引数名を補完や表示させることってできないでしょうか?
ちなみに、デコレータとしては使いません。 def wrapper_func(*args, **kwargs):
__#何かの処理
__return func(*args, **kwargs)
def func(aaa, bbb=None, ccc='CCC'):
__pass
例えばですが、上記のようなラッパー関数を作ったとき、元の関数へ引数をそのまま渡すために *args, **kwargs とか使うと思いますが、
この書き方だとVSCodeとかでwrap_funcを使用するコードを書くときのポップアップの引数表示とか補完で元の引数名が出てきません。
docstringとか書けば説明欄は表示させられますが、*args, **kwargsを使いながらも、元の関数の引数名を補完や表示させることってできないでしょうか?
ちなみに、デコレータとしては使いません。 その例だと何もしなくても普通にwrapした関数の引数が表示される http://imgur.com/woxUIFm.png
http://imgur.com/fGFQYAZ.png
うーん、ヒントでは *args **kwargs としか表示されないですね…
何か別の拡張機能が必要ですか? ぜんぜんためしてないけど
wrapper_funcの引数がreturn func以外で使用していないところまで分かるってことか
なかなかやね スクレイピングしたデータをエクセルブックに保存しようとしたら失敗した上、エクセルブックのサイズが0になり開けなくなりました。
また以前のデータも消去されてしまいました。
復元する方法はありませんか? 果たして本当に保存に失敗したのだろうか
同じ名前で空のワークブックを造ってしまって
そのまま保存しちゃったんじゃね mode=wとかで開いて上書きしちゃうのはあるあるミスだろうね スクレイピングって要は他人が一生懸命作ったWebコンテンツをごっそりデータとして盗む泥棒行為だろ?
Pythonをそんな用途に使うんじゃない chatGPTとかの学習ネタはWEBスクレイピングだね
画像も転がってるし、使える。 Googleとかのクローラーもスクレイピングの一種だよね # >>216
# 反日教育は嘘ですよ〜〜2023年9月13日 フリージャーナリストの朴さんの経験。|채널fujichan
"".join("h_ttp_s://_www_.you_tube.co_m/wat_ch?_v=v_M1v_YrsA3_Ko".split("_")) vscodeで.htmlファイルの中に書くpythonのコードを、.pyファイルの中に書かれたpythonのコードと同じ規則で色付けしてもらうにはどうすればいいですか?
できれば<py-script></py-script>で囲われた部分だけを色付けしたいです。 Ruby では、埋め込みRuby・ERB で、HTML ファイルを書く。
<% 〜 %>, <%= 〜 %> を使って、HTML内にRubyの構文を書く
<% price = 2500 * 1.05 %>
<p>
本の値段は<%= price %>円です。
</p>
ERBの実装にもよるが、< > & " など、
HTMLの特殊文字がエスケープされるものと、されないものがある
<%= price %> これだけでエスケープされるものと、
<%=h price %> エスケープするのに、h が必要なものがある
ファイル名は、a.html.erb の形式で、
VSCode に、ERBに対応する様々な拡張機能がある ~フルパス~\python.exe ~.py
だときちんと動くのに
c:\windows\py.exe ~.py
だと
No suitable Python runtime found
ってエラーになるのはなんで? >>234
py とだけ打ち込んだらなんて表示される? javascriptのオブジェクトの分割代入の表記って今後Pythonにも実装される可能性ってあるの?
obj={aaa, bbb, ccc, ddd}
{aaa, bbb} = obj (必要なキーだけ代入)
あと変数名とオブジェクトのキー名が同じ場合にキー名を省略できるのとか。
両方さわってると、「あーこの書き方できないのかー」って思うことが多く。 Pythonの辞書のキーは文字列に特化してなくて
JSONみたいに引用符は省略できないから飛躍が大きい気がする
リフレクションでいろいろ丸見えなので実現するのは容易 どう考えても右
左は関数の仕様変更に他の関数が引っ張られてスパゲッティになる 矢印の種類と意味が左と右で違うのが気になるがどちらの構造がいいかは状況次第だから処理内容を考慮せずに判断すべきではないよ 処理内容次第の判断基準をざっくり言えば
関数A,B,Cがメイン関数で実行する抽象度として揃ってるなら右
抽象度が関数A > B > Cなら左 >>244
もうちょっと易しくかいてぅれてもいいよ 初心者だしBでやってるけどAってどんなやつなんだBASICのような感じなのかな? こんなん 各2ヶ月かかった
ttps://dpaste.com/2EZ82ME9V
ttps://dpaste.com/2P2SFYGYL コードはすまん読んでないけど
関数から呼ばれる関数は基本的に汎用的な関数として定義されているものであるべきと思う
例えばパスから画像を呼んでバイナリ化して返す関数を
引数にバイナリを指定し、画像加工する関数群(画像加工の種類ごとに関数を用意)からそれぞれの冒頭で呼び出す
とかなら自然かなと
汎用的ではない関数を、別の関数から呼ぶ…とかだと
渡したい引数を一旦メイン処理に戻してそっちから渡すBのやり方で書きたいなと思う 右だとしても
class X 造ってその中に A, B, C 定義して
main からは x = X() してから x.A() x.B() x.C() が良いと思う >>251
そのためだけにクラス作るのは馬鹿らしい
複数の関数を一つに閉じ込めたかったら関数内関数でいいじゃん globalでもlocalでも引数で同じ情報を持ち回るのが馬鹿らしい 勉強のためにとあるWebページのRPA用のフレームワークを自作しようとしてるんですが
ページを操作するクラスをStateパターンの見よう見まねで実装しようとしたところ
画面を遷移させる部分で循環インポートになってしまいます
できればmain.pyからの使い方は変えずに実装したいのですがどうすればよいですか?
操作内容は画面の状態によって異なるのでオーバーライドは無理な状況です
メソッド内でimportすれば解決するような情報もありますが
できればimportはソースコードの最上部で済ませたいです
コードは以下の通りです
main.py
https://techiedelight.com/compiler/?83b5
rpa.py
https://techiedelight.com/compiler/?577e
presentation/__init__.py
https://techiedelight.com/compiler/?eacd
presentation/presentation_base.py
https://techiedelight.com/compiler/?b70f
presentation/a_presentation.py
https://techiedelight.com/compiler/?272e
presentation/b_presentation.py
https://techiedelight.com/compiler/?08a0 >>254
すみません
a_presentation.pyとb_presentation.pyのelseの中で
self._set_new_p(p)のあとにbreakが必要でした >>254,255
自己解決しました
Mediatorパターンが参考になりました
遷移先のPresentationクラスの生成をCreatorクラスにまかせて、
PresentationクラスはそのインターフェースCreatorBaseのインスタンスを持つようにしました
CreatorクラスのインスタンスはRPAクラスのメンバーにしてPresentationに__init__()の引数として渡しました
すべてのPresentationクラスの実装のインポートをCreator内に集約することでPresentation間での循環インポートを解消できました 循環インポートを避けるには
from .a_presentation import APresentationじゃなくて
import presentation.a_presentation as A とかにして
A.APresentationの形で使うだけでも大丈夫 それにしても随分とパターン熱に冒されてるねー
StateパターンになってないしStateパターンを使うべきケースでもないと思うんだけどな pip installでインストールできるようにパッケージ化してみたらいいと思う >>257,258
ご回答ありがとうございます
右も左も分からない初心者なもので見苦しくてすみません
調べている中で257の方法も試してみたのですが、
それだとmain.pyでAの方のif文は実行されたのですがBの方は実行されませんでした
なぜでしょうか?
あと画面の状態と操作を扱うクラスなのでStateかと思ったのですが違ったのでしょうか? >>260
度々すみません
Bが実行されないのはset_new_pしたあとnew_pを参照していないからでした >>260
>あと画面の状態と操作を扱うクラスなのでStateかと思ったのですが違ったのでしょうか?
ある画面が状態Aでも状態Bでも状態Cでも
画面を操作するクライアント側のコード(今回で言えば主にmain)はどの状態であるかを意識ぜずに同じメソッドを呼び出す
呼び出された側が状態に応じた振る舞いや状態遷移を行うんだけどその際呼び出された側がif文で条件分岐するのではなく各状態ごとにクラス等を用意してポリモーフィズムで分岐させるのがStateパターン >>262
ありがとうございます
具象クラスのメソッドを直接操作してるので何かが違うんだけどとは考えてました
すると今回のように呼び出し側が画面に合わせた操作をする必要がある場合はどういう設計がベターでしょうか?
循環インポートの解消に関しては
from . import a_presentation as A
でも問題なく動きました
これはAPresentationの定義の読み込みが呼び出し時までされないということでいいですか? 手始めにPython3エンジニア基礎試験合格したんだけど、次何したらいいの? >>265
趣味ならそこがゴール
あとは作りたいアプリを存分に作りまくってくれ >>266
特にない。何ができるのかよくわからん。
株価のデータをウェブから持ってこようと思って始めたが、それはできた。
それ以外はない。
当面、基礎試験はの次の実践試験の方やってみながら作りたいもの探すか >>267
作りたいものはないけど情報工学技術に興味があるということかな
それなら専門学校か大学に行くとよいのでは
題材は向こうが勝手に用意してくれる
独学で専門技術を身に着けたいというのは無理ではないけどモチベが続かないだろう >>267
株価とか出来高とか板とか見て自動で売買するアプリ作ってはどうでしょうか?
儲かりたいなら優待を AIペイントすごいなGUIもこれで良いよな
プロンプトを絵コンテみたいに書いちゃえばほぼ完成になりそう Python では転職できない。
だから、学校へ行っても仕方ない
YouTube で有名な雑食系エンジニア・KENTA が、既に言ってる。
初心者のキャリアパスは、Ruby on Rails → Go のみ
PHP, Scala はオワコン認定した
Pythonで必要な人は大学院数学科か、AWS 機械学習資格。
文系は無理。勉強のほとんどがプログラミングじゃないから。
だから、一発逆転狙いの文系のアホには、Railsがチート職業と言われるわけ
ただし、YouTuber のかよちんみたいに、
Railsをやっている人は、Django へ転職できる
全てのバックエンドは、Rails, AWS Solution Architect が基本だから。
この2つが米国年収で2千万円!
まず転職で聞かれるのが、RailsではなくPythonを選んだ理由。
ここで皆が脱落する。
大学院数学科じゃないと、まず無理 >>273
Pythonは巨大桁数を扱うのに便利。
Windows電卓:9999桁(10^3桁)
LM217:2147483647桁(10^9桁)
Python3(Decimal):999999999999999999桁(10^17桁)
Pypy2.7.13(Decimal):(10^10^5桁)
Python+Mpmath1.3.0:10^18446744073709551615桁(10^10^19桁)
あなたの宣伝するRuby on Railsは桁数をいくつまで手軽に扱えるの? require 'bigdecimal'
n = 0 # デフォルト値
mf = BigDecimal::limit(n)
a = BigDecimal("10")
b = BigDecimal("7", 40)
mf = a ** a ** a ** b
このくらいでエラーになるぞ。
https://paiza.io/projects/9WG_gULsMWWWrrBnY9H8nA
bを6にするとエラーにならないからこの程度が限界か? Rubyは説明が少なくて面倒くさいな。ideoneも対応していないし。
https://docs.ruby-lang.org/ja/latest/library/bigdecimal.html
サンプルのカンマで区切った2つ目の40という数値の意味の説明もないし。
有効桁数か?でもサンプルから考えると40なのはおかしくないか? Rubyのbigdecimalは解答を独自のフォーマットで返してくる。
https://paiza.io/projects/RKARq4tN_-ec8Nam_zImxA
普通は
2.003529930406846464979072351560255...7777506072339445587895905719156736e19728
の整数1桁と小数点以下とeの値で返すはず。 PythonスレでRubyの話してるのはアホなんか >>273
ケンタは「文系学部出てpython出来ても職はない」と言っている
まあ首都圏にはあったりするが
また「文系学部出てAIの仕事をしたいといっても仕事はない」とも言っている
pythonはAIで良く使われているので
AIの仕事の無い地方には仕事がない、
という事になる
だがkenta氏がこんな発言をしたのってもう4年以上前だなあ
今の情勢に合わせてChatGPTをローカルに置いてちょっとカスタマイズしたい、なんて仕事も出てくると
ソースコードを壊さないように弄る必要も出る
その程度で「数学科出身じゃないからやらせない」「情報工学出身じゃないからダメ」というのは
無駄の極み KENTAが文系学部出てpython出来ても職はない
KENTAが文系学部出てAIの仕事をしたいといっても仕事はない
ということだろ モジュールによっちゃ日本語の情報が少なくて外国のページ見て学ぶなりコピペしてくるなりしないといけないんだが
みんなそれくらいの英語は余裕でできるの? サードパーティのモジュールはほぼ英語でしか説明ないけど
平易な表現しか使ってないから翻訳併用すれば中学英語レベルで十分理解できる
紹介記事は極論作者のメモ書きにすぎないからね リンク先のように書くと
https://dpaste.com/2LJ2MSMSX
piyoはNoneの既知のメンバーではありませんと怒られますが
回避するにはcastになるのですか?
他の言語みたいにNoneで無いことが分かっているなら!みたいに短く書く方法はないのでしょうか pythonで変数スコープをどうにかしたいのですが定石とか何かありますか?
変数宣言せずに使えるのでスコープ外れてるのに値を入れたりして名前が同じ別スコープの変数が新たに出来てバグ子温床と発見に手間が掛かります
正直言って変数宣言にvarを導入して欲しい感じなのですが型チェックがオプション的に使える様に何か方法は無いでしょうか? >>288
スコープが外れるってどういうシチュ?
関数内での代入は全てローカル扱い
これを心得てさえいれば何も困らんと思うのだが >>288
参照可能な別の変数を上書き定義してるようなケースはpylintとかでチェックすれば警告が出る
変数がスコープ内にあると勘違いして既存変数に代入したつもりが
新しい変数を定義して初期化しただけというケースはテストを書かずにチェックするのは実質無理
普通はそんなことにならないと思うけどテストを書くか変数定義にキーワードを要求する言語に乗り換えるかの二択 Copilot使いだしてからないけどself付け忘れはある 人間に独立した人格が有るように、チンポにも独立したチン格が有る
これは親クラスと子クラスの継承関係である
チン格とはつまり「愚息」であり、自分にも他人にも成り得る
これがオブジェクトの多態性と表現される
オシッコするときのチンポは随意筋、勃起するときのチンポは不随意筋
このように時と場合によって真逆の性質を併せ持つことができる
随意筋 不随意筋
↖ ↗
チンポ
自然言語処理において語の意味は文脈によって変わるので、Pythonのような多重継承が不可欠ね! FANZAでエロ動画の価格をスクレイピングしようとしてるんですが
label for="4k"配下のdtタグのtextを出力したいんですが、for属性をfindするとエラーが出ます
print(soup.find("label",for_="4k").find("dt",class_="col2").text)
別のやり方じゃないとダメでしょうか?
https://www.techiedelight.com/compiler/?eb71 >>293
予約語回避のためのショートカットはclass_だけなのでattrsで書く
soup.find("label",attrs={"for":"4k"}) >>293
独自記法が必要なfind/find_allは捨てて
標準的なCSSセレクターが使えるselect_one/selectを覚えたほうがいいよ
ブラウザからコピペしたりブラウザコンソールでそのまま確認できるので
soup.select_one('label[for="4k"]').select_one('dt.col2').text 今既存のRPA用のフレームワークを改良しています
オリジナルはこのようなコードになっています
Controllerは操作のためにDriverのアンダースコアつきメンバーに触ってるんですが
設計上しょうがないですか? ruffで警告が出るので気になります。
それともプロパティを公開して
フレームワーク利用者側からは呼ばないようにドキュメントを書く方がいいでしょうか?
Controllerは状況に合わせた専用のメソッドを持つ子クラスを都度使い分ける想定です。
https://techiedelight.com/compiler/?ce6c99 >>297
スクレイピングから夜のおかずまで
幅広く手掛けるpython >>298
モジュールレベルの可視性とクラスレベルの可視性を使い分ける
クラスの外部からアクセスする前提のプロパティやメソッドならアンダースコアは付けない
利用者側コードでDriverを生成させる必然性はなさそうなのでフレームワーク側でDriverを生成してControllerをinitして返すAPIを用意する
__init__.pyでモジュールのユーザーに公開すべき内部モジュールを選別する
公開モジュールで非公開モジュールをインポートするときはアンダースコアを付ける >>300
ありがとうございます。利用者はControllerを直接受け取るということでいいですか?
最初に貼ったコードはちょっと省略しすぎました
実際には以下のようにDriverはwith文で使えるようになっているのですが
この場合もControllerを直接渡した方がよいのでしょうか?
たとえば手動操作とRPAからの操作を切り替えるような状況だと
Driverは最初に起動しておいてRPAが必要なときだけ都度Controllerを生成しています
https://techiedelight.com/compiler/?dc5c エ○画像とそれ以外の画像を振り分けるプログラムなんですが
実行するとmodel.fitでエラーが出ます
解決策がさっぱりわからないので助けてください
[ソースコード]
https://techiedelight.com/compiler/?c301
[エラー内容]
https://i.imgur.com/BIkFIiE.jpg >>302
もうプログラミングはAIに聞く時代だぞ
ChatGPTのプロンプトに
「Pythonの下記のコードで~というエラーメッセージが出る原因を教えて」とタイプしてShift + ENTER押して
コードをCtrl + Vで貼り付けてENTERすれば何かしらアドバイスしてくれる 無料版のChatGPTだからダメなのであって有料版のChatGPTなら新鮮なデータも答えられるでしょ
金払いたくなければBingやBardのでもいい >>305
Plusでも無理
やってみれば分かること バカとハサミは使いよう
何でもChatGPTに聞くのはバカ プロンプト:Exception has occurred: AttributeErrorが起きます
以下ソースコード添付
===================
あなたのPythonスクリプトでAttributeErrorが発生しているようですね。
これは通常、オブジェクトが指定された属性やメソッドを持たない場合に発生します。
スクリプトを確認して、問題の原因を特定しましょう。
まず、kerasのインポートに関して、
tensorflow.python.kerasを直接参照するのではなく、
tensorflow.kerasを使用することをお勧めします。
これはTensorFlow 2.xでの推奨される使用方法です。
また、predict_classesメソッドは古いバージョンのKerasで使われていましたが、
新しいバージョンでは削除されています。
代わりにpredictメソッドを使用し、
予測結果から最大値のインデックスを取得する方法に変更する必要があります。
以下の変更を提案します:
import kerasをfrom tensorflow import kerasに変更します。
from tensorflow.python.keras.utils import np_utilsを
from tensorflow.keras.utils import to_categoricalに変更し、
np_utils.to_categoricalの使用をto_categoricalに変更します。
from tensorflow.python.keras.models import Sequentialを
from tensorflow.keras.models import Sequentialに変更します。
同様に、他のtensorflow.python.keras.layersのインポートもtensorflow.keras.layersに変更します。
model.predict_classesの代わりに、np.argmax(model.predict(Z), axis=-1)を使用して予測されたクラスを取得します。
これらの変更を行っても問題が解決しない場合、または他のエラーが発生した場合は、具体的なエラーメッセージを教えてください。
それに基づいて、さらにアドバイスを提供できます。 AttributeError が発生する場合、
これは通常、オブジェクトが期待されている属性を持っていないことを意味します。
エラーメッセージが具体的にどの属性が見つからないか示しているはずですが、
提供されたコードからは特定のエラー原因を特定するのは難しいです。
しかし、コードを見ると、いくつかの潜在的な問題点が見られます。以下にいくつかのポイントを挙げてみます:
Kerasのインポート方法: import keras と from tensorflow.python.keras を混在させています。
一般的には、from tensorflow import keras のように TensorFlow 2.x と一緒に Keras を使用することが推奨されています。
predict_classes の使用: TensorFlow 2.x 以降、predict_classes 関数は削除されました。
代わりに model.predict を使用し、最大の出力値を持つクラスを選択します。
ファイルリストの作成: file_list がどこにも定義されていないようです。
これは score = list(zip(TEST, file_list)) で使用されていますが、この変数の定義が見当たりません。
========
エラーメッセージをプロンプトに入れろと言われたが入力するのめんどくさいのでやってない >>308
やっぱすげーわAI
こんなの瞬時に提案できる人間なんてこの世にいないだろう
もう開発スキルを磨く必要はなくて、AIをいかに使いこなすかを勉強した方がいい 上のはChatGPT4の場合
=====
ChatGPT3.5の場合
このコードの実行中にAttributeErrorが発生しているようです。
AttributeErrorは通常、属性(Attribute)に関するエラーを示します。
コード内のどの部分でこのエラーが発生しているかを特定するために、
エラーの詳細メッセージと行数を提供してもらえますか?
エラーの詳細メッセージや行数を提供いただければ、
より具体的なアドバイスを提供できるかと思います。 何か掠ってたら、あの占い師はよく当たると思っちゃう人って滑稽だよね? 30代のPython男は反日のチョンです。
職場から追放しましょう! くそどうでもいい質問ですみません
pythonanywhereに登録した後に自動送信される
Hi there, are you getting on OK with the site?
というタイトルのメールの
This message is just to let you know there is a real, live human here (well, a developer actually; not sure if that counts).
の”a real, live human”と言う部分が太字なのですが、これは何のつもりなのですか?何が言いたいのですか? >>315
ChatGPT3.5に聞いた結果
これからはAIに聞く時代。人に聞くのは時間の無駄
--------------------
PythonAnywhereが自動送信するメールの中で、"a real, live human" の部分が太字になっている理由は、おそらくユーモアや親しみを込めた表現として使われています。この表現は、人間とコンピュータの違いを強調し、サポートが人間によって提供されていることを強調するために使用されている可能性があります。
通常、自動応答メッセージやウェルカムメールにおいて、太字やカジュアルな表現が使われることがあります。これは、ユーザーに友好的であると感じさせ、サービス提供者とのコミュニケーションが人間対人間であることを強調するためです。太字は通常、強調や注目を引くために使用されます。
このフレーズはあくまで軽い冗談や親しみを込めたもので、ユーザーに対して友好的な印象を与えることが意図されていると考えられます。 ちなみに1万円札もでてきたけど、肝心の探しものは見つからなかった 技術的な難易度の低い課題にpythonで取り組むと手が止まらないな
ググりながら、リファクタリングしながら、一日で追加のコードを300行も書いたら手首がちょっと痛くなった
プログラマーは手首をヤると一発で引退だから怖い pyinstallerでスタンドアローンで動くはずの電卓アプリのEXEを作ったら、勝手にインターネット通信しているのか知らないが、
DefenderでTrojan:Win32/Wacatac.B!mlにされた。
これってpyinstallerでEXEを作ると常に出るの? 1 センチメートルは 10 ミリメートルに変換されます。
変換する長さ n センチメートルが与えられるので何ミリメートルかを出力して下さい。
宿題がわからへん。 プログラムとして書けないのかプログラムじゃなくても答えられないのか
プログラムとして書けないだけならデータ入力がどのようにされるかがわからないのか計算式の書き方がわからないのか表示の仕方がわからないのか
それぞれ問題を切り分けて把握したら先生にその内容を聞けばいい >>321
何がわからないのかわからん
ちゃんと推敲してくれ >>321
たとえば5センチメートルが何ミリメートルかはわかりますか モザイクを検出して、透過に塗りつぶして、別の画像に貼り付けるプログラムを
作ったので良かったら遊びにきて下さい
wikiwiki
同人誌同人ゲーム無修正化差し替え備忘録まとめ Wiki*
https://wikiwiki.jp/mozanashi/
左のメニューのところにプログラムを貼り付けてあります システムのPythonが3.0版だとして、最新3.11版を使うにはどんな方法が?
・システムPythonは更改しない前提
・Dockerコンテナは使いにくいのでその他手段を 改変したいなら自前ビルドもわかるが
そうじゃないなら切り替えも楽なpyenvでいい >>328
自前でビルドするかどうかは全く関係ないやろ embeddable pythonという方法もある >>330
自分でシステムのPythonとは別に好きな場所、好きなバージョンのPython入れるのに自分でビルドするのも方法の一つでしょ
Windowsみたいにインストールパッケージ用意されたないならだけど
>>326はそういう質問じゃないんか? pyenvもたしかソースからビルドしてなかったっけ >>332
自分でビルドしたPython がシステムPythonのライブラリを参照して不具合が起きると困る。自分でビルドするにしろ、出来合いの物を使うにしろ、そうならない方法を訊いた。 >>332
CPythonを自前でビルドするかそれともビルド済みバイナリを持ってくるかという話と
システムデフォルトのPythonをキープしたままそれとは異なるバージョンのPythonも同時に使えるようにするという話は直交した話やで
そんでもって質問は後者についてやろ >>336
うーん、よく分からないが、
システムPythonを必要とするシステムコマンドを叩くと、何らかの方法で導入したPython 3.11 を起動するようだと困る。
そうならないよう Python 3.11 を使える、そんな方法を訊いた。
自分でビルドして、上記を満たせるなら、自分でビルドする事で構わない。 ビルドしてもしなくてもシステムPythonとは別の場所にバイナリを配置してそこへのpathを指定して使うことになる
pyenvじゃなくても公式からダウンロードしてもいいしanacondaを使ってもいいしhomebrewやaptを使ってもいい
macosやlinux系だとシステムPythonに依存する場合は基本的に/usr/bin/pythonを指定してるのでこれが指すバージョンを変えずに自分の使いたいバージョンへのpathを通すことになる どれを使うかという指定もなければ、パスという概念もないんだろうな。 >>334
>自分でビルドしたPython がシステムPythonのライブラリを参照して
これがわからん
仮に自分でビルドして/opt/python3に入れたPythonがあるとして、それがシステムのPythonにライブラリに依存するっていうこと?
どういう環境? Ruby ではDocker を使う。
多言語バージョンマネージャーでは、日本人が作ったanyenv もある。
同様のツールに、asdf もある。
コンパイルするから、20分ぐらい掛かる
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
echo $(anyenv root)
ただし、$ANYENV_ROOT は定義されていない
/home/ユーザー名/.anyenv
echo $(rbenv root)
echo "$RBENV_ROOT"
/home/ユーザー名/.anyenv/envs/rbenv
echo $(nodenv root)
echo "$NODENV_ROOT"
/home/ユーザー名/.anyenv/envs/nodenv Dockerなどをいきなり勧めてくるやつは前提がおかしい いやいや、Dockerの前にもっとおかしいのがあるでしょ
この人マジで頭おかしいけどいつまでこの芸風続けるんだろ Rubyでしょ?
こいつはキチガイだけど、それ以外におかしいことを書くから、それも指摘しないと真面目に読むやつがあらわれる。 英会話教室に通って「フランス語では云々」と講釈たれる奴みたいだよなw >>340
あり得ない事ならウェルカムだが、例えば、
/opt/python3/bin/python が
/opt/python3/lib/libpython.so を_参照せず、$LDPATH にしたがって
/usr/lib/libpython.so を見に行くことないの? とか、
或いは、
/usr/bin/python が
/usr/lib/libpython.so というリンクを参照したのだけど、その実体が実は
/opt/python3/lib/libpython.so だったとか。
>>327 で挙げられた pyenv というのは、何かしらそれに類した不具合を解消するのだろうと想像している。 >>342
に、もちろん、pyenv も入っている
多言語バージョンマネージャー、anyenv・asdf には、
rbenv, nodenv, goenv など、たいがいの言語は入っている
ただ最近は、Docker も多い >>347
固有のパスに導入した一般的なプログラムならそうはならん
lddしたらわかるけどフルパス指定になってる
pyenvは全自動でビルドするツールなんだけど導入先はホーム以下で同様
独自のシェル拡張使わないなら副作用ないし影響範囲もシェルの中だけ Python Arcadeが流行らないのって
名前が悪いからですよね?
Pycadeとかに変えてほしい PyDeca だと流行りそう。
>>349
> フルパス
のくだりがよく解らないが、取り敢えずpyenv を検討してみる。どうもありがとう。 お勉強スレにもポストしちゃったんですが
バージョンよって剰余演算子の挙動が違う?
-1%3とか >>342
のanyenv root/rbenv root/nodenv root を見れば明らか
/home/ユーザー名/.anyenv 以下しか使わない。
個人の環境しか使わない
だから多言語バージョンマネージャー、anyenv・asdf を使えばよい ArcadeよりPyxel派
>>350
なぜPyをつけたがるのかだよね Pythonでゲーム学習するならPyxelなんですかね >>356
オールインワンでツクール寄りだからゲーム部分を主に書きたいならそう
自分でプログラム制御や表示まわりも書きたいならPygame(SDL)とかもっと低層なやつ >>357
ありがとう
Pyxel、記述少ないし、エディタ付きだから
これだけで完結するのがいいね
しばらく触ってみるわ Pythonは初心者向けの文法というけど
難しくてサッパリわからん
なんでコレクションをイテレータにしなきゃいかんの? ジェネレータって何の役にたつんよ
クロージャってどう使うんだか
せめてウェブやろうとしたら入門書がいきなりフレームワークばかりってどうなの?
PHPみたいにさあもっとこうさっくりとさあ
ぜんぜん初心者向け文法じゃないわ >>359
Pythonの文法が初心者向けなんて聞いたことないから君騙されてるよ
PHPできるんならそれで困ることないんだから満足しとけばいいじゃん 文法が分からないんじゃなくてイテレータやジェネレータやクロージャというプログラミングの概念が分かってないんやな
Python特有のものではなく一般的なものでPHPでも全部サポートされてるからそっちでまず勉強してみたらいいんでないか? >>359
コレクション全部に対して何かしたいときに使うのがイテレータ
例えばコレクションの中を探すとか
イテレータで書くとコードがごちゃごちゃするのですっきりかけるのがジェネレータ
クロージャを使うと中でどう動いているか気にすることなくプログラムが書ける
まあ、ググればすぐ出てくる情報だけど 入門の講座がよくわからんかったから大混乱したよ講師が変だったのかもしらんが
まずアナコンダを入れないとパイソンというのものはまともに動かないって言われた
そんでvenvとかpipについて説明された
後で知ったが本当ならアナコンダナビゲータで環境つくるらしい
アナコンダのせいでSSDに大量のライブラリが入ったがまったく使わんかった
だったらなんでインストールさせた?
変数は整数型と倍精度浮動小数点数がどうのっていって変数型が少ないからJAVAより計算が苦手なんですって
はて???じゃあなんで機械学習とか流行ってん
後で知ったが多倍長整数だし、浮動小数点数はゴミだけど標準ライブラリに固定小数点あるって、むしろ数値演算はどの言語より得意なんだと
パイソン大流行だけどちょっとかじってすぐ初心者講座の講師やるってのは
やめてほしいな
なんか技能検定試験とかないもんかねえ >>364
アナルに入れるとパイパンがー
まで読んだ パイソンをケツの穴に突っ込んだらどうなりますか?
経験者のかた教えて下さい 公式のチュートリアルであらかた網羅できるのに
なぜ他から手をつけるのか
プログラムが初めてだと時間はかかるけども 基本的なことは覚えたら済む話なんだが
いろいろなライブラリがあるからわっかんねぇ 機械学習にアナコンダが必須だった時代があった
pythonには必須ではない
python 自体は長い桁が扱えるかもしれないけど
インタープリターなのでもともとが遅い
機械学習に使われているのは
ライブラリがCかC++で書かれているため それならPythonである必要はないよな
Jupyter、numpy/scipyの土壌があったから
そのまま使い続けているだけ jupiternotebookってのはどうしたら空白やタブ記号を表示できますか
パイソンやるのには空白やタブ記号が見えないと困るのです パイソンはインタプリタでパイソンプログラムはマルチプラットフォームとききました
ところがPYNUMはC言語だといいます
つまり機種依存があるはずです
そうするとパイソンも機種依存していまいPYNUMをインポートしたプログラムはWindowsとマックでは動かないのではないのでしょうか
私だんだん混乱してきました >>375
そういう面倒ごとがあるから、俺はことあるごとに言ってるんだよ
外部ライブラリは使わずPythonの組込み関数と標準ライブラリのみで書けと
ライブラリに振り回されて貴重な人生を無駄にしないようにな >>374
空白を可視化してるフォントを使うとか
で、何も見えなかったらタブと見なす 全部anacondaで作って.condarcにconda-forgeのライブラリからのインストールも可能にしておくように設定
だが変わったものを取ってくると重くなりがち
biocondaとかもインストール元にしとくか
変わったものをインストールする度に別環境作ったり
pythonの環境設定は結構な初心者泣かせだな
そもそもPCのユーザー名がマルチバイトだったり半角スペースあったりしたらもうアウトだったり
anacondaは公式pythonと同居させられなくて問題になるが
ryeを推してるところもあるが、私的ドキュメントが心許ない anacondaを使うメリットが科学計算用ライブラリが一括で入るぐらいしかない
>>374
そもそもタブを使うことがないし、全角スペースならだいたいのプログラミング用フォントなら分かりやすくしてある conda系はオールインワンで楽なのはわかるけど
そこは一歩進んでコンテナ込みで勧めてほしい
魔法が多くて把握できなくなる弊害まで考えが及んでない >>377
numpyのことじゃね?
>>375
C言語で開発されてるライブラリはインストール時(pip install等)に実行するプラットフォーム用にコンパイルされたバイナリが含まれたパッケージをダウンロードしてくるかソースをからコンパイルしてる
ライブラリをインポートしたPythonのコードが特定のプラットフォーム用のコードを書いてなければWindowsでもMacでも動く >>374
jupyterlabならHighlight white spacesという設定でタブもスペースも可視化できるよ 基本、C# 以外の全言語は、Linux 用。
だから、Windows 10 でも、WSL2 でLinuxを使う。
Mac ではVirtual Box でLinux
初心者はLinuxが難しいから、Windows上のMSYS2 を使う。
例えば、Ruby Installer がそう
MSYS2なら、1GB ほどのWindows用の巨大なコンパイル環境もインストールする。
これで、Linux用のソースコードを、Windows用の機械語にコンパイルする
ただ、全言語はLinux用に書いているから、
Windows用にコンパイルすると、うまく動かない場合もある
利点は、仮想マシンでLinuxを起動していないから、あまりメモリを使わない。
欠点はLinuxじゃないから、Docker を使えない事。
データベースなどの外部プログラムも全て、Windows用で揃えないといけない
そうすると、中にはバグるプログラムも出てくる。
全てのプログラムがLinux用に作ってあるから >>375
50代のスレに書き込んでいるおっさんだろ? >>385
Rubyに関わるのはこんなキチガイばっかりです 河上幸恵ちゃんの名曲
心の中のルビーというやつだな
皆さんありがとう
また一歩自分の成長を感じました
C言語のライブラリはそれぞれのパソコン用がインストールされる高度な仕組みであること
ジュピターで空白タブを表示する方法
皆さんはわたしの成長ホルモンです os.path.isfileの様なやり方でループなど使用せずに、
拡張子を除いた部分のファイル名が存在するか確認する方法ってありますか?
例えばファイル名”test01.txt”,”test01.png”のどちらがディレクトリに存在していても、”test01”だけでファイルの有無を確認したいです。 自己レスです。
とりあえず、glob.glob(‘/hoge/test*’)としてやってみました。
こんな方法もあるよというのがあれば教えてください。 Pythonのandroidでの実行環境って何を入れたらいいですか?
開発環境はとりあえず必要ないので
あくまでスクリプト・インタープリターとしての最低限の実行環境がほしいのです
CPythonみたいなリファレンス実装があればいいのですけど python以外もつかうならtermux、uiが使いたいならpydroidかな? >>395,396
レスありがとう
どちらかというと開発環境みたいな感じなんですね
ほかにQPythonとかQPython 3Lとかはどうですか
よりシンプルな実行環境という観点からするとどれになるのでしょうか 凄い基本的な質問なんだけどライブラリのことを考えるとPythonはanacondaとPythonそのままどちらのほうがお勧めですか
または他にお勧めのツール?的なのある? とりあえず、公式実装のCPythonでいいのでは?
やりたいことが明確になってから必要に応じてanaconda環境を構築すればいいと思う 何かライブラリなどをインストールしようとするたびにエラーがでて説明通りにできない
こんなもん? 説明が悪いんでは
前提としてる環境が違っててそこまでは書かれてないとか 自分はPycharmのflaskでウインドウズでは環境構築できなくて諦めました
同じことやってるのに、Macでは動いてウインドウズではエラー
Pythonって学ぶスタート地点に立てない人少なくないかも? >>364
マジで誰でもできるよ
Pythonに限らずだけど経験一年以上とかで求人出てるし
俺は学歴で落とされたがね
そもそもanaconda使いながらpipとか使うと環境壊れるよ >>359
まぁ人によって印象違うんだろうな
俺はPHPはもう一生触らないと決めたけど
そしてイテレータやらクロージャやらやんなくていいから
そういうのは出てきた時に意味が分かれば十分 基本、全言語はLinux 用。
Windows 用は、C# だけ
だから、Windows 10 から、WSL2・仮想マシンでLinuxを起動できるし、
Docker Desktop も使える
だから、Windows/Mac ネイティブ機械語は動かない。
Linux用のソースコードを、Windows/Mac用コンパイラで機械語にするのは邪道
でも、MacはUNIX のBSD だから、Linuxと似ているので、まずまず動くけど、
仮想マシンでLinuxを起動する方が確実
Windowsで、MSYS2, Visual Studio でコンパイルすれば、Winodows用の機械語になる。
しかし各モジュールの作者は、面倒くさいからLinuxにしか対応しないので、
Windows/Macでは動かない なぜ、Windows/Mac用のネイティブ機械語にしたいのかと言うと、
仮想マシンでLinuxを起動したくないから。
2つのOS が動くから
その代償に動かなくなる。
Linuxじゃないから、Docker Desktop も使えないし
例えば、自分がC/C++ のモジュールを書く時、Linuxにしか対応しないよな。
Windows/Mac用のファイルシステムや、プロセス/スレッドに対応しないはず。
3つのOS で動くようには書かないはず。
面倒くさい >>408
またこの馬鹿の書き込みか
ruby馬鹿よりはマシだけど クロージャとデコレータが極悪に難しい
ドキュメントや本を何冊も読んだが何のためにどうやって使う機能なのかさっぱりわからず自己嫌悪に陥る
この世は無知な方が幸せなんだよな… python齧ったけどわけわからん
やっぱCOBOLがわかりやすいわ Pythonで何作れたら中級者くらいって言えるかな?ゲームとか? VS Code使ってたせいだか何だかわからんけど、気分変えて作業フォルダを変更したらimport命令で自作モジュール読み込みするとエラーに。
メインpyファイルと同じフォルダの別pyファイルがimportできない
ぐぐりまくってsys.path.append("ここに任意パス")で上記フォルダの絶対パスを指定したらいけたが、
じゃあそもそも元のパスはなぜ指定もせずにimport出来てたのかっていう疑問が残った。なんか怖い ちなみにこういうエラーね
ModuleNotFoundError: No module named 'My_Mod' >>414
もしかして:Pythonのバージョンも違う >>414
https://docs.python.org/ja/3/tutorial/modules.html#the-module-search-path
には、
「入力されたスクリプトのあるディレクトリ (あるいはファイルが指定されなかったときはカレントディレクトリ)。」がsys.pathに含まれてるって書かれてるのに変だよね
絶対パスを書く他にも、
os.path.abspath(__file__)とかする方法もあるよ
pathlibでPath(__file__)と書いても良いけれど(自分は実はこっちばかりだけど) 外部ライブラリはPythonの強みであり同時に弱みでもあるね
ライブラリがらみのトラブルで世界中でどれだけの人生が無駄に消費されているだろうか Ruby のrequire が使うロードパスには、
current working directory(cwd) は含まれていないから、
require 'abc' はエラーになるけど、
相対パスのrequire './abc' はOK
一方、require_relative 'abc',
require_relative './abc' は、どちらもOK
相対パスも、その起点がどこからかという問題もある。
ファイルからの相対なのか、cwd からの相対なのか
cwd を変えて、実行してみればよい 結局開発環境だと.venv/bin/activateの中にPYTHONPATH書くのが早いんだな 配布先とか別環境でも同じ使い方できるから楽
なんとかtoml最小限書くだけでできるよね?
レス別れちゃってごめんね venvで細かく分けて保存
何かインストール難しそうなものがあったら
新たな環境作ってそこにpip install
それで壊れたらその環境捨てる
という訳で気付いたら環境が15個とか出来てる
anacondaでconda-forgeから取れるようにすると少し楽だが、いずれにしても管理の習慣が無い人ほどしくじり易い
「どうせ上手く行くから大丈夫じゃねーの?」と舐めプして
基本環境にpip失敗してpython丸ごと再インストールとなる
一般に「アップデートして最新にしましょう」というのがOSや市販アプリなら常識だが
pythonでは他ライブラリとの相性もあり、何でもかんでもupdateすると怖い
conda update condaはさすがにまあ安全だが >>425
>基本環境にpip失敗してpython丸ごと再インストールとなる
ここがちょっとわかんない AIないと何もブログラミング出来ないんだけどこれでいいのだろうか >>428
いいんだよ
プログラミングなんて本来人間のやる作業じゃない
コンピュータのことはコンピュータに任せりゃいい
人間にしかできない仕事をやればいい 使えるものは使いこなして効率や生産性をあげないと
使いこなす人に出し抜かれる
有能なアシスタント雇ったと思えばいいじゃないかな >>430
ChatGPT使って書いてみなよ
今までプログラミング技術の習得に費やしてきた時間が全て無駄だったとわかる >>432
全くそうは思わないな
matplotlibみたいな使うのにリファレンス読む時間がめちゃくちゃ長いのは勉強しなくてよくなった感じがするけど
ChatGPTに短い日本語で指示すれば書けるようなプログラムしか書けるようになってないだけだと思うよ
超初心者スレでいうのもあれだけど 関数間を1行空けると、Vimの Pymodeに、
1 error| expected 2 blank lines after class or function definition, found 1
と怒られ、3行空けると
1 error| too many blank lines (3)
と怒られ、余計なお世話に憤激した。
https://peps.python.org/pep-0008/#blank-lines
> Surround top-level function and class definitions with two blank lines.
などと書かれてあるが、お前等、きっちり2行空けているのかね。 >>437
空けてる
だってflakeに怒られるんだもん
どうでもいいような書き捨てコード書くときはそもそもJupyterとかで書いておしまいだから
PEP8とか気にしないけど、IDEで書いてる時点でメンテナンス性を意識しているから、
PEP8のようなルールに従っておこうという気持ちになっている __ <- このアンダーバーをインデントと仮定する
for x in xs:
__for y in ys:
____for z in zs:
このようにxyzの多重ループで
zからyの所に抜けたい場合とzからxに抜けたい場合に
書き分けられる構文 python3にある?
perl5 で書くとこんなラベル構文がある
https://ideone.com/rIV69S >>439
インデントが空白4文字な世界だと
その場で3重の入れ子なんて書かないから
関数かなんらかのブリッジが介在するはず
だから例外や返り値でいくらでも制御できる
デコレータつかうのといいかも >>439
gotoパッケージを入れて、goto文を使ってもいいが、そんなループをしないといけないのか? >>439
ループする条件とbreak文の組み合わせでもいいのに
ネタなの? >>437
きっちりつか、autopep8かけるだけ。 Pythonはかなり古めかしい考え方のプログラミング言語だからな Ruby で、多重ループから一気に抜け出すのは、
ラベル付きのKernel.#throw/#catch を使う Rubyはcallccあるんじゃない?なんでもできるでしょ
Pythonもコルーチンあるから今のVMで実装はできそうだけど
あえて提供してないんだろうな あれ、breakやcontinueの後に脱出先のラベル名を指定できたはずだが
別の言語だったかな? >>441
インデントが空白4文字であることと入れ子を3重にしないことの因果関係が不明
関数やブリッジを介在した方がわかりにくいコードになることもあるぞ
そもそもCでも空白4文字インデントを使うことが多いが、
普通に3重ループは出てくるでしょ
例えばここ
https://github.com/numpy/numpy/blob/9de8a809efa4c8193a168af9191a0c69290db3e4/numpy/_core/src/umath/ufunc_type_resolution.c#L1517
波括弧がないからlambdaでreturnを持つ複数の文を1つの式で扱えないとかだったらわかるけど、
インデントは関係ないでしょ
綺麗なコードを設計しよう、書こうとしてさまざまななテクニックを知ろうとする意識は大事だと思うけど、
実践なしに本とかに書かれてた「このテクニックはこういうときに使う」を鵜呑みにして、
テクニックを使わない方が見通しが良くなるような簡単な場合にも無理に使おうとするのは
よくないと思うけどなあ。デザインパターンの濫用みたいな感じ。
戻り値で判定はあり得ても例外はあり得ないわ。
誤用としか言いようがない。 for~else ってなんか直感的じゃない気がするんだけど、なんで「else」なの?
completed
breaked, aborted
finally
みたいな単語なら分かりやすいのに。 >>450
妄想がはげしい
5chで5行超えたら一旦立ち止まろう
後半句点も復活しているw >>439
それ用の構文は無い
大域脱出の代替手段はいくつかあるけど基本的には早期リターンで対応する
その例だと内側の2重ループを関数化してbreak, continue, return(もしくはyield)で対処可
>>451
for-elseはBad Partsなので使わない
Effective Pythonにも使うなと書いてある
よくある”not found”みたいな処理はfor文の一部としてではなく
一つ上位でハンドリングすべき処理なので役割分担が間違ってる >>453
どの辺が妄想なの?
すぐ5行以上とかのレスに長文乙って返してくる人どの板にもいるけど根拠が示されて若干長くなった文章読めないの?短文でマウントとるだけのレスほどくだらないものはないと思うけどね
句読点があったりなかったりすると何が問題なわけ?
447では意味ありそうなレスしてるのに一方で煽るとは不思議な人だね pythonをサーバーでプロジェクトルートを認識させられない
NoModuleNamed"プロジェクトのフォルダー名"になる
herokuなんだけど >>450
日本だと4つが一番多いが、外国だと8つも多く、16すらある。 pygameのlineを使い時計の秒針のようか円を描こうとしたんですがうまく行かない
どこが悪いの??? import sys
import math
import numpy as np
import time
import pygame
pygame.init()
WHITE = (255,255,255)
WIDTH, HEIGHT = 400, 300
SURFACE = pygame.display.set_mode((WIDTH, HEIGHT))
FSPCLOCK = pygame.time.Clock()
center_x = WIDTH // 2
center_y = HEIGHT // 2
def main():
while True:
for event in pygame.event.get():
if event == pygame.QUIT:
pygame.quit()
sys.exit() for theta in range(0, 360, 20):
rad = math.radians(theta)
R = np.array([[math.cos(rad), -math.sin(rad)],
[math.sin(rad), math.cos(rad)]])
point = np.array([center_x, center_y])
rotated_point = np.dot(R, point)
x = rotated_point[0]
y = rotated_point[1]
pygame.draw.line(SURFACE, WHITE, (center_x, center_y), (int(x), int(y)))
time.sleep(1)
pygame.display.update()
FSPCLOCK.tick(100)
pygame.quit()
sys.exit()
if __name__ == '__main__':
main() うまく行かない→画面外にlineの先端が飛び出す です >>461
これを試してみてくれ
point = np.array([0, -center_y])
x = rotated_point[0] + center_x
y = rotated_point[1] + center_y >>463
座標回転は原点からのベクトルにしてから回転して
後で始点座標を加算する
後、縦横の長さが違う時は短い方に合わせないと飛び出す
必要なら1/2、1/4などして長さを調節する
画面サイズを元にスケーリングして長さを求めるのは画面サイズに依存しないやり方 >>464
project_xっていうような名前のプロジェクト名だったけどherokuを覗いてみるとそんなフォルダーはなくて/app/って名前になってた
だから相対パスや絶対パスを消して全部プロジェクトルートからのimportにした(ここらへんよく分かってない)
あとherokuでポスグレ使うためにadd-on入れて、自動生成されたsqlalchemyに接続するためのDATABASE_URLっていう環境変数の中身であるpostgres://から始まるurlが正しくはpostgresql://でコード中で直す羽目になった
色々とherokuは使いやすくない
これならawsでも学べばよかった あとgitのdevelopブランチをpushしてたけどherokuはmasterしか見ないらしくそれもハマった >>466
>だから相対パスや絶対パスを消して全部プロジェクトルートからのimportにした(ここらへんよく分かってない)
https://devcenter.heroku.com/articles/getting-started-with-python?singlepage=true
https://devcenter.heroku.com/articles/python-pip
この辺みたらpipでインストールできるようにしてたらコード書き換える必要なさそう
herokuに限らずデプロイするのにコード書き換える必要がでてきてしまったのはパッケージの構成がよくなさそう
何にしろ別環境にデプロイする以上、pipでインストールできるような構成にした方が楽だよ >>451
条件式がTrueのときループして、条件式がFalseのときelseになる
forもwhileもループ目的でつかうので、条件式がFalseのときというのは自然と終了時になる
たとえば下記のようなループしないコードだとfalseとだけ表示される
while True == False:
____print("true")
else:
____print("false") キーワードを節約のために同じ単語を使ってるけど
if-elseのelseと
try-except-else-finallyのelseと
for-else/while-elseのelseと
みんな意味が違う
ループのelseは”if not break” 意味を与えたら異なってくるけど
内部処理は同一にみえん? herokuにアップしたらドメインとフォルダーの間のスラッシュが何故か2つになって恐らくそのせいで404とcors error出る
ローカルではちゃんと動くし有り得そうなところは全部見たんだが
もうfastapi、react、herokuのどれのせいなのかわからなくて積んだ
elastic beanstalk に変えてデプロイし直すか..... なんか、ドキュメントとかログとか読まなそうな人だな >>473
ジョークにマジレスしちゃうけどgotoする条件の違いが重要
goto if false
goto if no exception
goto if no break >>476
(なので同一には見えないの意味でした. 補足ありがとう たぶん予約語を増やしたくないからelseを流用したんだろうね
この辺は言語設計のさじ加減だから仕方ない try-exceptのelseってtryに全部書きたくない人が使うの…? こんな混乱が起こる構文なので
使わない方がベター
実装されてる機能が全ていいとは限らない 例外が発生するかもしれないけど上のexceptに混ぜたくない処理を書きたい場合とか? forのelseというのは
forに対するelseではなく
forのループの条件式に対するelse
だから意味は違っても内部処理は同一となる
なのでif-elseをループさせてやるとfor-elseと同じ処理を再現できる
https://ideone.com/2MULxa >>482
なるほどね
言わんとしてることは良くわかったわ def one():
return 1,2
def two(a,b):
print(a,b)
two(100,100)
two(one())
最後の行で「TypeError: two() missing 1 required positional argument」エラーとなります。
twoで1と2を受け取れるようにするにはどうすれば? def myfunc():
__myfunc.initialized = True
こういうのってあり?
1年くらいpython勉強してきて、先日初めて見かけたんだけど
ちょっとおどろいてしまって functionもオブジェクトで__call__が生えてるだけと思えるならあり
ただどんな用法でも見通しが悪ければなし おどろいてしまうようなやり方はじっくりコードを見ないとわからない振る舞いをするから基本なし >>489
なにそれ
>>> def myfunc():
... __myfunc.initialized = True
...
>>> myfunc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in myfunc
NameError: name '__myfunc' is not defined
>>> クラス定義より軽量、外の名前空間を汚さない
ジェネレータもあるしこれでしか書けないってのは思いつかない template metaprogramming に匹敵する犯罪 >>499
それはクロージャかクラスを使うべきケース
状態を外から更新したいならクラスを
更新されたくないならクロージャを使う
副作用じゃなく値を返すのがメインならジェネレータも選択肢の一つ これGUI書きのクセっていうか、イベント・バインドの高階関数とかで見るな
簡単なGUI書いてて、クラス化まではしてないときかつ状態が2値のみのとき
ウィジェットまわりに全部押し込んだほうが目線動かなくてメンテしやすいんよ
それより表現が複雑だったら変数はrootに置いたり、クラスに持たせたりするんだけど、これはウィジェット(たとえばボタン)に持たせてるような感じ
initializedとか、btn.locked / del lockedとかだしょ うちの pipが、
$ pip --version
pip 55.0 from /usr/lib/python3.99/site-packages/pip (python 3.99)
だとして、python3.1/site-packagesを pip listしたい。どうしたら? python3.1 -m pipでやってみたら
要は使いたいpythonからモジュールでpipを起動する $ pip list ―path python3.1/site-packages >>508
なるほど。どうもありがとう。
$ pip --version
pip 55.0 from /usr/lib/python3.99/site-packages/pip (python 3.99)
$ pip list --path /usr/lib*/python3.1/site-packages
Package Version
------- -------
略 モダンなGUI作れるっていうからflet触ってるんだけど
もしかしてこれGUIに対するドロップ受け付け機能ない感じ? 身体がflutterを受け付けない
pythonでflutterアプリが作れるとか
なんで、なんでそんなことを fletはflutterで根本的にwebアプリ用だから外部からの入力はdropzoneないと無理じゃないか >>511
自分はDartを覚えず使わずflutterアプリ作れるってのが良いんじゃね
知らんけどw このスレにあった質問かどうか自信がないんだけど・・・
投資系のライブラリ"talib"てあるじゃないですか
これに含まれるCCIの使い方がわからんのです >>515
ChatGPTに聞いてみなよ
もうプログラミングは人に聞いたりドキュメントを読む時代じゃない やってみたらわかるけどマイナーなライブラリの使い方聞いてもデタラメ答えるだけ >>516
無料版3.5で聞いてみた
突然英語で喋りだして、思ってたのと違うコードを紹介してきたので諦めたw ChatGPTの野郎は知ったか振りばかりして「知らない」と言うことを知らないからな >>516 みたいにプログラミングやってるくせにChatGPTの実力や使いどころを知らないのまじ無能 いけず石の説明させたら架空の鉱物の説明しだすからな >>518
3.5で聞いたみたら下記の回答が返って来たぞ
これじゃダメなのかい?
import talib
# サンプルデータの作成(適宜自分のデータに置き換えてください)
high_prices = [105, 110, 115, 120, 118, 112, 115, 118, 122, 125]
low_prices = [95, 98, 102, 108, 100, 102, 105, 108, 110, 112]
close_prices = [100, 105, 110, 115, 112, 108, 110, 115, 118, 120]
# CCIの計算
cci = talib.CCI(high_prices, low_prices, close_prices, timeperiod=14)
# 出力の表示
print("CCI:", cci)
talib.CCI()`関数には、高値、安値、終値の配列を渡し、`timeperiod`パラメーターを指定する必要があります。これはCCIの期間を表します。計算されたCCIの値は、指定された期間ごとに配列として返されます。
上記の例では、10日間の高値、安値、終値のデータからCCIを計算しています。実際の取引データを使用する際には、それに応じてデータを入力してください。 ちゃす
質問す
プログラミングのロジックを考える時に使える考え方ありますかね
入力と出力を考えるといいますが、関数の引数が入力、返り値が出力といいますか? 考えることはうんこを食って食べ物を尻から出すようなことだが
重要なのはコンピューターにとってばうんこも食べ物も変わらないという事だな そうやね
いかに物事を抽象化してシンプルにモデル化するか 複雑に考えすぎなんすかね
関数増えてくとわけが分からなくなります 材料→材料の処理→結果、というのがプログラムの基本なんすかね 何でもそうだけど真似というか模倣から始めるのはどうよ
ギターでもHIDEがカッコいいとか布袋みたいにとか真似するでしょ
デザインパターン本だとか有名なオープンソースのコード見てると何となく癖というか法則みたいなのが分かってくる アルフィーの高見沢さんの髪がまだ短めで黒かった頃、メイキングのムービーで作曲する姿が写っていたが、
少し書いては弾いて違うと書き直すのを繰り返す姿を見て、これってオブジェクト指向に通じるんじゃないかと思った。 途中までスクリプトかと思った
短いときなんてあったのかぁ >>525
一度に一つのことしかしないように考えるかな
あと一般的なことは考えず今必要なことだけをやる仕様にする >>525
>関数の引数が入力、返り値が出力といいますか?
話の文脈によるんだけど「関数の入出力」が引数と返り値だけを指してる場合もあれば
それ以外の外部状態からの入力や出力なんかを含む場合もある
プログラム設計時に関数の入出力を考える場合は
引数や返り値以外も考えないといけないので広い意味も頭に入れておいたほうがいい
>>529
>材料→材料の処理→結果、というのがプログラムの基本なんすかね
上に書いた広い意味で言うなら
指示と材料が入力で結果(成否等)と加工した材料が出力
これが基本
指示―> 処理 ―>処理結果
材料―> ―>加工した材料 比較について質問なのですが、数値ペア同士の比較というのはプログラミングでは出来ないのでしょうか?
例えばvector2なら、xとyの値を取り出してそれぞれ比較しますね プログラミング得意な人は頭の中がどんなイメージになっているのだろう
すべて図解になっているんだろうか >>536
普通にできるでしょ
(0, 1) > (0, 2) => False
(1, 1) > (0, 2) => True
Tupleの場合は内部的にそれぞれの要素を取り出して比較されてるけどね >>537
境界知能みたいな知能が低い人には無理だよ >>537
単に経験豊富なだけだよ
色々やればイメージができるようになる 経験を活かせるかどうかが能力なので
539にもアンカつけてあげて
まじで向いてない人いるから >>537
プログラムの構造を考えるのは文章の構成を考えるのと同じ頭の使い方をする
文章の構成を考えるときに図でイメージしてる人もいればそうでない人もいるように
プログラミングに習熟した人でもプログラムを図でイメージしてるとは限らないしできるとも限らない 小学生でもバブルソートは書けるので、知能にデコボコがあっても、どの方向が劣っているのかによるのでは。 小学生でもプログラミング得意なやつはいるけどバブルソートを書くというのはお手本を模写できたり辞書を引いて目的の項目を調べられたりする程度の話だからプログラミングが出来るかどうかの指標にはならないよ 実際のプログラムだとソートする関数は用意されてるから自ら実装する事は無い
ソートはあくまでもアルゴリズムを学ぶ上での教材的な感じ ゲーム制作板で何年も倉庫番完成させられてない人じゃん
親切な人がいっぱい釣れたね あれ人じゃなくてチャットbotだからスルー推奨だよ。