Pythonのお勉強 Part56

■ このスレッドは過去ログ倉庫に格納されています
2018/02/24(土) 09:07:21.39ID:5jzCjhzv
Pythonオフィシャルサイト
http://www.python.org/

■前スレ
Pythonのお勉強 Part55
https://mevius.5ch.net/test/read.cgi/tech/1513919747/
118デフォルトの名無しさん
垢版 |
2018/03/10(土) 17:34:28.97ID:5pXC+BOT
正論
119デフォルトの名無しさん
垢版 |
2018/03/10(土) 19:38:56.10ID:cf6Ll6te
kindleでPythonの入門書探してるとキモい女の絵の本が出てくるけどあれなんなの?
マジやめてほしい
2018/03/10(土) 19:51:26.39ID:6AtVaAR0
>>117
>日本語でも書けないなら無理と思え
5chのpythonスレの質問はPythonでの書き方が分からないからではなく
日本語でも書けないってのが多いからな。
121デフォルトの名無しさん
垢版 |
2018/03/10(土) 20:49:07.14ID:yi682Bf+
python勉強始めて、jupyter notebookでちょろちょろやってるんだけども実際じゃあ開発始めよう!ってなったらVScodeとかでやればいいのかな?
2018/03/10(土) 20:59:35.16ID:opL9wLKH
pycharmでいいだろいろんな言語使うならVSCodeいいけど
2018/03/10(土) 21:25:52.73ID:8rbuqSBk
>>122
pycharmは有料板、無料版どちら使ってる?
2018/03/10(土) 22:03:18.26ID:CYNPOxqI
PTVSは先日新しいIntelliSenseが正式にアナウンスされて
ライブラリデータベースが不要になったみたいだけど
未だに試験的で型不明が増えたり一部退化しとるな

あとはCondaサポートが追加されたり…
2018/03/10(土) 22:47:27.80ID:uUYTpCvs
Anacondaについてるspyderをそのまま使ってるけどpycharmの方がいいのかね。
好き好きなんだろうけども、ある程度使って比べないとメリットデメリット分からんからなあ。
2018/03/10(土) 23:09:45.15ID:vFw8BYES
自分で考えなくてもAIがなんかいい感じにしてくれるんでしょう?
というのが増えそう
2018/03/11(日) 00:21:26.96ID:WgDqrFTJ
あぁいぃ、、、
2018/03/11(日) 01:10:04.76ID:HogP+vFk
>>126
将来はそんな感じになって、個人が作る趣味レベルのソフトはAIでプログラムを
作るになるんだろうな。10年ぐらい先には、趣味レベルものを作るときは
気合を入れてプログラミング言語覚える必要ないになっていたりしてな。
2018/03/11(日) 02:34:21.01ID:hpuVB5+/
10年前にも、そのまた10年前にも言われてたなそれ。
さらにそのまた10年前にも略
2018/03/11(日) 10:43:54.31ID:wWFsao1Q
簡単なものは作れるだろうけど、AIも人間がプログラムして動いてるんだから、いくら学習しても人間を越えることはないだろうな
工夫ってのが出来ないし
131デフォルトの名無しさん
垢版 |
2018/03/11(日) 10:53:20.08ID:zWe+i43K
人間が理解不能なものは作れるんじゃね
それが有効に動くものなら理解不能のままでも使えばいい
2018/03/11(日) 11:07:08.59ID:z1FVyjSJ
>>130
学習しないアホ乙 w
人間より強いチェスソフトとかもある時代になにを言ってるんだか
2018/03/11(日) 11:11:10.40ID:u0Fc0bsI
そのAIが作ったプログラムが違法アップロードとかしたら誰が責任取るんだろ
AIの製造元? AIに指示したユーザー?
2018/03/11(日) 11:12:53.35ID:u0Fc0bsI
そのプログラムを使用したユーザー?
2018/03/11(日) 11:32:22.11ID:lK5925v1
>>132
そのAIは今までやられてきた打ち方以外は知らないはずだよ
無から有は作れない
2018/03/11(日) 11:48:21.93ID:wrJvYVnh
チェスのディープブルーはわりとごり押しだもんな。昔ながらというか。
囲碁のgoogle AlphaGoならまた違うんだが。
2018/03/11(日) 11:52:59.52ID:4b/1QsDB
https://mail.python.org/pipermail/python-dev/2018-March/152348.html
Guidoは2020年1月1日に2.7の公式サポート止めるつもりなのか
カウントダウンサイトは日付なおすのかな
138デフォルトの名無しさん
垢版 |
2018/03/11(日) 12:09:49.19ID:8JC0BCod
>>135
AI同士が撃ち合いして人間が把握していない手はあるんだろ
2018/03/11(日) 12:10:09.57ID:93lmuZEG
>>135
アホなの?
人が考えられないような打ち方を生成するなんてド素人でもできるわ
難しいのはそのなかから有効な手を絞り込む方
140デフォルトの名無しさん
垢版 |
2018/03/11(日) 12:11:36.51ID:8JC0BCod
いよいよ2ともお別れか
2018/03/11(日) 13:02:26.58ID:BorRgPy6
たまに10年前の技術を前提にカキコしてる人がいるのは5chが時空を超えて繋がっているからである。
2018/03/11(日) 16:43:38.71ID:7MIZ868V
そっちの方がAIよりすげーなw
2018/03/11(日) 20:08:45.06ID:iE5voU0A
10年前のプログラミング業界はどんな世界?
Rubyが流行ってた頃?
144デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:16:20.99ID:1mhcZmSW
rubyいつ流行ったっけ
145デフォルトの名無しさん
垢版 |
2018/03/11(日) 20:30:10.28ID:lvju0XX+
10年かもう少し前くらいには
国産オブジェクト指向スクリプト言語や
言うてお前らみたいなんが飛びついとったで
2018/03/11(日) 20:46:01.45ID:1mhcZmSW
悪い夢でも見たんだろ
2018/03/12(月) 11:59:46.53ID:R9pIE99R
いや、いい夢だった
148デフォルトの名無しさん
垢版 |
2018/03/13(火) 21:13:11.46ID:hWh8GdfX
BeautifulSoupで、bidの107.206を抽出する方法はある?

s = '<!--{"rates":[{"code":"USDJPY","name":"米ドル/円","bid":107.206,"ask":107.207,"high":107.279,"low":106.254,"open":106.408'
s = s.replace('<!--{"rates":[{"code":"USDJPY","name":"米ドル/円","bid":','')
ここから先が分からない。
2018/03/13(火) 22:01:24.56ID:exPfn8I7
>>148
そもそもそこからわざわざBeautifulSoupを使う意味がわからんのだが
先に <!― から ―> までの { } の JSON を取り出して bit キーの値を取り出した方が良いんじゃないの

その方法で無理矢理やるなら
s = re.sub(r',.+', '', s)
とか
2018/03/13(火) 22:07:34.94ID:WTxORbeC
くだすれPython(超初心者用) その36
https://mevius.5ch.net/test/read.cgi/tech/1514805522/
151デフォルトの名無しさん
垢版 |
2018/03/13(火) 22:36:15.65ID:hWh8GdfX
>>149
分からない(>_<)
Expecting value: line 1 column 1 (char 0)が出ます。


import requests, json
url = 'https://fx.minkabu.jp/pair'
res = requests.get(url)
webdata = json.loads(res.text)
print(webdata)
2018/03/14(水) 00:20:12.15ID:KbHgEZpQ
>>151
きっとBeautifulSoupを使っていないからだろ
2018/03/14(水) 00:28:43.76ID:y64W5YI+
そもそもhttps://fx.minkabu.jp/pair がnot foundになるんだが、そんなんでjson.loadsとか動くわけないのでは?
2018/03/14(水) 04:19:45.10ID:QheYb9tS
doc = Nokogiri::HTML(<<EOT)
<html><body>
<script type="application/json" data-hypernova-id="b8a86d1a-ba57-4db9-86fb-072499e821e3" data-hypernova-key="RateList">
<!--{"rates":[{"code":"USDJPY","name":"米ドル/円","bid":106.714,"ask":106.717, 以後省略 }]}-->
</script>
</body></html>
EOT

#script タグで、data-hypernova-id 属性を持つもの
elem = doc.xpath("//script[@data-hypernova-id]")

#テキスト部分
/"bid":([^,]*),/ =~ elem.first.content
puts $1 #=> 106.714

Ruby で作った。
正規表現は、"bid": で始まり、, 以外の文字が続いて、, がある。
, 以外の文字が続いている部分を、キャプチャーする
155デフォルトの名無しさん
垢版 |
2018/03/14(水) 14:58:19.61ID:2cAisCwC
質問者もアホすぎ
回答者も糞すぎ
2018/03/14(水) 15:20:16.82ID:9KFxXS/p
python2でも3でも動きませんでした。
他の方お願いします
2018/03/14(水) 16:10:07.65ID:w0zOjGY9
参考にして自分で書くもんだろ
代わりに書いてくれってことかよ
2018/03/14(水) 16:10:09.31ID:P1q1sBXB
>>> import requests
>>> import re
>>> url='https://fx.minkabu.jp/pair'
>>> response = requests.get(url)
>>> response.status_code
200
>>> charset = re.search(r'charset=(.+)', response.headers['content-type']).group(1)
>>> charset
'utf-8'
>>> content = response.content.decode(charset)
>>> re.search(r'"bid":(\d+\.?\d+)', content).group(1)
'106.495'
>>>

注意点:
・レスポンスのステータスコード(response.status_code)を確認して正常にアクセスできた(スタータスコードが200番台)かを確認すること
・requestsは取得したhtmlデータのcharsetを自動判定してエンコードまでしてくれる(自動でエンコードされたデータはresponse.text)が、
 この自動判定はよく間違えるので信用しない方がいい。よって、ここではレスポンスヘッダーのcontent-typeからcharsetを取得している
 ヘッダーから取得できない場合はボディからcharsetの取得を試みるとよい
2018/03/14(水) 16:28:13.72ID:P1q1sBXB
「答え全部教えちゃって、相手の勉強にならないだろ」と思われるかもしれないが、これは答えではなく参考例だ
参考例は正常に動作する例じゃないと参考にすらならない、質問者はこれを足掛かりにエラー処理などを実装するだろう
ステータスコードの分岐処理も必要だ、連続アクセスしないようにスリープ処理も必要だ、取得したいデータが増えれば
正規表現の例を参考に学習をすすめることだろう、、そう私はただの参考例を書いただけなのだ
それに比べれば先人たちの回答はウンコ、、ウンコと言わざるを得ない・・
2018/03/14(水) 18:25:01.98ID:n/nwjd00
さすがゲロウンコをひねり出す先生はおっしゃることが一味ちがうw
161質問者です(>>148 >>151)
垢版 |
2018/03/14(水) 19:14:23.24ID:xz9Rv2ZT
>>158 >>159先生ありがとうございます!
自分は正規表現が分かってないので、勉強します。

なお、>>156は自分ではありません。
2018/03/14(水) 21:26:47.25ID:y6/DiST3
>>155
アホ過ぎだから、アホ過ぎもユーザー対象にしているpythonなんだよ
他の言語では相手にされないかからね
と言うことで、pythonには俺や>>148のようなアホ過ぎが非常に多い。
でも、アホ過ぎもユーザー対象だからと言っても、見ての通り
アホ過ぎでもプログラムが出来るわけではない。
163154
垢版 |
2018/03/15(木) 01:11:18.75ID:NnpmsWbw
script[@data-hypernova-id]

まず、CSS セレクターでスクレイピングしてから、データを取得しろ
164154
垢版 |
2018/03/15(木) 01:14:00.64ID:NnpmsWbw
>>163
は、間違い

xpath なら、//script[@data-hypernova-id]

CSS セレクターなら、script[data-hypernova-id]
165154
垢版 |
2018/03/15(木) 01:32:37.48ID:NnpmsWbw
HTMLの仕様上、script要素内の<!--はコメントの開始とは解釈されないのでコメントノードも存在しませんが、
XHTMLならコメントの開始と解釈されコメントノードが生成されるはずです

実際Firefox 3、Safari 3.0.4 Beta、Opera 9.27/9.50でXHTMLのscript要素内のコメントノードを取得できました

XHTMLをtext/htmlで読み込んでいませんか?
多くのブラウザではapplication/xhtml+xml、applicatoin/xml、text/xmlで読み込まないとXHTMLとして扱ってくれません

あるテキストを含むコメントノードを取得するXPath
https://os0x.g.hatena.ne.jp/os0x/20080620/1213987223

>>154
で作ってる時に、<!-- コメント -->
この部分が、HTML では、どうしてもコメントとして取得できなかったが、
ようやく理由がわかった
2018/03/16(金) 07:50:15.92ID:TOiZPWj8
アホな質問かもしれませんが教えて下さい。
色々ライブラリがあるみたいですが、あるライブラリのヘルプみたいなそもそもの使い方、説明っていうのはどこに載っているのですか?
2018/03/16(金) 11:01:38.18ID:6YN3zoy5
>>166
そのライブラリの公式サイトとかライブラリを使ってる人のブログとか
英語ばっかだからって諦めちゃダメよ
あと、help()でも見られる
168デフォルトの名無しさん
垢版 |
2018/03/16(金) 12:51:36.68ID:kXpU5L3F
Jupyter Notebook 使い難い
ブラウザがGUIになっているなんて
2018/03/16(金) 12:59:52.28ID:CkZdro5L
使いどころ間違えてるんだよ。
エディタの替わりに使うもんじゃないぞ。
2018/03/16(金) 13:15:01.04ID:kXpU5L3F
>>169
じゃあ何に使うんだ?
171デフォルトの名無しさん
垢版 |
2018/03/16(金) 14:34:15.66ID:m5Cyk9W0
AtomでHydrogen かemacs でEIN
172デフォルトの名無しさん
垢版 |
2018/03/16(金) 14:41:53.77ID:3ma6aQHv
いやなら無理に使わなくていいのに
2018/03/16(金) 14:55:50.72ID:TOiZPWj8
>>167
ありがとう。
2018/03/16(金) 16:46:41.63ID:kXpU5L3F
>>169
Jupyter の使い所を言ってみろよ
2018/03/16(金) 17:15:49.75ID:WyQDIky+
>>174
あれは逐一コードとその実行結果を表示&記録するツール
旨いこと使うと後々便利らしいけど、がーっと.py書く為のツールじゃないっぽい
2018/03/16(金) 17:45:01.56ID:ika+QnZx
シェルに近いのか
2018/03/16(金) 17:50:54.61ID:WyQDIky+
シェルつーか、pythonが実行できるonenoteの機能縮小版みたいな感じかな、、、

最終的なコードや結果じゃなくて、途中の流れを記録して他人に見せたり自分で見返したりするツール
2018/03/16(金) 18:05:25.27ID:CkZdro5L
R言語の環境がそういう機能持っててアカデミック分野で便利に使われてたので同用途でパクったのが始まりじゃないかな。お前らはいっこもアカデミックではないので使わなくてよろしい。
2018/03/16(金) 19:22:43.08ID:9oklY2zP
>>178
標準開発環境がそれとはお粗末だ
2018/03/16(金) 19:35:22.11ID:CkZdro5L
はぁ…
Rでモデル検証とかやってる人が何を開発すると言うのか。
認知できないんだからお前にそういう世界の存在は分からない。
開発環境としてお粗末?そりゃそうだ開発環境じゃないんだから。
ごちゃごちゃ言わないで使わなければいいんだよ。
お前には必要なものでも便利なものでもないんだから。
2018/03/17(土) 02:50:31.77ID:apINGZdL
下記のようなコードがあります。
変数 i が変数 j より大きい場合だけprintを実行したいのですが
ifで条件に合う場合だけprintを実行させると
無駄な計算が増えて時間がかかってしまいます。
何か良い方法はありませんでしょうか?


for i in range(1000000):
____for j in range(1000000):
________print(i*ii)
2018/03/17(土) 03:02:07.32ID:sNNOzkAn
____for j in range(0, i)
2018/03/17(土) 03:02:17.30ID:+q1jwFei
for j in range(i+1, 1000000):
2018/03/17(土) 03:02:49.03ID:+q1jwFei
ごめん。逆だった
2018/03/17(土) 03:12:25.90ID:apINGZdL
お二方、ありがとうございました。
こんな簡単にできるんですね!
2018/03/17(土) 03:16:55.41ID:sNNOzkAn
こういう技を使うと論理や符号の勘違いでバグ起こしやすいから、素直にif文使ったほうがいい
Pythonでどうしても高速化したいんなら、CupyでGPU演算するとか、Cythonでバイナリ化するとか考えるべき
2018/03/17(土) 03:24:04.32ID:apINGZdL
そういうもの何ですか。
バグに気をつけます。。。
CupyとCython勉強してみます!
2018/03/17(土) 04:46:34.91ID:WhczEXZ3
>>187
>CupyとCython勉強してみます!
>>181のようなハイレベルのことをする人はpythionの勉強よりCupyとCythonの勉強したほうがずっと良いよ
2018/03/17(土) 04:49:20.94ID:apINGZdL
ありがとうございます。
Pythonの高速化に興味があるので勉強してみます。
2018/03/17(土) 07:47:02.84ID:6PN0ctuZ
CupyとかCythonの前に基本的なアルゴリズムの勉強したほうがいいだろ..
2018/03/17(土) 08:14:51.98ID:yHhMlxWi
計測もしてないのに高速化とか害悪以外の何者でもない。
あとそれ絶対早くなってないから。
192デフォルトの名無しさん
垢版 |
2018/03/17(土) 09:05:54.76ID:GI3013Uv
>>191
たしかに
これに取り組もうと思った動機が謎

