X



くだすれPython(超初心者用) その38

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/05/17(木) 11:09:14.54ID:WeqM6vIc
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その37
http://mevius.5ch.net/test/read.cgi/tech/1521271945/
0489遊園地 ◆ExGQrDul2E
垢版 |
2018/07/04(水) 23:07:07.97ID:fl3R7P9J
GPU不明

import os
import platform
import multiprocessing
l=platform.system()
r=multiprocessing.cpu_count()
lr=len(os.sched_getaffinity(0))
print(l,r,lr)
0490デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:39:57.98ID:ng+0N/IT
>>488
>>489
ありがとうございます。
まだすぐには理解できませんが、
理解できるまで記述いただいた内容や公式リンクをよく勉強します。
0491デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:09:26.59ID:T0L/NWDK
>>482
本格的とはいえないけど、
PyScripterはとにかく軽くていい。
エディター部分が少し弱い気もするけど、
一応IDEらしいことができるし、重宝してる。
0496デフォルトの名無しさん
垢版 |
2018/07/05(木) 11:42:30.52ID:IcGtf/nv
ageてみる
0497デフォルトの名無しさん
垢版 |
2018/07/06(金) 20:40:03.20ID:8M+Xsunh
>>> x = int(input("整数を入れてください;"))
整数を入れてください;44
>>> if x < 0:
x = 0
print("負数はゼロとする")
elif x ==0:

SyntaxError: inconsistent use of tabs and spaces in indentation

"オライリー Python チュートリアル第3版”本の通りにテストしようとすると、
途中でエラーが出てしまう。

実行環境は Windows10 x64, python は以前3.6でうまくいかないので、3.7しました。

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
0498デフォルトの名無しさん
垢版 |
2018/07/06(金) 22:37:56.41ID:sIOuXx+P
SyntaxError: inconsistent use of tabs and spaces in indentation

このエラーの通りだろ
インデントに タブ と スペース が混在している
0501デフォルトの名無しさん
垢版 |
2018/07/07(土) 09:46:01.38ID:7kPpsH+C
前から思ってたけど、文頭の空白が削除されて2ちゃんはPython向けじゃないなぁと...。
専ブラなら大丈夫なんすか?
0502デフォルトの名無しさん
垢版 |
2018/07/07(土) 10:00:59.73ID:pa4NPo43
コードが崩れるからideoneとか投稿して貼れと>>1に書いてあったと思ったが
誰か消したのか
0503デフォルトの名無しさん
垢版 |
2018/07/07(土) 10:32:04.91ID:LxSGsocZ
>>502
コードが崩れるからとは書いてないけど
くだすれPython(超初心者用) その32
http://echo.2ch.net/test/read.cgi/tech/1486173667
までは
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
ttps://try.jupyter.org/
◆まとめwiki
ttp://python.rdy.jp/
って書いてあった
で、
くだすれPython(超初心者用) その33
http://echo.2ch.net/test/read.cgi/tech/1490424742/
で無くなってる(>> 2以降に移したのかも知らんが…)
とりあえず次スレ立てる人は復活してほしいな
0504デフォルトの名無しさん
垢版 |
2018/07/07(土) 19:52:21.38ID:MYwzU1cJ
まぁ、スペース4つを全角スペースに置換してここに貼ればいいだけなんだけどな。
0506デフォルトの名無しさん
垢版 |
2018/07/07(土) 21:12:18.72ID:cKmJS2is
後者は2文字分余計にパース時間がかかるし、文字列の最後まで比較が完了したかチェックが必要なので、理論的には前者が早いが、
ボトルネックを調べるまではそんなこと気にしても意味がない。
0509デフォルトの名無しさん
垢版 |
2018/07/08(日) 05:02:05.68ID:HGazO2t1
>>498,499ff,500

ありがとうございます。

pythionのIDELなのですが
設定でタブを2にしても4にしても、なぜか下の段の
インデントは8位になり、うまくいきません。
0513デフォルトの名無しさん
垢版 |
2018/07/08(日) 14:58:29.46ID:hvpTMDL4
>>505
ipythonの%timeitでそういうのを調べられる
ものすごく僅かな差だが、数値のほうが早い
あと変数名が短いほうが早い

