Pythonのお勉強 Part59
■ このスレッドは過去ログ倉庫に格納されています
★当スレに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(超初心者用) その41【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1549282930/
〇前スレ
Pythonのお勉強 Part58
http://mevius.5ch.net/test/read.cgi/tech/1540468210/
次スレの建立は>>985が挑戦する >>571
終わりなのは同意するが、正規表現の取り扱いは未だにperl最強と思っているし、日本語周りはruby >> pythonなんだよなぁ パイロットの安否が伝えられないね
生きてなければ致命的 >>574
Python2は酷すぎるので置いといて、Python3でもモジュールレベルでは対応出来ていないものが散見される
すぐに思いつくのは漢字表記の時刻パースかな
rubyのTime.strptimeは%Y年%m月%d日を正しくパースできるけどpythonのdatetime.datetime.strptimeではパースできない
他にもpythonのxmlモジュールでXMLを読み込むときにせっかくxml内に文字コードとしてSJIS使うと書いてあるのに、正しく読めずにencodingでわざわざ指定する必要があったりね
日本人のpythonユーザーが増えているのでいずれ改善されるんだろうけど、初めからマルチバイト対応のrubyに追いつくにはもう少し時間が必要 >>576 自分でそうしたら? むしろ日本に住んでるからいけないのでは? >>559
現状だけを言うなら日本でサーバサイド関連はJava、ついでrubyかな
ここにpythonが台頭する未来は自分には見えない
それでもpythonでサーバサイドをやるならdjangoかflaskになるけど、djangoは色々と独特で他のフレームワークを知っていると面食らう
flaskは軽量で素直だけど、全部入りのdjangoと違って例えばtemplateはjinja2、ORMはSQLAlchemyと別のモジュールを呼び出すことになるのでメンテナンス性は少し劣るかも知れない
どっちに未来があるかと言われると、どっちにもないように見える…
まだnode.jsかgoの方が多分マシ どうせフロントはSPAとしてJavaScriptで作るからサーバサイドはJSON返してくれれば何でもいい。そんな感じでFlaskで書いてる >>575
こういうことじゃないのか
>>> datetime.datetime.strptime('2019年4月14日 14時30分30秒', '%Y年%m月%d日 %H時%M分%S秒')
datetime.datetime(2019, 4, 14, 14, 30, 30)
>>> datetime.datetime.strptime('2019年4月14日T14時30分30秒', '%Y年%m月%d日T%H時%M分%S秒')
datetime.datetime(2019, 4, 14, 14, 30, 30)
>>> datetime.datetime.strptime('2019年4月14日14時30分30秒', '%Y年%m月%d日%H時%MM分%S秒'))
datetime.datetime(2019, 4, 14, 14, 30, 30)
>>> datetime.datetime.strptime(b'2019年4月14日14時30分30秒', b'%Y年%m月%d日%H時%M分%S秒')
SyntaxError: bytes can only contain ASCII literal characters.
>>> datetime.datetime.strptime(b'2019年4月14日14時30分30秒', '%Y年%m月%d日%H時%M分%S秒'))
SyntaxError: bytes can only contain ASCII literal characters. >>578
しったかで平気で嘘書けるおまいが裏山C >>582
実験ありがとう
自分の環境でもパースできたよ
昔のエラーが出たコード探してみよう
流石にbyte型とstr型のミスではないと信じたい 仕事で数か月Pythonやったんだが、学習ハードル高い...
PG言語としてはかなり学習楽なんだけど、
高確率で大学・院レベルの統計学とか出てきて、そっちのハードルが高かった。
AIとか絡まないんだったら、Ruby使える人間がPython覚えるメリットってあんまりない? AIが浸透したら高確率で「お前ruby出来たよな。pythonも出来るだろ」ってAI担当にされると思う。 >>585
それは言語の問題ではないのでは?
恐らく機械学習とかをやってるのだと推測するけどそれならどの言語使おうが統計学は登場するだろう 他にできる言語あるならpythonなんて勉強しなくていいよ。
そして、全くできなくても「できます!」って言っとけばいい。
ある日「お前pythonできたよな?やってくれ」と言われたら元気に「はいっ!」と答えればOK。
家に帰って三時間入門サイトで練習すれば次の日から仕事で使えちゃうよ。 AI系は、言語の問題じゃない。
微積分・統計手法など、大学院レベルの知識が必要だから
YouTube の、KENTA の「わらしべ長者」の動画を見れば?
AWS, Ruby on Rails → go, scala, Kotlin, Elixir
devops → Docker, kubernetes
Ruby からはキャリアが、2 パターンへ枝分かれする
Vagrant, Chef など、devops へ行くか、
Rubyは、オブジェクト指向・関数型だから、JavaScript, Kotlin, Elixir へ行く 3D ゲームと同じ。
物理・行列演算など、大学院レベルの知識が必要だろ
たいてい、プログラミング言語の話じゃない >>590
2パターンへ枝分かれしたあと、無職に収束する。
そして死ね。 安月給でベンチャーという名のウンコ企業を転々として
無為に過ごしたくないならRubyはやめとけ >>591 >>590
大学院レベルの数学なんて必要ない。
マセマか石村夫妻の微積と線形代数と統計とベクトル解析と微分方程式の学部初級のテキストを読めばいい。 ぶっちゃけ安定して金を稼ぎたいならJavaとかPHPだけやってデカい企業に正社員で入って寄生するのがベストだよ 流石にそんな仕事は大企業の正社員の単価での需要は定年までは続かない
子会社化されて待遇ダウンして憂き目を見るだろう おれいわゆる有名大企業で働いてるけど、最近は社内システムpythonで作ることが増えてきてるよ。 うちはPython, Javaで作ることが多かったけど、最近はGoが増えてきてる印象だな googleなんてすぐに推しが変わるのに、その癖すぐに高いレベルを維持してるからな
アメリカのAKBだ >>599
Web システム?
フレームワークはなに使ってるの?
BTSとして使ってたtracはgenshi使ってたけど最近はもっとイイヤツあるのかな? >>605
詳細は避けるけどストリーミング配信を行うシステム。普通にflaskだよ。 C++がPython抜いて3位 - 4月TIOBE言語ランキング 2019/04/17 10:55 後藤大地
https://news.mynavi.jp/article/20190417-810363/
TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。
4月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20190417-810363/images/001.jpg
2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。
長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。 >>606
> 普通にflaskだよ。
最近はpython触ってないから知らなかったよ、ありがと >>607
これってサーバサイド限定の話じゃなくて
IoTとかの組込系の仕事が増えたってことだよな pythonとC/C++はスムーズにくっついてくれるんで、この2つが人気あるのは嬉しい傾向。 anaconda使ってるんだけど、condaでインストールできないパッケージがある場合ってどうするのが正解? >>611
pipで入れる
オススメの使い方は環境を作ってデフォルトを汚さないこと
手順は以下のような感じ
conda create 環境名
source activate 環境名
conda install パッケージ名
pip install パッケージ名
condaでインストールできるものはcondaを使う
ただpipを使くなら以後全てpipを使った方が問題が少ない 間違えた
一番最初の環境作るのは -n オプションが必要で
conda create -n 環境名
あと二番目の source activate 環境名 は最近は
conda activate 環境名
に変わったので出来なかったらこっちを試して >>613
pipenvを使う人とanacondaを使う人のユーザー層は違いそう 実はpipenvよく知らない。node.jsのpackage.jsonみたいなものと聞いたことがあるんだが正しい? nvmやnodist、nodebrewやnみたいなもんだろそれを言うなら。 やれpipenvやー、venvやー、virtualenvやー、pyenvやーってもうわけがわからないよ pipenvはrubyのbundlerが一番近いのかな venvってvirtualenvみたいに同一Pythonバージョン内で仮想環境複数つくれないの? Python 自体が始めてで基本が分ってないので苦戦してます。
関数の結果を別の関数で使うにはどうしたら良いのでしょうか?
例えば、下のプログラムはどう直したらちゃんと動くでしょうか?
アドバイスをいただけると助かります。よろしくお願いします。
https://ideone.com/BHdnXj pythonでの成果物を提供するときに必要なライブラリを自動でインストールできるようにするベストプラクティスってある? 成果物をパッケージ化する時に、そのパッケージのsetup.pyに依存するパッケージを書くのが普通ないの >>625
相手が開発者なら626
相手が一般ピープルならWebアプリ
Pythonで作ったものを他所へ配ろうという発想は何ら得るもののない修羅の道だからきっぱり諦めるのが身のため >>626でいってみます。
先方のソフトとうちのソフトをソケット通信で繋いで一つのサービスを提供することになったんだけど、先方のシステムスタブ(兼ドライバ)をpythonで作ったのよ。GUI付きでさくっと作る必要があったから。
んで、うちのソフトを提供して結合試験してもらうんだけど、せっかくなので参考までにスタブも渡してあげろと上司に言われてしまって。 pythonの成果物の配布で何の問題も発生しないようにするなら必要なパッケージ名を指示するだけでなくパッケージの実体そのものを含めておかなければ不十分
pipで拾ってくるにしても元データが削除されているリスクがあるからね >>628
setup.pyは慣れないとキツイ
恐らくスタブ作るのと同じくらいの手間がかかる
特にGUI周りは動作環境に依存して動かないこともしばしば
許されるなら仮想マシンで提供かなぁ 現実的にはreadme.txtに
・pythonをインストールしてください(url)
・下記のコマンドを入力してください。
・pip install 〜
・pip install 〜
…
だろうな。
スタブってことは、渡す狙いは先方が上手くいかなかった時にソースコードを参考にしてもらうことであって、動かすことはおまけでしょ。 電話一本かけて説明すれば済むことに時間かけちゃダメでしょ。 違う部署で使いまわされて
また事情知らない人に一から説明し治すくらいなら
これみろの一言で済ませる方が大事 最近はもっぱらAnacondaで動作確認して「AnacondaのバージョンXXインストールしてください」で済ませちゃう あれこれ手動でインストールしなくてもいいようにsetup.pyとかrequirements.txtがあるんやないのか(´・ω・`) 結合試験の時にあると嬉しい、参考程度のオマケプログラム渡すだけだろ?
そんなのうって欲しいコマンドメールで送るだけで十分でしょ。 python製プログラムを提供するんだけど楽な方法ない?
↓
setup.pyがあるよ
↓
setup.pyは慣れてない人には書くの大変だと思うよ
↓
今回くらいの話ならsetup.py書くより手書きメモの方が楽でしょ
↓
手動でインストールしなくてもいいようにsetup.pyがあるんじゃないの?
↓
今回くらいの話ならsetup.py書くより手書きメモの方が楽でしょ
無限ループ入ったな。だれかbreak文挿入して差し上げて。 if 先方との仲良さ > 60%:
way=手書きメモ
break
elif 先方との仲良さ > 30%:
way=setup.py
break
else:
way=スタブ渡さない
break 依存したパッケージも含んだsdistとかwheelって作れるんかね アイコンをダブルクリックして起動したときだけ
一部のライブラリをimportできないという謎のエラーが出て
今日の午後いろいろ試したが駄目だったのが
visual studio 2019のほうにもpythonが入ってるのを思い出して
試しに削除したら直った Vagrant, Chef は、Ruby で作られている!
だから、Rubyなんだよ
Ansible は面倒 chefとansible両方共使ったことあるけど、間違いなくansibleの方が簡単やわ Vagrant最近使わなくなったな。もっぱらDockerだわ ちなみにvagrantを作ったhashicorpはRubyを捨ててGoに乗り換えたよ Ruby が作り出した、今世紀最大の起業家、
Vagrant の作者、Mitchell Hashimoto(Hashicorp) https://github.com/mitchellh
このホモっぽい兄さんのことか
最近のコミットほとんどGoで草 ちなみにhashicorpといえばvagrantだったのは昔の話で、今ではteraformが代表的なプロダクトだ
もちろんteraformはGo製な あと、Chefも新プロダクトであるChef AutomateはGoに乗り換えた
完全にRubyにNOの流れだね
インフラ系のRubyプロダクトで有名なのはあとはfluentdが辛うじて残ってるくらいか fluentdも最近はfluent-bit(C言語製)の方がアクティブに開発されてるみたいだけど、
開発元のTreasureDataがARMに買収されたことでIoT重視に転換したのかな
TreasureDataはembulkもJRubyやめてJavaに乗り換えたみたいだし、
マジで可愛そうなくらいに壊滅状態だねインフラ分野のRuby 0,1を要素に持つリストがあって、連続する1はまとめて一回としたときに
1が何回出てくるかカウントする問題をどう実装していいのかわからずに
困っています・・・
例)
[0, 1, 1] → 1回
[0, 1, 1, 0, 1, 0, 1] → 3回
[1, 1, 0, , 1, 0, 0] → 2回
どなたかよろしくお願いします・・・ >>657
何も考えずにやればこんなん
list=[0,1,1,0,1,0,1]
init=0
cnt=0
for i in list:
if init==0 and i==1:
cnt=cnt+1
init=1
if i==0:
init=0
print(cnt) >>657
import re
a = [1,1,0,1,0,0]
_a = ‘’.join([str(c) for c in a])
_a = re.sub(r’1+’, ‘1’, _a)
_a = re.sub(‘0’, ‘’, _a)
print(len(_a)) 電車の中だからコードかけないけど
リストの頭に0を一個足して
要素n+1から要素nを引いたものが1になる数を数えればよいのでは >>657
>>> import re
>>> q = re.compile(r'01')
>>> a = [0,1,1]
>>> b = [0,1,1,0,1,0,1]
>>> c = [1,1,0,0,1,0,0]
>>> len(q.findall(''.join(map(str,[0]+a))))
1
>>> len(q.findall(''.join(map(str,[0]+b))))
3
>>> len(q.findall(''.join(map(str,[0]+c))))
2 Ruby では、文字列のsqueeze で、連続する同じ文字をまとめる。
ただし、配列にはそういうメソッドがないので、文字列に変換してから処理する
ary = [0, 1, 1, 0, 1, 0, 1]
char = "1"
ary.join.squeeze( char ) #=> "010101"
ary.join.squeeze( char ).count( char ) #=> 3 python て、case文みたいのが無いんですよね。if文でも出来るとは思いますが、なんか嫌じゃないですか?
あと、スコープが関数だと思いますが、不便ではないですか。スコープがブロックの言語もあるようですが。
識者の意見を聞きたいです。 switch-case無しは最初は抵抗あったけど、一回書いてみたら別に可読性悪くないなとわかり納得した。
スコープについてはどうなんだろうねぇ。すごく人によりけりな気がする。自分はブロックでスコープ管理するようなプログラム書く習慣がないから気になったことないな。 俺はブロックスコープいらない派
一般論として、ブロックスコープが欲しくなるような長い関数は書くな 正規表現で複数の1を一つにまとめてしまう方法はperlっぽいな >>664
Switch書かないといけないロジック自体が好ましくないのでいいと思う
必要なら辞書でそれっぽい事も出来なくはない
x = ‘hoge’
{
‘hoge’: 3,
‘piyo’: True
}[x] https://mevius.5ch.net/test/read.cgi/tech/1552194662/
ここにpython3でPOST使って書き込みするにはどうすれば良いのですかねぇ、誰かおしえてくれませぬかのぉ Ruby, Nokogiri, Selenium Webdriver を使って、
textarea に文字列を書いて、送信ボタンを押せば?
CSS Selector は、
body > div.container.container_body.mascot > div.formbox > div.formbody > form > p > textarea.formelem.maxwidth
body > div.container.container_body.mascot > div.formbox > div.formbody > form > p > input.submitbtn.btn >>670
天才ですね、
できるかわからないけど、
やってみまーす、あっざーす ■ このスレッドは過去ログ倉庫に格納されています