三流の講師が宿題にでも出したのかな
2018/03/17(土) 09:56:53.44ID:Y0/A+N6A
>>186
> 論理や符号の勘違いでバグ起こしやすい
if でも一緒だろ
2018/03/17(土) 11:00:51.63ID:+q1jwFei
お手軽に高速化ならpypyおすすめ。
コードを一切変更せず、だいだい7倍くらい速くなる。
ただし、外部ライブラリで対応してないのもあるので、要注意。
あと、高速化では何より、実行時間を測定して、ボトルネックを特定することが重要。
IDEにSpyder使うと、プロファイラを簡単に使えていいよ。関数ごとの実行時間や呼び出し回数を簡単に表示できる。
本気で高速化するなら、C++で
2018/03/17(土) 11:27:58.45ID:HNJD2AYM
名前がな…
pypy
2018/03/17(土) 12:54:49.84ID:FfenXMB8
>>196
ワイ「Aさんって、pypy使ったことある?」

A(女性)「・・・」
2018/03/17(土) 13:14:34.74ID:gMO2T4Qb
早く春休み終わってほしいな
2018/03/17(土) 13:17:58.27ID:+q1jwFei
pypy = (py)^2
= py自乗
= py square
と呼ぶことにしよう
2018/03/17(土) 18:50:53.76ID:1qytDG5e
調べて無いけどpythonのforにはexit forって無いの?
2018/03/17(土) 19:02:47.92ID:4bFwFij6
>>199
breakじゃだめ?
2018/03/17(土) 19:11:52.25ID:tXhsWaKl
>>199
Pythonは他の言語とは違い超低脳でも使えるようにした言語
超低脳はそんな難しいのはつかえないから入れる意味なし
202デフォルトの名無しさん
垢版 |
2018/03/18(日) 03:58:32.91ID:HsPk0IuW
>>200
exception投げろ
203デフォルトの名無しさん
垢版 |
2018/03/18(日) 16:15:57.38ID:0NXI2kIO
すいません、教えてください
ファイル名と場所を取得したら
C:\\Users\\honya\\hoge\\hohe.jpgというような感じで
\\が二個になってしまい次に使うときは文字列で外部にもっていくので
¥一個にしたいです。
どうしたらいいですか??
記号なので検索しても検索自体がうまくいかなくて困ってます
2018/03/18(日) 16:22:48.55ID:DddemBtp
>>203
エスケープシーケンス path
でググってください
2018/03/18(日) 16:53:29.03ID:D5h2N+SG
やっぱりくだスレ必要だね
206203
垢版 |
2018/03/18(日) 17:07:55.67ID:0NXI2kIO
>>204
ありがとうございます
検索してみrて
\\になっているパスを↓のようにして
pasu=pasu.replace(r'\\', r'\')
みたんですが駄目でした・・・
もうちょっとヒントをお願いします・・・
207デフォルトの名無しさん
垢版 |
2018/03/18(日) 17:27:03.45ID:gweQjn0m
>>206
pasu=pasu.replace('\\', '/')
208デフォルトの名無しさん
垢版 |
2018/03/18(日) 17:32:05.74ID:0NXI2kIO
>>206
ありがとうございます
説明不足ですいません
外部で使うので/だとだめで
¥じゃないと受け付けてくれないんです
209203
垢版 |
2018/03/18(日) 17:32:59.30ID:0NXI2kIO
>>207
ありがとうございます
説明不足ですいません
外部で使うので/だとだめで
¥じゃないと受け付けてくれないんです
2018/03/18(日) 17:38:57.70ID:SSkDCIit
バックスラッシュが特別な意味を持たない外部の方でやればいいだろ
211203
垢版 |
2018/03/18(日) 18:02:13.39ID:0NXI2kIO
>>210
それができてたらほんと良いですよね、、、ほんとすいません
2018/03/18(日) 18:07:48.80ID:3t93zsRH
>>206
path = path.replace('\\\\', '\\')
じゃいかんのか?
2018/03/18(日) 18:12:25.93ID:eTRcfGVx
そもそも外部って何やねん、コードで示せ、コードで! エラーも載せろや
2018/03/18(日) 19:03:37.68ID:5YCBO0rZ
>>205
だれかがたててくれたっぺ
くだすれPython(超初心者用) その37
http://mevius.5ch.net/test/read.cgi/tech/1521271945/
2018/03/18(日) 21:25:06.31ID:SSkDCIit
>>211
外部でできないなら、どうやって1個とか2個とか確認してるんだ?
2018/03/18(日) 21:54:56.65ID:EVM8spxN
まあそもそも¥は一つで、表示上2つになってるだけなんだけどさ
それは既に指摘されてるし理解しない方が悪いよね
217デフォルトの名無しさん
垢版 |
2018/03/18(日) 22:33:21.42ID:9qr4sOuJ
tkinter ボタンを押しても処理が実行されない?


Sample01(user1)を実行したら、端末に出力結果が表示される想定なのですが、できてません。何処が悪いのでしょうか?

https://teratail.com/questions/118018
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況