%timeit if a==1: pass
52.9 ns ± 0.122 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if a=="1": pass
56.7 ns ± 0.513 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if hoge==1: pass
53.9 ns ± 0.365 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if hoge=="1": pass
57.5 ns ± 0.084 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
0514デフォルトの名無しさん
垢版 |
2018/07/08(日) 19:12:48.21ID:FXqCe1Jq
>>513
調べてくれてありがとう。
変数名の長さについては予想通りの結果ではあるんだけど、
数値と数字の差がそれ以上に大きかった(前者が平均でおよそ6.5%速い)ということに驚いた。
0515デフォルトの名無しさん
垢版 |
2018/07/08(日) 19:47:51.32ID:7IyBQLqQ
VBAをそれなりに使えるようになったからPython始めてみたいんだが、やっぱり全然難しい?
VBAの難易度を10としたらPythonはどのくらい?

あと、この関数はVBAで言ったらコレ!みたいな早見表みたいのないよね?
0517デフォルトの名無しさん
垢版 |
2018/07/08(日) 22:16:58.63ID:9FsG7rKp
>>515
既にVBAを使えるなら簡単だよ
くどい型宣言、配列のみの貧弱なデータ構造といった
VBAの使いづらい点が、Pythonでは全て解決されている

ただしWebやネットワークの世界には手を出すなよ
Python以外にも必要な知識が爆発的に増えていくら時間があっても足りない
Pythonはローカルのテキストデータをいじくる用途で輝く言語だ
0518デフォルトの名無しさん
垢版 |
2018/07/08(日) 22:19:33.46ID:R+BMdkT4
>>515
ナカーマ!
俺もVBAは随分とマスターしつつあるのでPythonに手を出し中…。
入門書からコツコツやっててイメージが湧きつつある!!
0519デフォルトの名無しさん
垢版 |
2018/07/08(日) 23:51:01.54ID:7IyBQLqQ
>>516-517
まじで?すげー難しいイメージあったんだが本格的に学んでみようかな


>>518
(゚∀゚)人(゚∀゚)ナカーマ
VBAはやりたいことがあってそれを調べてる内にできるようになったクチだから、Pythonは何ができるか分からんからとっつきにくいわ
0520デフォルトの名無しさん
垢版 |
2018/07/09(月) 02:17:48.93ID:LaDaXFYH
記法について教えてください。

https://qiita.com/pumbaacave/items/942f86269b2c56313c15
上記のサイトのマルチプロセス実行関数を定義している箇所に下記のように記述があるのですが、
なぜカンマ以降空欄なのでしょうか?
process_pool = Pool(processes=n, )
0521デフォルトの名無しさん
垢版 |
2018/07/09(月) 04:04:31.40ID:lNBlYhG9
そのカンマは有っても無くても変わらんから消し忘れだろう

それで納得行かないならコメント欄で本人に聞いてこい
ここは著者の気持ち推測スレじゃないからな
0522デフォルトの名無しさん
垢版 |
2018/07/09(月) 06:40:13.77ID:TvZsnLJ0
毎週得意先から10くらいのPDFが送られてくるのですが。

PDFを全て選択→コピー→貼り付け→ボタン押してVBA発動(社内で見たい数字に変換)→次のPDFを開く…手作業で繰り返しています。

これをPDF自動で開かせてコピーペーストしてVBAを動かす、、までPythonでやりたいのですが、可能でしょうか?
0524デフォルトの名無しさん
垢版 |
2018/07/09(月) 09:02:54.85ID:rKnQV5/G
課題解決において、本当に優れたソリューションは有効性や実現性だけでなく応用性・永続性・再現性を備えている
・PDFのフォーマットが変わったらどうするのか?
・自分が今の仕事から離れたらどうするのか?
・他の業務にも広く展開できないか?
Pythonで他の誰にも分からないもの作るより、522が率先してRPA入れて展開したほうが遥かに522は評価される
そういう思考と行動ができればCIOにだってなれるぞ
0527遊園地 ◆ExGQrDul2E
垢版 |
2018/07/09(月) 10:49:26.70ID:H6u5Fx+k
うんこ漏らしながら、、答えると

  PDFMiner.six

使え。
0529522
垢版 |
2018/07/09(月) 12:44:00.66ID:pU5gW32k
皆さん、回答ありがとうございます。
もう少し自分の方で調べてから、再度質問させて頂きます。
0530デフォルトの名無しさん
垢版 |
2018/07/09(月) 16:14:02.89ID:OMEWQnbN
これヤバシング
https://goo.gl/uAcy7u
0531デフォルトの名無しさん
垢版 |
2018/07/09(月) 19:05:37.08ID:H6u5Fx+k
>>530
マジでやばいな
ウィルスだらけで、PC壊れた。

弁償してくれ。
0533デフォルトの名無しさん
垢版 |
2018/07/10(火) 23:25:58.83ID:czFq4uQ7
特定しました
0534デフォルトの名無しさん
垢版 |
2018/07/13(金) 09:49:36.96ID:beR71Flm
今更だけど>>447に自己レス
os.renameだと移動先がない場合、FileNotFoundErrorになる
os.renamesだと移動先がない場合、自動生成してくれる
Pythonの標準ライブラリはsのある・なしで動作が変わるものがあるから気をつけないといかんね
0536デフォルトの名無しさん
垢版 |
2018/07/14(土) 11:36:12.84ID:v4Gtt50J
mkdir
mkdirs
もありまっせ
0537デフォルトの名無しさん
垢版 |
2018/07/14(土) 12:46:59.88ID:zjgvls6Z
Pythonのファイル操作関連機能は
複数ライブラリに散らばってたり重複があったりと
カオスなことになってて非常に使いづらい
一度自分用の早見表を作ったんだけど紛失してしまった
3で互換性なくなる時にpathlibあたりに一元化すれば良かったのに
0538デフォルトの名無しさん
垢版 |
2018/07/14(土) 15:06:03.89ID:xrW9R8Gf
複雑だが頻繁に使うなら自分専用にラップしただけのライブラリでも作ればいい
0539デフォルトの名無しさん
垢版 |
2018/07/14(土) 17:57:55.26ID:+qTTsOaT
自分専用にラップといえば、
re.searchはマッチしたものを直接返せないと思って関数作ってたけど
↓みたいににすれば直接返せると最近知った

txt="123456"
mat=re.search("12(.*?)56",txt).group(1)

マッチオブジェクトを返すってなんだよ使いにくいなぁと思ってたけど
使い方を知ったらなかなか便利だと感心した
0540デフォルトの名無しさん
垢版 |
2018/07/14(土) 18:08:46.03ID:bBAel3cq
そういえばGuidoがBDFL辞めるらしいな
PEP572関係でdisられたのが原因らしいが、ML追っかけてないからよく分からん
まあ、辞めたところで何がどうなることもないと思うがね
0544デフォルトの名無しさん
垢版 |
2018/07/14(土) 19:39:05.18ID:pZ9+lrqM
>>534
sortに対するsortedのつもりで、reverseに対するreversedを使おうとするとハマる。
こちらはイテレータを返すので、もう一度リスト化しないと同じにならない。
0545デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:22:07.13ID:zjgvls6Z
>>543
たぶん以下のように正規表現パターンをコンパイルして使えってことだと思う
同じパターンで繰り返し何度も検索する時に速度的に有利・・・らしいが
これを使わないのは正しくない、というのは言い過ぎ

txt="123456"
r = re.compile("12(.*?)56")
mat = r.search(txt).group(1)
0550デフォルトの名無しさん
垢版 |
2018/07/14(土) 23:27:08.84ID:/GhuOfpQ
>>548
ミスマッチの結果、二次的に発生した例外を捕まえてエラーハンドリングするのは意図が伝わりにくいしピタゴラスイッチかよって気がする
0551デフォルトの名無しさん
垢版 |
2018/07/14(土) 23:36:28.34ID:pZ9+lrqM
そのままsearchして(この時点で例外とはならない)、
try-catchでgroup(1)すればいいのでは?
0552デフォルトの名無しさん
垢版 |
2018/07/15(日) 01:12:03.97ID:WCfEKFtx
製品のプルリクに入ってたら直せって言うけど
個人のコードだったらどうでもいいわ
0554デフォルトの名無しさん
垢版 |
2018/07/15(日) 08:37:24.40ID:MaWYhEE+
webスクレイピングは、サイトの仕様変更である日突然マッチしなくなる可能性があるけど
それを想定して例外処理を作っとくのは面倒だし、作り忘れが発生する可能性も高いから
あえて>539のやり方を使って、エラーで止まるようにしたほうがわかりやすいかもしれん
0555デフォルトの名無しさん
垢版 |
2018/07/15(日) 08:50:29.23ID:BpM21w6A
仕様変更なのか
一時的な障害なのか
たまたまエラーになるデータだったのか
他の理由なのか

そういうの分析しないといけないから
リクエスト、レスポンスのダンプと処理のログは残したほうがいいよ
0556デフォルトの名無しさん
垢版 |
2018/07/15(日) 09:47:46.97ID:507A2oF2
教えてって書いてあるから横から思うところを言っただけだが
>>549みたいなこと言われるんだったら二度と教えねえわ
0558デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:02:20.42ID:lCAlUWZR
もっとちゃんと謝って
0559デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:14:15.96ID:LnWCwVdC
>>553の方法でNoneじゃないことを確認すれば何の問題もないんだよな
間違った方法ではない

>>556教えたくないなら教えなければいい義務ではないのだから
0560デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:49:01.29ID:SyiaUNYr
Optional type hintつかえや
0561デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:52:56.10ID:ULhjy0aZ
>>559
間違っている箇所(戻り値チェック)を直せば、「間違った方法ではない」のは当たり前ですけどね…
0562デフォルトの名無しさん
垢版 |
2018/07/15(日) 15:59:51.01ID:mOOR+1Qr
def func():
a,b=・・・
return a,b
の戻り値aだけが欲しい時にa=func()[0]などとせずa=func()だけで可能にする方法ある?
0568デフォルトの名無しさん
垢版 |
2018/07/15(日) 16:58:39.39ID:JvvU9qo5
>>565
matlabだとそれができるから、matlabから来た人は重要な戻り値を先頭にしてたまにだけ欲しい戻り値を後ろに書きたくなる
pythonでそれ同じようにすると、a,_=func()とかa=func()[0]とか書かなきゃならないのを忘れてどこかでエラー出ることが頻繁に発生する
0569デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:01:56.80ID:0QdlwMDB
>>567
俺もそれ思ったけど、質問者の意図はreturn a,bとした上でaだけ返すって意味みたい。
なんでそんなことしたいかは分からんけど
0571デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:21:18.42ID:z9dis41F
>>539
None で Exception 出ないか?
0572デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:27:59.50ID:z9dis41F
yeald a, b
0573デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:29:17.38ID:z9dis41F
ああ違うか
yeald a
yeald b
ydald c
...
0574デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:37:09.40ID:GnA/ld69
>>568
そのために
> a=func()だけで可能
なんてされたら迷惑だよ
自分だけで使うと言うならPythonの処理系弄ればいいと思うよ
0576デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:38:56.90ID:lEsxGLKr
>>545

txt="123456"

r1 = re.compile("12(.*?)56")
mat = r.search(txt).group(1)



r2 = "12(.*?)56"
mat = re.search(r2, txt).group(1)

結果は同じになるけど、
オブジェクトにするかしないかで、細かい違いはどういうところで出てくるの?
0577576
垢版 |
2018/07/15(日) 17:43:15.60ID:lEsxGLKr
最初の方(r1)間違った

txt="123456"
r1 = re.compile("12(.*?)56")
mat = r1.search(txt).group(1)
r2 = "12(.*?)56"
mat = re.search(r2, txt).group(1)
0579デフォルトの名無しさん
垢版 |
2018/07/15(日) 18:03:01.01ID:raVPXb0K
>>578
じゃあ書き込むなよ。
沸点低すぎだわ。面倒くせ

>>576
読んで字の如くコンパイルされるので高速化が期待できる。
0588576
垢版 |
2018/07/15(日) 20:52:52.55ID:lEsxGLKr
>>579,>>583
やはりオブジェクトにコンパイルすると効率が上がるという点が全てみたいだね。
あとは、コンパイルのコストとの比較になるのかな。
■ このスレッドは過去ログ倉庫に格納されています

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