Pythonのお勉強 Part60
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず★ ☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止 ☆「Ruby では」「Rubyでは」をNGワード登録推奨 ◆エラーを解決したいときはエラー表示と 環境(Pythonのバージョン・OS・IDEの種類とバージョン)をシッカリ書く ◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩れるので ↓にあげてるような、ソースコード用サイトに貼ってきてくだしあ (スクリーンショットをimgurうp等の横着をしない) ttp://ideone.com/ 推定最大手。デフォ設定がCなので、Pythonするには選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう。 ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#) ◇Pythonオフィシャルサイト http://www.python.org/ ◇まとめwiki ttp://python.rdy.jp/ ●関連スレ● くだすれPython(超初心者用) その43【Ruby禁止】 http://mevius.5ch.net/test/read.cgi/tech/1555397061/ 〇前スレ Pythonのお勉強 Part59 http://mevius.5ch.net/test/read.cgi/tech/1552194662/ 次スレの建立は>>985 が挑戦する Pythonは情報系の大卒以上か理系院卒以上でないと仕事ないよ >>440 学校辞めたのなら、余計にプログラマー無理だろ ネタでしょ 初心者はふつうバイナリデータいじらん、しかもPython2て pythonでバイナリデータとか日本語扱うのはかなり面倒だよ 初心者は絶対ハマる import subprocess import glob File_Path = (glob.glob("*/test.dat")) for i in range(len(File_Path)): print File_Path[i] file = open(File_Path[i],'rb') data1 = [file.read()] data2 = data1[0].replace("\x01\x00\x00\x00\x04\n\x00", "\x00\x00\x00\x00\x04\n\x00") .replace("\x02\x00\x00\x00\x00\x00\x00\x00", "\xf4\t\x00\x00\x00\x00\x00\x00") file.close() file = open(File_Path[i],'w') file.write(data2) file.close() 一ヶ月前からプログラミングはじめて書き方もよくわからないのですが、上のコードで一応動くようになりました。 修正御指南お願いします。 出来てるんじゃないの? バイナリファイルを表示して確認出来ないってこと? ならバイナリエディタ使うとかLinuxならhexdumpで表示するとか? バイナリとテキストの違いはわかるよね? 一応動きましたが、納得いきませんで > data1 = [file.read()] data1をリスト格納によって \x00 \x00 \x00 \x00 \x00 の表示取り扱いができるようになり、replaceも動くようになりました。 しかしリストに格納する意味は無いですし ***(data1)関数などで、表示できれば良いなと。調べてもわかりませんでした。 プログラミングに向いてないというより人間を名乗らない方が良い 出来の悪いAIです くらいにしとけ もしかして成長したアイちゃんでは? 最近見なかったが戻ってきたのか。 Pythonを極めればAIエンジニアとして生きていけると思うのは大きな勘違い、色んな言語を組み合わせる必要がある、と自称玄人は素人に良く言う 素人は他の言語もPythonもできないのにそんな事をわざわざ言ってどうなる まずPythonだけでも勉強させてやれよ やる気あるのは良いことじゃね 独学でも挫折する人多いわけで DEBUG=0っていうグローバル変数のあるモジュールをシェルから実行するときにこれをDEBUG=1にして実行する方法はありますか? 例えばmake DEBUG=1みたいな感じで。 >>458 自作のモジュールか何かで編集可能かつbashの場合 DEBUG=${DEBUG:=0} と定義して呼び出すときに上書きできる もし編集不可能ならそんな方法はないのでsedやawkで置き換えることになる >>433 なんかよくわからないんだけど、 s1 = 0x01020304 を 0x02010403 にしたいと言う事かな? >>448 https://ideone.com/BCfi7E に自分のセンスで書いた 採点すると ・不要なimportはしない ・globはファイルが複数ない場合は使わない ・[file.read()]の大カッコは不要 ・変数名の大文字小文字の使い方がおかしい >>459 ありがとうございます。 やっぱりソースを書き換えるしかないんですね。 >>460 落ち込まなくても良いよ。 2ch なんていろんな人間がいるから。 バカもいるが、優しい人もいる。 質問してるうちに何が大事なのかがわかってくると思うから、めげずに質問を続けてみたら? >>463 や、>>465 は、少し反省しろ。 病気を乗り越えようと頑張ってる人をけなすなんてお前たちは最低だよ。 まじで病気だったなら5chなんかに来ないでスクールとかに通えよ https://www.cyber-u.ac.jp/subject/python.html タダで懇切丁寧に教えてもらおうとか頭おかしい >>466 教えたくない人は黙っていればいいんじゃないかな プログラミングの経験自体がないっぽいから とりあえずはWebに転がってるサンプル入力して 結果を見て出来た!ってニヤけることから始めるべきかと。 数こなすことで出来ることと出来ないことが何となく分かってくる。 出来ないことをあれこれ考えて、出来る単位で作っていくのがプログラミング。 >>452 Python には、Ruby のpack/unpack みたいなのは、無いのか? pack : 配列 → 文字列 unpack : 文字列 → 配列 >>468 初心者用ブログにのってるコードをコピペでもいいからまずは自分で動かしてみるってのは良いよね この値を変えたらこう動くだとか、このコードとあのコードを組み合わせたら、こう言う動きが出来るかもしれないなど組み立てる能力にも繋がるし 画像の中から特定の画像(拡大や縮小をされてても対応可能な) 見つけ出すコードを下さい。 >>469 自分で調べもしないで聞くな。 r=['A','B','C'] rs=''.join(r) ir=[1,2,3] irs = ''.join(map(str,ir)) print(rs ,irs , list(rs), list(map(int,irs))) #OUT ABC 123 ['A', 'B', 'C'] [1, 2, 3] >>469 今のRubyがどうなってるんだか知らないけれど、pythonではバイナリ(bytes)と文字列(str)は違う型 で、pack/unpackは普通バイナリと数値や文字列の変換で使うやつだと思うが、 この目的なら pythonには struct.pack / struct.unpack がある >>952 repr("\x00") で行けるんじゃないかな >>469 そのものズバリならstructパッケージを使う 型がプリミティブ(intやfloat)ならnumpyでも可能 ファイルからならnumpy.fromfile バイナリ配列ならnumpy.frombuffer 文字列ならnumpy.fromstring dtypeでエンディアンも指定できる 安価の番号が違ってても気付かずにレスしまくってるのが 数名(見かけ上は)居るようだが気付いていないところを観ると SCで自演しまくってるんだろうな paizaのプログラミング問題みたいなやつでお勉強はじめたんだけど、Aランク問題になるとタイムアウトしまくる whileや再帰をforに変えるとか色々やったけど通らないしアルゴリズムが問題なんだろうな とはいえ模範解答もないし、色々模索しているが挫折しかけているよ… ただ、こういった高速化のための考え方 みたいなものを学ぶのもきっといつか役立つのかなとも思う >>479 paizaの問題は転載ダメなんだ、すまん 計算量を落とす基本は、n^2 を、n log(n) の形にする事! 2^10 = 1,024 だから、2^20 = 百万。 ここで、データ数が百万の場合、百万 * 20 = 2千万になる! 一方、n^2 = 百万 * 百万 = 1兆 だから、log(n)の部分は、せいぜい、20〜50ぐらいだから無視できる! つまり並べ替えて、ソートを使うのが速い! だから、単純な2重ループになっていたら、ダメ! ループの内側に、優先度キュー・2分ヒープなど、何らかのソートを使っていないと、ダメ! 関数の中でグローバルな変数にアクセスするのはglobal宣言が必要ですが リスト変数の場合はappendなどの操作をすると 宣言なしでグローバルなリスト変数にアクセスします これを禁止するにはどうしたらいいでしょうか? グローバルな変数にアクセスするときはすべて関数の引数として 渡して意図せず引数にないリストにアクセスしてしまうことは避けたいんです Pythonって継承ってライブラリの作者しか使わないんじゃね?って思った 抽象クラスの概念ないしポリモーフィズム簡単だし abstractなクラスも作れる 何ならinstance化禁止にも出来る 標準ライブラリで実装されていることが言語仕様に入らないとか言い出すとasync awaitも言語仕様に文法は存在するけど何もしないコードになる pythonでなくても最近は継承は否定的に見られてるだろ。 継承無いと、オーバーロード擬きの判定がダックになって面倒この上ない なるほど、人の迷惑になりそうなクソな書き方をしたい人か。 ヤバイくらいに言葉が足りてないなw 継承を悪用したアホな設計が蔓延した結果、継承は悪用されやすいので別の代替手段が模索されているという感じだ 例えばjavaは多重継承を禁止した結果、extendsに加えてimplementsなんてものがある 全部implementsでいいんでは?と昔ながらに思ったものだ 継承は、Ruby on Rails とか、フレームワークの作者が作るもの。 それを使う方は、そのクラスを継承させて使う フレームワークの作者以外が、継承を前提にしたクラスを書くのは、滅多にない 多くはないのは同意するが 滅多にないは言い過ぎ 訂正汁 importについて教えてください。 現在作成しているプログラムはこのような構造になっています。 hogehoge ┣ db ┳ models.py # DBのスキーマを管理するモジュール。rds.pyをインポートしている ┃ .┃ rds.py # DBのセッションを管理するモジュール ┃ .┗ __init__.py ┗ app.py # Webサーバを起動するモジュール (1)最初に事前準備として手動でmodels.pyを実行する事でDBの作成を行います。 # python db/models.py (2)その後Webサーバを起動してプログラムの利用が始まります。 # python app.py ここで質問なのですが、models.pyの中のimport文の書き方によって(1)と(2)のどちらかでエラーが発生します。 (1)でうまく動く時は import rds (2)でうまく動く時は import db.rds どうしてこのような挙動になるのか、(1)と(2)のどちらでも動くようにするにはどうしたら良いのかご教示ください。 よろしくお願い致します。 pythonに限らず相対パスの話で models.py自身から見りゃそりゃrdsは同じフォルダにある、 app.pyからrdsを見ると\db\rdsにある >>501 ありがとうございます。 どちらの場合でもエラーはmodels.pyから出るのですが、 app.pyで実行した場合はmodels.pyの中のrds.pyへのパスもmodels.pyから見たものではなくapp.pyが基準になるという事ですか? なんてこったどうすればいいんだ・・・ from . import rds これだけでいけるはず 必要があれば __init__.py にも何か書く python + chrome + seleniumで制御しています。 拡張機能を読み込むとインストールに成功しましたのページが開いてしまい。それを手作業で消さないと続きが実行されません。 何か良い方法があれば教えてくれませんか? >>504 毎回インストールしてるのん? インストール済のchrome使うのはダメ? profileで拾っても拡張はインストールされた状態にならないので、毎回Optionsでインストールしています。 インストールされた状態でselenium動かせるならそれの方が良いです。 profile指定で拡張そのままで起動できてるけどなあ… ログイン状態とか維持できてる? 俺も最初はそんな問題あったような気がするけど… 正直原因は覚えてない ログイン状態はキープできてるのですが。。 わかりましたProfile使って色々やってみます。 何か間違えているのでしょうね ありがとうございました Pythonが最高値を記録 - 6月開発言語ランキング 2019/06/11 08:49 後藤大地 https://news.mynavi.jp/article/20190611-840797/ TIOBE Softwareから、2019年6月のTIOBE Programming Community Index (PCI)が公開された。 TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が どれだけ話題になっているかをインデックス化したもの。2019年6月におけるインデックス は次のとおり。 6月TIOBE Programming Community Index / 円グラフ https://news.mynavi.jp/photo/article/20190611-840797/images/002l.jpg 2019年6月はPythonが8.530%と、観測が始まってから最も高い水準に到達した。TIOBE Softwareはこのままの傾向が続いた場合、今度3年から4年でPythonがJavaとC言語を抜いて 最も人気があるプログラミング言語になると予測している。 TIOBE Softwareはこうした動向の理由として、Javaはクラス、静的メソッド、パッケージ などプログラミングの初心者が学ぶには冗長すぎる傾向があること、C言語ではメモリ 管理に直面することなどを挙げている。こうした言語と比べると、Pythonはシンプルで ワンライナーで済むこともあり、その簡単さが普及につながっているという。 pandasを使ってCSVファイルを開く処理を書いたのですが、 そのファイルのセルの一つに”Null”という文字列が含まれていたため、pandasを介すとそこのセルがNaN扱いになってしまいました これを文字列のNullのまま扱ってもらうようにはできないでしょうか? 書いたコードはこんな感じです import pandas as pd df = pd.read_csv('D:/Desktop/python.csv', delimiter="\t", index_col=[0], header=None) print(df) #Nullという文字が書かれたセルがNaN扱いになってしまった 試しにpandas使ってみたらNullっていう文字列はNullって文字列のままで表示されましたよ そのpython.csvがおかしいんでないの? テキストエディタで中身確認した? >>511 レスありがとうございます そのCSVの中身はこのようになってます(OpenOfficeCalcで開いたもの) https://i.imgur.com/QPR1ycq.png A2の文字列がNullです これをpandasで開くとこうなります https://i.imgur.com/hUpmSMu.png うんうん、そのCSVをメモ帳とかのテキストエディタで開いて中身を確認すると nullのところが空になっているんじゃないかな? うーん、同じようなファイルを作ってpandasで開いてみたけどnullはnullのままだわw 私の環境はWindowsで、メモ帳で>>514 の途中までのデータを入力したファイル(文字コードはsjis)を用意して encoding指定してpandasで開いてみました(encoding指定しないとエラーになる) >>> df = pd.read_csv(r'C:\Users\tk\Desktop\aaa.csv', delimiter="\t", index_col=[0], header=None, encoding='cp932') >>> print(df) 1 0 nudge 軽い突き null ゼロ nuptial 結婚式 obscenity わいせつ >>> ということで、そちらの環境は日本語が含まれているファイルを開いているのにencoding指定無しで開けているのが異なる もしかしたらencodingエラーを無視して開いているんじゃないのかな?それでpandasで読み込んだ時点でデータが 変わっていると予想 あ、ファイルの文字コードをutf-8にしたらencoding指定無しでいけたわ でもnull文字はnull文字のままで、NaNにはならないなぁー わざわざ同じように試していただいて本当にお手数おかけしてます せっかくですので問題が起こっているCSVファイルもあげさせていただきました もしよければチェックしていただけるとありがたいです https://dotup.org/uploda/dotup.org1870215.csv >>> df = pd.read_csv(r'C:\Users\tk\Desktop\dotup.org1870215.csv', delimiter="\t", index_col=[0], header=None) >>> print(df) 1 0 nudge 軽い突き null ゼロ nuptial 結婚式 obscenity わいせつ obsessive 妄想を持った人 omen 前兆 onslaught 猛攻撃 >>> ででぇーん、再現ならず・・じゃあ私もう寝るから、おやすみー ちなみに私の環境のpandasはAnacondaに入ってたやつで、バージョンは以下のとおり >>> pd.__version__ '0.20.3' >>> うーん再現ならずですか・・・ お付き合いいただきありがとうございました、おやすみなさい 自分のpandasのバージョンは0.24.2なので、もしかしたらそこが原因かもしれませんね いろいろ試してみます ありがとうございました >>512 OpenOfficeよりもLibreOfficeの方が良いらしいですよ ttps://tedaeri.com/app-which-openoffice-or-libreoffice/ >>523 >しかし、既に「Apache OpenOffice」のユーザーがあまりにも多く、終わらせようにも影響力が大きいです。 普及のためには、M$との互換性が高く移行も容易、みたいな宣伝をするくせにw win上のAnacondaのspyderのエディターで書いて実行する場合 qt5もtkinterもボタンを押して変化なし Anaconda powershellというのでpython ファイル名だとちゃんと動いた 出来るだけきれいなコードを書けるようになりたいと思ってます 動けば良いってレベルから次に行きたい こういう場面はこういう処理の書き方のほうが良いとかはどうやって身につければ良いですか? 独学じゃ無理 仕事で他人にコードレビューで叩かれて覚えるもんだ >>526 人が書いたコードを読むこと 標準ライブラリとかで使う部分だけでもいいから読んでみる PEP8にできる範囲で準拠してみるとか 他にはテストを書いてみるとかも役に立ってると思う ていうか、色々ありすぎてキリがないけど 人が書いたコードを読むのは絶対必要かな >>497 java,c++みたいな静的な言語の場合はそうだが、ruby,pythonみたいな言語の場合は クロージャー渡すインターフェイスのが直感的。 >>526 Pythonできれいなコードはあり得ない。C, C++, C#などで書き直すしかない。 >>539 そりゃねーよ。 Python だって型を指定することもできるんだぞ。 可読性はそれだけでも上がる。 初心者はそんなことは考えなくて良い。 人のプログラムを眺めること、ひたすら自分で練習問題を解いて人の回答と見比べてみること。 プログラミングのお題スレ Part14 https://mevius.2ch.net/test/read.cgi/tech/1558168409/ >>526 可読性が高く、きれいなコードが書けるのは、Ruby。 誰もが読めるから、アルゴリズムを説明する、仮想言語にもよく使われる Node.js などは、Rubyのすべての実装を、JavaScript に移植したもの! 可読性が高いから、他の言語から、よく参考にされる Rubyで「プログラミングのお題スレ」の問題を解くのが、お勧め! >>532 そんな素晴らしいRubyが驚異的な勢いでシェアを失っているのだから、どこかに重大な欠陥があると考えるのが自然だろうね https://www.tiobe.com/tiobe-index/ >>532 あのスレは簡単なお題に対して短いプログラムで回答することが多く、one linerも多いだろう。 質問者の求めているものが得られるような場所じゃないぞ。 毎度のことだか、ところ構わず自分の好きなものを推すのはやめろ。「相手の求めること」と「自分の好きなもの」が違うことが理解できないのか? アルゴリズムの説明に使われるのってRubyよりPythonの方が圧倒的に多いよね そもそもPythonは意図的にアルゴリズムの文献で使われてるような仮想言語(擬似言語の間違いだと思うが) に似せて作られてるから当然ではあるんだが CとJavaとPythonが多いよな。基本がCで、オブジェクト指向関係だとJavaが多いイメージ。結局は使用人口なんだろう。 抽象度の高いスクリプト言語の擬似コードとしては、RubyよりもPythonの方が多い印象だな。使用人口の点もあるし、クセが相対的に少ないので無難ということなんだろうが。 >>526 です レス頂いた方ありがとうございます 単純にプログラミング能力不足なところもあるとは思うんですが 人のコード見ても理解出来ないときがあるのでいろんな人のを見て自分との差を考えてみます >>539 理解できないときは、自分で実行させて中間の値がどう変わっていくのかをみていくと理解が早い。 そして自分で少し変えた例題を作って実行させてみる。 Python は、基本は優しそうに見えるから侮って勉強を怠ると、奈落の底に落ちるかも知れない。 登れば登るほど頂上が見えないようなところがあるな。 ライプラリが半端なく多いからね。 あんなのもこんなのも大抵できてしまう。 IT 大賞を取った本「プログラマ脳を鍛える数学パズル」2015 も、多くはRuby の解答 一部は、JavaScript で書いてある ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる