くだすれPython(超初心者用) その46【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
当スレに★Python以外のプログラミング言語での回答類を書くべからず★ ☆「Ruby では」「Rubyでは」をNGワード登録推奨 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 ★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので ↓等のてきとうなソースコード用うpろだに貼ってきてください。 スクショをImgur等にうp といった 手抜き(クソ行為)禁止。 ttp://ideone.com/ デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう ◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と 実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。 ◇Python公式サイト◇ http://www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/ 〇前スレ〇 くだすれPython(超初心者用) その45【Ruby禁止】 https://mevius.5ch.net/test/read.cgi/tech/1571188632/ testDict = {"aaa",4} print(testDict["aaa"]) とすると、TypeError: 'set' object is not subscriptable とエラーになります 何故ですか? testDict = {"aaa":4} print(testDict["aaa"]) これで治りました カンマで区切ったらsetになるから「setをの中身をdictのように参照はできんぞ」となるわな もう1つよいでしょうか 辞書型の使い方がよくわからないのですが testDict = {"a":1,"b":{"b-1":2.1,"b-2":2.2},"c":3} という辞書があった場合 testDict = {"a":1,"b":{"b-1":2.1,"b-2":2.2,"b-3":2.3},"c":3} というように、辞書の中の辞書に要素を追加するにはどうしたらよいですか? >>386 testDict["b"]["b-3"] = 2.3 でいける 完成したプログラムをExeファイル化して配布しようと思うのですが、 pyinstallerで pyinstaller set_data_ver25.py --onefile としたところ maximum recursion depth exceeded while calling a Python object となります。 再帰関数で処理が膨れ上がるようなことはしてないと思うのですが・・・。 >>389-390 set_data_ver25.pyとやらの中身をみないことにはなんともはや >>1 嫁 maximum recursion depth exceeded while calling a Python object でググれ floatのunixtimeをdatetime.timeの時分秒の文字列(日にちなし)に変換するメソッドはありますでしょうか? 今はdivmod()で順次割ってformat()で文字列変換し':'で結合しております。 ああ、クラスの方か クラスも文字列ではないから辻褄が合わないけど print(datetime.fromtimestamp(unixtime).time()) でいい話のような気もするな まあ、知らね >>389 https://qiita.com/tobesan/items/12189abc5adbda4a49bd ここで解決したのですが、今度は UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 139: invalid start byte が・・・。 おそらく https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt でpyinstallerの設定変えろってことなんだとおもうんですが、anaconda使用してターミナルからpipでインストールしたpyinstallerがどこのフォルダにあるのかわからない・・・ アナコンダでインストールしたPyhotnのフォルダってそもそもどこにあるんでしたっけ? >>398 ソースコードをBOMなしで保存してみましたが、同じエラーで・・・。 >>399 じゃあ文字コードあってるかどうかというか、 そもそも、ちゃんと、指定してるんか? >>397 だから>>1 嫁ってば OSくらい書かないとわからん >>401 os windows10 anaconda python3.7 です。 https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt の方法で out = out.decode(encoding, errors='ignore') としたら実行ファイルできたけど、 Runすると 読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力 となるはずが、読み込みファイルを聞いてこず、なにか謎処理をしてグラフは出さずに計算結果だけ出力します。 なんだこりゃ。 Anaconda信者はちゃんとサポートしてやれ 俺はあんなゴミ使わないから知らねー 配列で 0番目の値を1番目の値に足す 1番目の値を2番目の値に足す というのを繰り返して 最後は n番目の値を0番目に足す こういうループを作るのってどうすればいいですか? a=[] for i ,h in enumerate(haireru): ___a.append(hairetu[i]+hairetu[1+1]) にすると最後ゼロ番目と計算できないです すみません aは配列じゃなくてループ内ですぐに使いたいので iはゼロはじまりでお願いします for i ,h in enumerate(hairetu): ___a=(hairetu[i]+hairetu[i+1]) __b=c*a >>404 foo = [1,2,3,4,5] [ x + y for x, y in zip(foo, foo[1:] + [0])] #=> [3, 5, 7, 9, 5] このパターンこのスレだけでもう3回目くらいだと思うんだけどなんで頻出なのか謎 >>402 だから文字コード(encodingの中身)をちゃんと指定汁とさっきから言ってるだろうがよ Anacondaの詳しいことはおれもよーしらんわ >>403 >>406 どこかの私大の追試レポートで出てると予想 >>403 Anaconda信者とかより、コミュとれない奴の相手はエスパー・高脳でないと相手できないからな。 >読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力 以下略 は、エスパー・高脳でないとポカーンになる感じだからな [ x + y for x, y in zip(foo, foo[1:] + foo[0:1])] #=>[3, 5, 7, 9, 6] >>406 >>410 ありがとうございます 配列って[:]どうしだと合体できるんですね 助かりました 401ですけど、 すいません。 コード上げてきちんと質問するべきですよね。 期限迫ってたのであせってたのですが、寝落ちして少し頭冷めました。 あきらめて現在のところまででまとめることにしました。 今の仕事終えてから、ご指摘頂いたこともう一度確認してみます。 >>404 ,405 n=len(hairetu) for i ,h in enumerate(hairetu): ___a=(hairetu[i]+hairetu[(i+1)%n]) __b=c*a どこまでdefでまとめるのが良いのかアドバイスお願いします 一定の距離ごとに物体の置いてその場所や向きや大きさを決めています 距離ごとに計算すべきなのか 最初から物体の位置、向き、大きさをすべて計算して 置けばよいのでしょうか? ↓距離ごとの計算 for km in 距離: __物体の位置()に物体を置く処理 __向きの計算()に物体の向きを変える処理 __大きさ()に物体の大きさを変える処理 def 物体の位置: ___計算式 def 物体の向き: __計算式 def 大きさ(): __計算式 続きです ↓まとめて計算した場合 for x in 物体の位置(): __物体を指定の位置に置く処理 for y in 物体の向き(): __物体を指定の向きに置く処理 for z in 物体の大きさ(): __物体を指定の大きさにする処理 def 物体の位置(): 位置 = [] __for km in 距離: ___位置.append() __return 位置 def 向きの計算(): 向き=[] __for km in 距離: ___向き.append() __return 向き >>414 その2つなら後者を選ぶケースは考えにくいかな 俺の読解力の問題かもしれんが、「for km in 距離:」がよく理解できん 距離はどういうイテレータ? 例えば、距離 = [1, 2, 3, 4, 5] みたいなものと考えればいいの? で各距離の値によって各物体の位置、向き、大きさが決まる? >>416 ありがとうございます 一個目みたいにまとめることにします for km in 距離:は 各距離から置く場所や向きや大きさを決めてます >>417 各物体の位置・向き・大きさを計算する部分と それを使ってI/O的な処理をする部分は分けておいたほうがいいと思う それぞれ違う理由で変更したくなるから混ざってると後で面倒 きれいに分かれてれば計算しつつ出来た順にI/Oするよう変更するのも簡単 ↓関数/データに分けた場合とオブジェクトにまとめた場合のイメージ https://techiedelight.com/compiler/?n7t7 https://techiedelight.com/compiler/?qDa4 >>418 解説をつけてもらってありがとうございます 入力・出力もどうしようか悩んでいたので 助かります!! raspbian上でwebviewを使用しています。 公式ページのサンプルをコピペしたのですが、そんなattributeは無いとエラーになります。 オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。 >>420 >>1 読んでから端末投げ捨てるか、レンチンしろ >>422 煽りが返ってくるってことはだいたい質問が悪い 公式ページのサンプルってどこの公式だよURLくらい貼れ 何を実行してるかわからないのに答えられるわけないだろ オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。 これに答えろってことだろ なにをぶつぶつ言ってるんだよw >>420 import inspect inspect.gemembers(your_object) かな? >>427 >inspect.gemembers(your_object) getmembers()の間違い dir() や help() でも可 >>428 教えていただいた方法で表示できました。ありがとうございます。 (´n`).o(429の端末が初期不良期限翌日に壊れますように) hoge = "わたしの名前は{0}です" こういう変数hogeは、f-stringで値埋め込むのは無理だよね? hoge.format()するしかないよね >>432 ムリジャナーイ Python! hoge = "わたしの名前は{{0}}です" hoge ↑この2行をこのままコピペ実行してみよう! (3.6.5以降なら確実におk) >>432 template = lambda: f"わたしの名前は{name}です" name = "foo" f"{template()}" #=> ’わたしの名前はfooです' f-stringのlazy evaluation版はi-stringってので提案されてるらしい https://www.python.org/dev/peps/pep-0501/ >>435 なるほどぉ… 出来ることは理解したけど、微妙に読みづらい感があるな ありがとうございました デバックについての質問なのですが evo=[1,5,3,8] ana=[7,6,5,4] for e,a in zip(evo,ana): ____print("aaaa") ____c=a*b ____d=e+c をコピペしてデバッグしてるのですが de=3 a=ana[de] e=evo[de] if 1=1: #for e,a in zip(evo,ana): ___print..... ___......... みたいな感じでif分つけて無理やりインデント合わせてコピペして デバッグしてますが そういうループの途中だけ動きを見る方法でもっといい方法ありませんか? MATLABでいうsimulinkの代用になりそうな物ってありませんか?環境移行したいんですがこれだけどうしても見つからなくて。 evo=[1,5,3,8] ana=[7,6,5,4] for e,a in zip(evo,ana): ____if (e, a) != (8, 4): continue ____print("aaaa") ____c=a*b ____d=e+c >>439 for の中にifコンテニューですか ありがとうございます >>440 そんなものあったなんて知らなかったです ありがとうございます >>437 デバッガでconditional breakpointを設定して 変数が特定の値になった時だけbreakさせる $ python3 ipdb_conditional_breakpoint.py 1 import ipdb; ipdb.set_trace(context=10); 2 3 b = 2 4 evo=[1,5,3,8] 5 ana=[7,6,5,4] 6 for e,a in zip(evo,ana): 7 ____print("aaaa") 8 ____c=a*b 9 ____d=e+c ipdb> break 7, e == 8 Breakpoint 1 ./ipdb_conditional_breakpoint.py:7 ipdb> c # e ==8 の場合のみ7行目で停止 ipdb> print(e, a) 8 4 forやdefで使う変数が多くなったときはどうしてますか? 7個ぐらいになってくると 行が長くなって何とかしたほうが良いのか 悩みます 色々ありがとうございます >>442 blenderというソフト内のpython使ってて 本格的なデバッグ機能があまりないのです その辺りは専用スレで聞いてみます >>445 型にまとめられるものはまとめる 単に行が長いのが困るだけなら改行すればいいだけ あとは*args, **kwargs >>446 ありがとうございます なんでも改行可能なんですね 中身を変数にまとめれるんですね 助かります!! >>447 なんでもは改行できないよ。 改行できるとこだけ。 >>445 おすすめはせんけど行減らすだけなら a=1 b=2 c=3 のかわりに a,b,c=1,2,3 意味のあるまとまったデータなら別クラスにして hoge=Hoge(1,2,3) ああそういう意味じゃないのか 制御変数の話なら適当に改行汁 あと blender は漏れも使ってるけど 癖があるので普通の python だと思わない方が良い (普通の python で慣れてる人が使う分には問題無いが) 考え無しにあれを使い続けると糞プログラマになるだけだと思う plt.subplot使ってグラフを2つ表示しています plt.subplot(1, 2, 1) plt.title('attention') plt.subplot(1, 2, 2) plt.title('Non attention') 2つのグラフの下中央に大きなタイトルを表示したいのですが、 なにか良い方法ありますでしょうか? def test(): def test_test(): print("test") があったときに、test_test()を呼び出すにはどうしたらいいですか? ARM64でビルドしたPythonってどっか落ちてませんか >>454 すみません、インデントが反映されていなくて分かりづらい感じになってしまいました。 ↓のように、クラス内にメソッドがあって、メソッドの中に関数がある場合 どうやって関数を外部から呼び出せばいいのでしょうか? def test(): def test_test(): print("test") 外部ではなく、内部から呼び出すには def test(): def test_test(): print("test") test_test() とすれば呼び出せますが、test()の外から呼び出す方法を知りたいです。 ローカル変数みたいなものだから外部からアクセスはできない def test(str): ・def closure(): ・・print(str) ・return closure c = test("closure test"); c() class testclass: def test(self): def test_test(str): print(str) return test_test f = testclass().test() f("aaaaaaa") へぇこんな事できるんだ、何に使えるもの? >>458 >>459 ありがとうございます。 今までメソッドは全部selfで書いてたんですが 毎秒何百回も処理するような処理を書くとやたら遅くて 試しにメソッド内部に関数を書いたら処理速度が速くなりました。 selfでメソッドを呼び出すと遅くなるので、処理速度を早くしたいときはローカル関数として定義した方が良いみたいです。 csvの例えば5列目が2,3,5,7,3,5,7,,,,,といろんな数字で並んでるとき、 その列の特定の数字を一括して別の数字に変換して、csv保存したいのですが、サンプルコードを頂けないでしょうか >>452 figureの任意の位置にテキスト表示出来る 毎秒何百回程度でやたら遅くなる とか言うのは嘘と言い切ってもいいと思う >>468 いやこれもホントに 処理内容次第なので、処理負荷の低いものなら気づかないですけど timeitとか使わなくても目で見て明らかに遅いレベルまで遅くなったんです 信じてもらえなくても別にいいですけど、僕に得も何もないんで cとPHPとシェルとストアドプロシージャ位しか書けないんだけど パイソンでDLバリバリになるには何の書籍から始めるのが良い? やっぱ統計学はやんなきゃ話にならない? >>471 統計がわからない機械学習エンジニアはただの占い師 ビジネスがわからない機械学習エンジニアはただのベンチマーク厨 >>472 俺、機械学習さっぱりわからんが、なんか核心をついているような言葉だが 基礎となる統計がわからない自称機械学習エンジニアはただの占い師 ターゲットのビジネスがわからない自称機械学習エンジニアはただのベンチマーク厨 が正しいんじゃないのか >>471 >cとPHPとシェルとストアドプロシージャ位しか書けないんだけど こんな自己紹介からして、お前はソフトエンジニアではなくプログラムかける土方 ってかんじだろ。 そんな奴が目指しているのは機械学習"エンジニア"ではなく 機械学習を用いる占い師 や機械学習のベンチマークができる厨 じゃないのか? なら、統計学なんてやる必要ないんじゃないか。 エンジニアになりたいなら基礎理論の統計学はしっかりやらんとだめだろうが。 どの分野でもめざせエンジニアなら基礎はしっかりやらないと駄目だろ。 例えばソフトエンジニアなら大学・大学院の情報工学科でやるようなことは 学んでないとな。 と偉そうなこと言っている俺は趣味でプログラミングなんだがな。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる