X



くだすれPython(超初心者用) その46【Ruby禁止】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2020/01/02(木) 15:56:54.08ID:ZUrZA+uS
当スレに★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/
0002デフォルトの名無しさん
垢版 |
2020/01/02(木) 15:59:02.97ID:ZUrZA+uS
>>> 0 ** 0
1

>>> 0 / 0
ZeroDivisionError: division by zero
0005デフォルトの名無しさん
垢版 |
2020/01/02(木) 16:36:42.09ID:yYKIO5sw
北海道のグラサンスーパーハゲザーはここにはこないのー?
0006デフォルトの名無しさん
垢版 |
2020/01/02(木) 16:38:32.31ID:NYIo0K4b
久しぶりに貼っとくか
日本語の扱いで戸惑ったらこちらをどうぞ
ttp://speirs.blog17.えふしー2.com/blog-えんとり-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.はてna.ne.jp/kakurasan/20100330/p1

PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
0007デフォルトの名無しさん
垢版 |
2020/01/03(金) 17:34:21.06ID:o2JYS5/T
スマートに長さが決まってる配列に交互に数値をいれていくにはどうしたら良いですか?
自分でつくるとどうも長くなってしまいます
t=5
v=[]

for i in enumerate():
if i==t:
break
elif i%2==0:
v.append(1)
elif i%2==1:
v.append(4)

けっか
[1,4,1,4,1]
0008デフォルトの名無しさん
垢版 |
2020/01/03(金) 17:46:09.32ID:9yXh1BHh
np.array([1,4]*3).flatten()[:5]
0009デフォルトの名無しさん
垢版 |
2020/01/03(金) 17:47:21.41ID:9yXh1BHh
([1,4]*3)[:5]
でいけた
00117
垢版 |
2020/01/03(金) 20:12:56.57ID:o2JYS5/T
>>9
一行だけとは超スマートです!!
ありがとうございます!!
0012デフォルトの名無しさん
垢版 |
2020/01/03(金) 20:34:33.45ID:JUB4cBO3
>>7
ある言語では
v =: 5 $ 1 4
0013デフォルトの名無しさん
垢版 |
2020/01/03(金) 20:38:57.19ID:EoKPJcjT
0014デフォルトの名無しさん
垢版 |
2020/01/03(金) 20:42:39.36ID:1QSwQP8U
ツッコミ待ちか
0015デフォルトの名無しさん
垢版 |
2020/01/03(金) 21:47:45.01ID:cSDCrnP1
>>7
from itertools import islice, cycle
def take(n, iterable):
____return list(islice(iterable, 0, n))

take(5, cycle([1,4]))
0017デフォルトの名無しさん
垢版 |
2020/01/03(金) 22:10:03.64ID:3PIY9GXm
コマンドプロンプトを起動
pipでPyInstallerをインストール
$ pip install pyinstaller

って書いてあるけど、windowsのコマンドプロンプトっていうことでしょうか?
やってみたけどエラーが出てインストールできません。
0018デフォルトの名無しさん
垢版 |
2020/01/03(金) 22:19:34.01ID:3C9uWk1w
>>17
エラーの内容をそのままでいいので貼り付けてください
0019デフォルトの名無しさん
垢版 |
2020/01/03(金) 22:27:22.75ID:3C9uWk1w
win10, Python3.7では
pip install pyinstallerでエラーはでなかったです
0020デフォルトの名無しさん
垢版 |
2020/01/03(金) 22:42:46.43ID:3PIY9GXm
すいません。

C:\WINDOWS\system32>pip install pyinstaller
'pip' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

というメッセージが出ています。
0021デフォルトの名無しさん
垢版 |
2020/01/03(金) 23:04:32.83ID:3C9uWk1w
>>20
%PATH%にpip.exeの場所を追加できればとりあえずは解決できると思います
0022デフォルトの名無しさん
垢版 |
2020/01/03(金) 23:27:59.92ID:3PIY9GXm
>>21
ファイルのある場所にパスを通すということでしょうか?
調べてみたのですが、やり方がよく分からずすいません。
0025デフォルトの名無しさん
垢版 |
2020/01/04(土) 01:33:24.48ID:H/phePoP
キーボードの左下にあるWindowsキー(窓が刻印されたキー)と右上にあるPauseキーを同時に押す
左側の「システム詳細設定」をクリック
下のほうにある「環境変数(N)...」をクリック
「〜のユーザー環境変数」にある「PATH」をダブルクリック
「環境変数名の編集」画面がでるので右上の「新規(N)」をクリック
コマンドプロンプトでwhereコマンドでpipコマンドがある場所を調べて追加(例:C:\Users\xxx\xxx\>where pip)
refreshenvコマンドを実行(例:C:\Users\xxx\xxx\>refreshenv)
>pip --version


Windows 10でPath環境変数を設定/編集する
https://www.atmarkit.co.jp/ait/articles/1805/11/news035.html
Cコンパイラのパスを環境変数に登録する
https://www.youtube.com/watch?v=MQLQHGT-imM
Python 環境変数設定
https://www.youtube.com/watch?v=Mw-eymuD6o0
0027デフォルトの名無しさん
垢版 |
2020/01/04(土) 02:20:50.51ID:H/phePoP
プログラム技術(tech)板の過去ログ検索
https://www.google.it/search?hl=jp&;q=site:2ch.net/test/read.cgi/tech/+検索語句
https://www.google.it/search?hl=jp&;q=site:5ch.net/test/read.cgi/tech/+検索語句

https://duckduckgo.com/bang
https://duckduckgo.com/bang_lite.html
https://duckduckgo.com/bang?c=Tech&;sc=Languages+(Python)
!so python
!hatebu python
!hn python
!infoq python
!qiita python
!quora python
!amjp python
!tw python
!hashtag python
!5ch python
!r python
!slideshare python
!stackshare python
!rstc python
http://rosettacode.org/wiki/Category:Programming_Languages
0029デフォルトの名無しさん
垢版 |
2020/01/04(土) 05:58:50.34ID:UVp63hNq
>>7
[4 ** (x % 2) for x in range(5)]
0033デフォルトの名無しさん
垢版 |
2020/01/04(土) 10:54:36.43ID:GvN9lrG0
windows のコマンドプロンプトで python を動かすのは
あまりお勧めできないけどな
苦労が多すぎて、得るものが少ない
0034デフォルトの名無しさん
垢版 |
2020/01/04(土) 11:41:40.61ID:hpecUN4N
そのココロは?
- windowsでpythonやるならコマンドプロンプトよりも××
- windowsでやるならpythonよりも××
- pythonやるならwindowsよりもlinux
0035デフォルトの名無しさん
垢版 |
2020/01/04(土) 13:00:02.96ID:trUJS7QS
>>30
ちょっとひねらないと嬉しい結果にならんな
>>> list(zip([1,1,1],[4,4,4]))
[(1, 4), (1, 4), (1, 4)]
0036デフォルトの名無しさん
垢版 |
2020/01/04(土) 13:10:53.70ID:trUJS7QS
>>33-34
横からだが
WSL使ってる人 → そのままWSLで
WSL使ってない人 → git for windows 入れてそれと一緒に入る git bash お薦め
0037デフォルトの名無しさん
垢版 |
2020/01/04(土) 13:20:22.82ID:xFWRGYjR
>>35
>>> from functools import reduce
>>> from operator import add
>>> reduce(add, zip([1,1,1],[4,4,4]))[:5]
(1, 4, 1, 4, 1)
0038デフォルトの名無しさん
垢版 |
2020/01/04(土) 13:31:07.19ID:trUJS7QS
>>33 >>36
tdm-gcc (x64) 入れると
MinGW Command Prompt っていうのが付いてくるのでそっち使ってる
0039デフォルトの名無しさん
垢版 |
2020/01/04(土) 13:57:37.93ID:hpecUN4N
自分の場合、ふだんnodeとかはgit bashで使ってるけどpythonだけはコマンドプロンプト使ってた。
venv使ってるのとエクスプローラからパスをdrag&dropする使い方が多いんで。
コマンドプロンプト自体がお勧めできないというのは置いておいて、特にpython使うのに
向いていないとは感じないがな。
0041デフォルトの名無しさん
垢版 |
2020/01/04(土) 20:01:48.09ID:Q3FXXgpV
10年位前のpython2.7の頃に比べれば windows10 python3.8はものすごく使い
やすくなっている
0042デフォルトの名無しさん
垢版 |
2020/01/04(土) 20:03:30.69ID:Q3FXXgpV
wsl出てからpythonはwslだったけど、個人的にちょっと開発するなら
windows10で十分
0043デフォルトの名無しさん
垢版 |
2020/01/05(日) 00:25:24.67ID:cNQ0xZ86
forの中のif 文がよく似てる感じなのですが
まとめれないでしょうか?
階層が深くて分かりにくくなってしまいました

*マークは字下げです

plane_angle = []
for i , h in enumerate(ho):
****if i >= len(ho) - 1:
********if ho[0].dot(ho[i])<-1:
************ang=0
********else:
************ang=acos(ho[0].dot(ho[i]))
************if ho[i].cross(ho[0]).z<0:
****************ang=pi+ang
************else:
****************ang=pi-ang
****else:
********if ho[i+1].dot(ho[i])<-1:
************ang = 0
********else:
************ang = acos(ho[i+1].dot(ho[i]))
************if ho[i].cross(ho[i+1]).z<0:
****************ang = pi + ang
************else:
****************ang = pi-ang
****plane_angle.append(ang)
0045デフォルトの名無しさん
垢版 |
2020/01/05(日) 01:10:24.54ID:cNQ0xZ86
>>44
hoはx,y,z座標を
normalize()させた値が複数個入ってます
こんな感じです
入ってる数と座標はその時によって違います
[Vector((0.9713584184646606, -0.23761920630931854, 0.0)), Vector((0.2879558205604553, 0.9576436281204224, 0.0)), Vector((-0.8237842321395874, 0.0, 0.5669034123420715)), Vector((-0.9037604331970215, -0.36954042315483093, -0.21600256860256195))]
0046デフォルトの名無しさん
垢版 |
2020/01/05(日) 01:19:33.03ID:MK0cWPLh
超初心者です。Pythonのscrapyについて教えていただきたいです。
一つのspiderを作って、crawlすることはできたのですが、
(scrapy crawl xxxxx -o sample_data.csv)
yyyyy.pyとzzzzz.pyというspiderを同じディレクトリに作成し、
(x,y,zは別ドメイン別サイトで同じような情報が掲載されている。
 もちろん構造が違うためxpathはサイトごとに違う。)
連続で実行する方法があったら知りたいです。

ググったのですが、scrapyでそういうことができるかどうか、
わからなかったので、質問させていただきました。
spiderの.pyのみx,y,zと複数作って管理保守を楽にしたいです。

xxxxx.pyに複数のclassを書いて、上から順に実行していくという方法に
なるのでしょうか。

わかりづらくて申し訳ないです。ご教示よろしくお願いいたします。
0047デフォルトの名無しさん
垢版 |
2020/01/05(日) 01:32:31.46ID:BPHXVrhY
Ruby なら、`〜` でコマンドを実行できる

`コマンド 1`
`コマンド 2`
`コマンド 3`

scrapy はコマンド名か?
それなら、下のようにできる

`scrapy 〜`
`scrapy 〜`
`scrapy 〜`

コマンドを呼ぶぐらいなら、Ruby以外にも、シェルスクリプト・PowerShell でも出来る
0049デフォルトの名無しさん
垢版 |
2020/01/05(日) 03:43:21.88ID:y+bEWN5I
>>43
要は2つの隣接する単位ベクトルho[i]とho[i+1]の演算を行いたいが、iが末尾の時はi+1の代わりに0番目を使いたいということか?
それならまずi+1または0を変数jに入れて、ho[i]とho[j]の処理だけを書けば良さそう。
0050デフォルトの名無しさん
垢版 |
2020/01/05(日) 04:26:51.43ID:NzdiaSgk
>>43
def foo(v1, v2):
____if v1.cross(v2).z < 0:
________return pi + acos(v2.dot(v1))
____else:
________return pi - acos(v2.dot(v1))

plane_angle = [0 if v2.dot(v1) < -1 else foo(v1, v2) for v1, v2 in zip(ho, ho[1:] + ho[:1])]
005143
垢版 |
2020/01/05(日) 12:09:19.59ID:cNQ0xZ86
>>50
びっくりするほど短くなるんですね
ありがとうございます
助かりました
0053デフォルトの名無しさん
垢版 |
2020/01/05(日) 13:21:59.71ID:t/h3kgdg
df = pd.read_csv(file)
print(df.query('class > 1'))

例外が発生しました: SyntaxError
Python keyword not valid identifier in numexpr query (<unknown>, line 1)
File "L:\c#\プロジェクト再開\UnsRehaPlanR21\UnsReha\bin\Debug\setData.py", line 27, in <module>
print(df.query('class > 1'))

これなにが間違ってるのでしょう?
0054デフォルトの名無しさん
垢版 |
2020/01/05(日) 13:22:23.53ID:qO+R3XJX
長さが違うものでもzipできるの?
0055デフォルトの名無しさん
垢版 |
2020/01/05(日) 14:57:09.36ID:NzdiaSgk
>>53
>Python keyword not valid identifier in numexpr query
Pythonのキーワードはnumexprクエリにおいて有効な識別子ではありません

“class”はPythonのキーワード
005643
垢版 |
2020/01/05(日) 15:49:37.35ID:cNQ0xZ86
>>52
はい、命名規則つけるようにします。
ほとんど後でメンテナンス不可能になって投げ捨てる事になってしまうので
ちゃんとやることにします
0058デフォルトの名無しさん
垢版 |
2020/01/05(日) 23:08:33.53ID:CBy/ZWII
seleniumのwebdriverwaitが100%タイムアウト返してくるんですけど、これ考えられる原因あります?
waitの時間伸ばすしか対策ないんでしょうか?
0059デフォルトの名無しさん
垢版 |
2020/01/05(日) 23:58:22.41ID:NzdiaSgk
>>58
ImplicitWaitしてて
検索条件が間違ってる可能性がある

デバッガでブレイクポイント設定してステップ実行で試せば
本当にタイムアウトしてるのか条件が間違ってるのか切り分けられる
0061デフォルトの名無しさん
垢版 |
2020/01/06(月) 00:28:29.42ID:zQo0hVCB
データフレームに含まれるNoneデータの個数を数えようとしています

df_bool = (df_combine == None)               @
number_of_outliers = df_bool.sum()             A

でいけるかと思ったんですが、dfにNoneデータに対して@はFalseの判定でした。
どうやって数えればいいんでしょうか?
0062デフォルトの名無しさん
垢版 |
2020/01/06(月) 01:16:53.52ID:78RinjQr
>>60
エラーが返される57行目の前に
Python3.7以降ならbreakpoint()と書けばブレイクポイントが設定されて
標準のデバッガが起動されるのでnとかsでステップ実行したり任意のコードを実行したりできる
IPythonのデバッガを使いたければimport ipdbして
ブレイクポイント設定したいところでipdb.set_trace(context=10)

人の書いたコードを丸っとコピペするのは別にいいけど
間違ってるかどうかを自分で確かめられないようなら潔く使うのは諦めたほうがいい
0065デフォルトの名無しさん
垢版 |
2020/01/06(月) 23:59:51.35ID:VrovJO3c
すいません…結局わかりませんでした…
とりあえずelement_to_be_clickableの中身でエラー起こしてるみたいですが…
構文は間違ってないですし、IDの名前も間違ってないんですよね…
0066デフォルトの名無しさん
垢版 |
2020/01/07(火) 00:20:44.83ID:ueOqy5pf
>>60
# ランタイムクリック
select_dropdown = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button")))

runtime-menu-button のid が存在するかどうか、ブラウザのF12 開発者ツールで確認すれば?
存在しなければ、wait time を、20 秒から、200秒ぐらいにすれば?
0067デフォルトの名無しさん
垢版 |
2020/01/07(火) 00:29:10.58ID:PWzkvPR1
>>66
runtime-menu-buttonが存在するところは確認済です
一応昨日180秒でやりましたが結果は変わりませんでした
006866
垢版 |
2020/01/07(火) 02:08:13.14ID:ueOqy5pf
600 〜 1,800秒で、やってみれば?

自分が待てる限界時間まで、やってみれば?
0069デフォルトの名無しさん
垢版 |
2020/01/07(火) 02:39:18.92ID:sZs6mHzs
俺も以前開発ツールで見えているのにクリック出来なくてドハマりした
一度そのエレメントが見えるところまでまでスクロールすればイケルと思う
理由は分からないw

面倒だから全スクロール
execute_script("window.scrollTo(0, document.body.scrollHeight);")
0070デフォルトの名無しさん
垢版 |
2020/01/07(火) 03:04:54.42ID:sMehhi+2
headlessじゃなくブラウザを画面表示してデバッガでステップ実行すれば
本当にタイムアウト時間内に要素が求める状態になってないのか
それとも求める状態になってるにもかかわらず取得できないのか一発で分かるやろ

後者ならステップ実行時にto_be_clickableじゃなく
単にfindで要素取得できるかどうかとか
取得できるならそれをclick()できるかどうかとか
正攻法で切り分けしていけばいい
0073デフォルトの名無しさん
垢版 |
2020/01/07(火) 11:17:44.68ID:DsG2B72o
pandasのread_excelでシート読むときに、セル内の関数を読み書きするのはどうしたらいいんでしょうか
具体的には=いまセルにtext(today()+1,"mmdd")が入ってて、read_excelすると1008が取得中できるのですが
today()+nと操作したいです
0074デフォルトの名無しさん
垢版 |
2020/01/07(火) 12:42:25.03ID:j68rdTp2
もちろんできないのであきらめる
0075デフォルトの名無しさん
垢版 |
2020/01/07(火) 12:54:01.36ID:j68rdTp2
OpenPyXLなら式操作できるかな
xlrdでもいいのかも知れないが
"Please use openpyxl where you can..."
なんてわざわざ書いてあるライブラリ使わんでもえやろ
0076デフォルトの名無しさん
垢版 |
2020/01/07(火) 14:39:25.87ID:sMehhi+2
>>73
1. xlwingsやCOM使ってExcelを開いて再計算させてからpandas使う
2. Excelの計算式は捨ててpython側で計算式を定義する
3. openpyxlで計算式をパースしてpythonで計算し直す (茨の道)
0077デフォルトの名無しさん
垢版 |
2020/01/07(火) 15:07:43.76ID:YTm5sjhC
seabornでlmplot使っているのですが、DFのラベルでlatency(msec)や[msec]として単位をグラフの軸ラベルを記載しようとするとエラーになります。
0078デフォルトの名無しさん
垢版 |
2020/01/07(火) 15:09:01.88ID:YTm5sjhC
多分[]や()が予約後だからかとおもいますが、DFのラベル名に単位を記載しようとするときはどのようにするべきなのでしょうか?
0079デフォルトの名無しさん
垢版 |
2020/01/07(火) 16:20:37.06ID:sMehhi+2
>>77
角括弧や括弧があってもクウォートして文字列として扱われてれば問題無いはずなので
エラー内容とそのエラーが再現する最小限のコードを公開したほうがいい
0081デフォルトの名無しさん
垢版 |
2020/01/07(火) 19:13:26.51ID:cN6CR2jQ
結果
0 1700
1 0
2 0
3 0
4 0
0 0
1 0
2 0
3 0

なんでインデックスが4まで行くと0になってしまうのでしょう?
アホみたいですが、教えて下さい。
0082デフォルトの名無しさん
垢版 |
2020/01/07(火) 19:22:14.99ID:cN6CR2jQ
>>81
すいません。
自己解決しました。
関数の呼び出し先の問題でした。
疲れ切ってます。 org
0083デフォルトの名無しさん
垢版 |
2020/01/07(火) 19:50:51.58ID:cN6CR2jQ
連投すいません

x latency_msec
1 1700
2 1701
3 1702
4 1703
5 1704
6 1705
7 1706
8 1707
9 1708

df = input_data()
print(df.iloc[1][1])

とすると

ValueError: Can only index by location with a [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array]

となります。
なぜでしょう・・・。

Pandasよくわからない・・・。
0084デフォルトの名無しさん
垢版 |
2020/01/07(火) 19:55:20.61ID:Bxvs3Isv
df.iloc[1,1]
0085デフォルトの名無しさん
垢版 |
2020/01/07(火) 20:03:44.84ID:cN6CR2jQ
>>83
すいません。
無視してください、また変なこと聞きました。
もう無理だ・・・寝ます・・・。
0086デフォルトの名無しさん
垢版 |
2020/01/07(火) 22:05:07.51ID:cN6CR2jQ
q75, q25 = np.percentile(col, [75 ,25])

colが整数だけのときは正しい値が入るのですが、colに少数が入ると0.0になってしまいます
np.percentileって少数には使えないのでしょうか?
0087デフォルトの名無しさん
垢版 |
2020/01/07(火) 22:19:19.73ID:sMehhi+2
>>86
a = np.array([[10.4, 7.8, 4.5], [3, 2, 1]])
np.percentile(a, [72,25])
#=> array([6.48, 2.25])

問題なさそうだけど?
0089デフォルトの名無しさん
垢版 |
2020/01/07(火) 23:17:56.29ID:cN6CR2jQ
四分位範囲で外れ値の値だったばあいフラグを立てる関数を作ったのですが、
なぜかデータが整数では正常動作するのに、少数が含まれているとフラグで1を立てても0になります。
かれこれ数時間悪戦苦闘しているのですが、原因わからず・・・。
どこかにコードを書き込んで質問できればいいのですが、そのような掲示板ありませんでしょうか?
本当に初心者ですいません。
0090デフォルトの名無しさん
垢版 |
2020/01/07(火) 23:30:09.50ID:Es2WAZts
つideone
0092デフォルトの名無しさん
垢版 |
2020/01/07(火) 23:57:52.11ID:cN6CR2jQ
https://ideone.com/Fl1R9z

40行目の

df.iloc[i][output_column] = 1

が怪しいとおもうのですが、取り込んだdfが整数だけのときは1が書き込めているのですが、
dfに小数が含まれているときは書き込めていないようです。
なぜなのでしょう・・・・・。
0093デフォルトの名無しさん
垢版 |
2020/01/08(水) 12:53:13.99ID:U2S7mQMy
>>92
↓この警告出てるよね? リンク先みて警告を消そう
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

とりあえず df.loc[i, output_column] = 1 にすれば動くけど
普通はenumerateとかせずにapply使う場面だと思う
df[output_column] = df[chk_column].apply(is_outlier)
0094デフォルトの名無しさん
垢版 |
2020/01/08(水) 17:08:03.84ID:Sre2vN3k
df['price_edited'] = df['price'].apply(lambda a: int(a[1:]) if a.startswith('$') else 0)
0095デフォルトの名無しさん
垢版 |
2020/01/08(水) 18:24:29.64ID:xdUcjCBz
>>67
クリックできるようになるまで待つのをやめて、ボタンが現れるのに十分と思われる時間待った後で普通にクリックしてみる。
そうするとなんでクリックできないのか分かるかもしれない。
0097デフォルトの名無しさん
垢版 |
2020/01/08(水) 19:59:10.33ID:NG22H+Rz
ほとんどない
リスト内包表記の方が可読性高いし、複雑な処理にはどうせpandasとか使うし
0099デフォルトの名無しさん
垢版 |
2020/01/08(水) 20:06:21.39ID:HaPwADKT
mapは、リスト中の数字と数値を数字に統一して、ソートできるように再マッピングするときに使うことはある
0100デフォルトの名無しさん
垢版 |
2020/01/08(水) 20:07:25.06ID:cBWLj0dO
>>98
じゃあどうするの?
for文?
0101デフォルトの名無しさん
垢版 |
2020/01/08(水) 20:10:23.35ID:v4o4ZY0H
>>96
mapは内包表記を使うほどでもないとき
競技プログラミングとかで入力を全部int型のリストに置き換えるときとかに使うぞ

a,b,c = map(int,input().split())って感じで
0103デフォルトの名無しさん
垢版 |
2020/01/08(水) 20:31:21.99ID:rc02anx7
競プロで使うといえば、sys.stdinとcollections.dequeも
0104デフォルトの名無しさん
垢版 |
2020/01/08(水) 21:13:48.14ID:U2S7mQMy
>>96
個人用のコードの場合はcurryやpipeと合わせてそこそこ使うけど
他人が読み書きするコードの場合は基本的に内包表記に揃えてる

他の言語と違ってpythonの場合は
そのままだと処理つなげないからmap/filter/reduceだと簡潔に書けない
0105デフォルトの名無しさん
垢版 |
2020/01/08(水) 21:16:10.78ID:cBWLj0dO
>>98
ねえねえ
0106デフォルトの名無しさん
垢版 |
2020/01/08(水) 21:23:57.62ID:rc02anx7
むしろ、内包表記の方が使わんわ
0110デフォルトの名無しさん
垢版 |
2020/01/09(木) 09:06:17.58ID:CHl595iH
>>106
競プロのことは知らないけど、内包表記の方が基本短くならない?なにか違う理由で使わないの?
0111デフォルトの名無しさん
垢版 |
2020/01/09(木) 10:22:53.25ID:CxgUH5at
バイト列に関して質問です。
文字タイプのバイト列情報の文字を、日本語に復元したいです。
例えば、
\x12\x34\x56\x78
という文字列があります。
これを
あいう
のような意味のわかる日本語にしたいです。
その場合、
print(b'\x12\x34\x56\x78'.decode('cp932'))
で復元できます。
そこで、復元したい文字列は複数あるので、
\x12\x34\x56\x78 を変数に代入してから、
for文で復元しようとしています。
しかし、変数に代入したら b をつけられません。
どうすればバイト列にしてから復元できるのでしょうか?
0113デフォルトの名無しさん
垢版 |
2020/01/09(木) 11:18:23.26ID:nzRPJUvL
データフレームのラベルにlatency[msec]と単位をいれたいのですが、

lm_model = smf.ols(formula="latency[msec]~x", data=df).fit()

とすると
latency is not define
となります。
latency_msecとするとokなのですが[]や()を使うとダメ
[]、()をラベルに使ってはいけないのでしょうか?
0114デフォルトの名無しさん
垢版 |
2020/01/09(木) 11:29:08.27ID:m2IVdqCX
>>112
レスありがとうございます。
変数にb'\x12\x34\x56\x78'を入れるということでしょうか?
bと文字列 \x12\x34\x56\x78 を合体させる方法が分からないんですよね・・・
0115デフォルトの名無しさん
垢版 |
2020/01/09(木) 12:33:47.44ID:0RBXSUPh
numpy とか pandas 使うとそっちで解決しちゃう
0116デフォルトの名無しさん
垢版 |
2020/01/09(木) 12:39:08.38ID:j8mTnocC
>>110
それ答えてもいいけど、過去何度も何度も繰り返された議論が始まるだけだぞ
0117デフォルトの名無しさん
垢版 |
2020/01/09(木) 12:45:59.86ID:81iybZRX
>>114
s = '\x12\x34\x56\x78'
b = s.encode('latin-1')
0119デフォルトの名無しさん
垢版 |
2020/01/09(木) 16:52:22.09ID:OQFCwUQr
l = [[1,2,3],[4,5]]

から

[1,2,3,4,5]

に変形したいのですが、リスト内包表記だけでできますか?
0124デフォルトの名無しさん
垢版 |
2020/01/09(木) 18:53:25.08ID:KHoLcO1x
>>119
sum(l,[])
0126119
垢版 |
2020/01/09(木) 19:42:16.05ID:DanfNow/
>>121 のやり方が3次元以上でも対応できるのでいいですね。
おっさんありがとう。
0128デフォルトの名無しさん
垢版 |
2020/01/09(木) 20:03:36.46ID:vYl+3riX
>>> np.array([[1,2,3],[4,5,6]]).flatten()
array([1, 2, 3, 4, 5, 6])
>>> np.array([[1,2,3],[4,5]]).flatten()
array([[1, 2, 3], [4, 5]], dtype=object)
めんどいな
0129デフォルトの名無しさん
垢版 |
2020/01/09(木) 20:06:14.36ID:vYl+3riX
>>> pd.DataFrame([[1,2,3],[4,5]]).flatten()
AttributeError: 'DataFrame' object has no attribute 'flatten'
>>> pd.Series([[1,2,3],[4,5]]).flatten()
AttributeError: 'Series' object has no attribute 'flatten'
>>> list(int(_[1]) for _ in pd.concat(pd.Series(_[1:]) for _ in pd.DataFrame([[1,2,3],[4,5]]).itertuples()).iteritems() if not np.isnan(_[1]))
[1, 2, 3, 4, 5]
めんどい
0130デフォルトの名無しさん
垢版 |
2020/01/09(木) 20:41:39.72ID:ZiyVM7wM
df.query("tag.str.contains('log')")

だと、'LOG'や'Log'にマッチしないですが、queryを使った何か方法あります?
0131デフォルトの名無しさん
垢版 |
2020/01/09(木) 20:49:32.76ID:vYl+3riX
df.query("tag.str.contains('log') or tag.str.contains('LOG') or tag.str.contains('Log')")
0133デフォルトの名無しさん
垢版 |
2020/01/09(木) 20:54:34.17ID:vYl+3riX
df.query("tag.str.contains('log', case=False)")
または
df.query("tag.str.contains('[lL][oO][gG]')")
0134130
垢版 |
2020/01/09(木) 20:59:41.18ID:ZiyVM7wM
case=Falseでいいです。
おっさんありがとう。
0135デフォルトの名無しさん
垢版 |
2020/01/09(木) 21:05:50.10ID:o7IUVb3B
あなたのハゲにサクセスしたい
0136デフォルトの名無しさん
垢版 |
2020/01/09(木) 22:29:38.19ID:rdMUJkc5
散布図書いて

凡例1:回帰直線あり
凡例2:回帰直線なし

としたいんですが
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, legend=False, fit_reg=False)

とfit_regを使うと凡例1、2とも回帰直線あり、なしで統一されますよね。
凡例ごとに回帰直線あり、なしを設定する方法ないでしょうか?
0137デフォルトの名無しさん
垢版 |
2020/01/09(木) 22:30:27.61ID:rdMUJkc5
もしくはlmplotで凡例1の回帰直線を書いて、
その後に凡例にの散布図を重ねるとかできるといいのですが・・・。
0138デフォルトの名無しさん
垢版 |
2020/01/10(金) 08:58:33.71ID:rEsoa4AS
pywinautoをインストールし、以下を実行するとエラーが出ます。
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pywinauto.application import Application
---中略----
TypeError: item 2 in _argtypes_ passes a union by value, which is unsupported.
>>>
何かご存じの方いらっしゃいませんか?
0140デフォルトの名無しさん
垢版 |
2020/01/10(金) 18:01:26.41ID:rEsoa4AS
>>139
pywin32 221はインストールしてあります。
import win32api
と入力しても何も言われないので、インポートできてると思われます。
0142デフォルトの名無しさん
垢版 |
2020/01/10(金) 19:11:57.27ID:rEsoa4AS
>>141
python3.7.4に下げたところ、うまく動きました!!
大変助かりました。ありがとうございました!
0143デフォルトの名無しさん
垢版 |
2020/01/11(土) 12:56:53.77ID:+sNn4E0T
Webサイトの動的なパラメータを取得し、
PythonでCSVに保存したいのですが、
requestsでのJSの動的なパラメーターの操作・取得方法が分かりません。

どのようにしたらいいでしょうか?


具体的には"https://fast.com/ja/";で通信速度を定期的に
測りたいです。
0144デフォルトの名無しさん
垢版 |
2020/01/11(土) 13:14:12.97ID:I3GzSO2X
api直で叩けるならrequestsでいいけど、
普通はseleniumの出番じゃないかな。
結果表示のelementが表示されるまで待って、そのあとselectorを使って読み取る。
0145デフォルトの名無しさん
垢版 |
2020/01/11(土) 18:57:41.73ID:8SjMRVd0
wxpythonのcomboboxを連携させる場合ってどうやればいいんですかね?
gyou = ('あ行','か行','さ行')
a = ('あたい,'いか','うなぎ','えのぐ,'おもいで')
k = ('かみなり','きなこ','くまで','けむし','こたつ')
s = ('さしみ','しらす','するめ','めまい','もも')
のリストを作り、
combobox_1 = wx.Combobox(panel1, -1, choices = '行',style=wx.CB_DROPDOWN, pos=(0, 390),size=(150, 20))
で選択された値をcombobox_2に反映させたいのですが、うまくいきません
0148デフォルトの名無しさん
垢版 |
2020/01/11(土) 21:39:28.93ID:8SjMRVd0
>>146
>>147
ありがとうございます。
理解できるようがんばります。
0149デフォルトの名無しさん
垢版 |
2020/01/11(土) 22:10:14.08ID:mXX0vnIh
全体の質問スレがなかったのでここに質問します
私はWebサービス作れたら面白いな程度に考えています。そこで質問があります。いきなりPythonで大丈夫でしょうか?基盤となる他の言語があるのでしょうか?また、Webサービスを作れるものなのでしょうか?具体例ではTwitterなど超有名なものが出されるので…
0151デフォルトの名無しさん
垢版 |
2020/01/11(土) 22:20:37.40ID:mXX0vnIh
これくだすれってコードすれですかね?
でしたら上のやつ無視してくださいすみません
0152デフォルトの名無しさん
垢版 |
2020/01/11(土) 22:31:40.00ID:tdQ2h9sk
くだすれって何なの?
意味がわからん
0153デフォルトの名無しさん
垢版 |
2020/01/11(土) 22:56:40.09ID:cnAODivo
>>150
type hintは基本的に3rd partyのtype checker用なので
何もせずに速度が向上したりはしない

型をチェックして適切な実装を選択することで実行速度が変わるようなロジックを自分で作ったり
そういうライブラリを使えばhint無しよりは速度が向上する可能性はなきにしもあらず

3.7より前のバージョンはtype hintをコードの読み込み時に評価するので
評価コストの分だけtype hintがあると読み込みが遅い(らしいが、気にしたことはない)
0154デフォルトの名無しさん
垢版 |
2020/01/11(土) 22:57:26.01ID:/PybViq/
>>149
WebサービスはWebの知識があればPythonとPythonのフレームワークで構築できます
0155デフォルトの名無しさん
垢版 |
2020/01/11(土) 23:10:13.39ID:mXX0vnIh
>>154
ありがとうございます!Webの知識もないプログラム初心者なのでHTML・CSSを学んでから、または学びつつPythonを勉強しようと思います!
0156デフォルトの名無しさん
垢版 |
2020/01/11(土) 23:16:15.67ID:cnAODivo
Webの知識にはHTML/CSSだでなく
HTTP, JavaScript(初級)/DOM, 各種ブラウザの開発ツール使い方
くらいは含まれてると思われる

サーバーサイドはパフォーマンス気にしなければPythonだけでほぼなんでもできるが
モバイルアプリやリッチなWebクライアントはPythonだけでは作れない
0157デフォルトの名無しさん
垢版 |
2020/01/11(土) 23:22:24.84ID:mXX0vnIh
>>156
私にはまだ早い領域のようですね…
教えて下さった言語含めもうちょっと調べてみます
ありがとうございます!
0159デフォルトの名無しさん
垢版 |
2020/01/12(日) 01:21:03.35ID:PW2KE/yt
>>143-144
Ruby, selenium webdriver, headless モードで、38 Mbps

sleep 45 が無いと、すぐに、0 が取得されてしまう!
つまり、このdiv が、最初から存在していて、0になっているのだろう。
<div class="speed-results-container succeeded" id="speed-value">0</div>

理想的には、結果が出たときに現れる、要素を待つのが良い。
その方が、sleep で時間指定しないで済むから

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new

options.add_argument('--headless')
options.add_argument('--disable-gpu')

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 60 # 要素の検索の timeout

driver.navigate.to "https://fast.com/ja/";

sleep 45

puts driver.find_element( :id, "speed-value" ).text

driver.quit
0160デフォルトの名無しさん
垢版 |
2020/01/12(日) 03:20:28.12ID:M8sF3s6B
>>159
capybara使えよ
implicit_wait=60とかsleep 45とかありえんてぃ
先週のWebDriverWaitを10回くらい繰り返してるクソコードよりもひどいぞ

>>143
fast.com cliでググれ
0161デフォルトの名無しさん
垢版 |
2020/01/12(日) 03:26:40.80ID:8P2rssJG
次のプロジェクトを何の言語でやるか、検討した結果PHP派とPython派に分かれた。
Rubyはみんな嫌がった。
0162デフォルトの名無しさん
垢版 |
2020/01/12(日) 03:27:02.71ID:aGAZplX2
>>143
ありがとうございます。
Python通ってないので参考になります。

>>159

>>160
cliあったんですね!
Macのcrontabだとスリープ時に実行できないので
サーバー化してるRaspberryでcrontab回そうと思います。
助かりました。
ありがとうございます。
0163デフォルトの名無しさん
垢版 |
2020/01/12(日) 10:35:42.78ID:eDYJZWaK
データフレームで
target shape
1 0
0 1
1 1

としたときtarget==shapeのデータをスライスとして取り出したいのですが、
同一データフレーム内のデータを比較してスライスするにはどうすれば良いのでしょう?
0164デフォルトの名無しさん
垢版 |
2020/01/12(日) 11:16:34.31ID:/bwylFW9
df[df[‘target’]==df[‘shape’]]
または
df.query(‘target==shape’)
0165デフォルトの名無しさん
垢版 |
2020/01/12(日) 12:31:28.08ID:eDYJZWaK
>>164
ありがとうございます。
Pandasのスライスの表記難しい・・・。
使いこなせる自身がないんですが、やってるうちになれてくるものなのか・・・。
0166デフォルトの名無しさん
垢版 |
2020/01/12(日) 12:34:18.40ID:eDYJZWaK
a=Fale, b=True
だけをスライスしたいのですが、

df_correct = df[df['a'] == False & (df['b']==True)]

とすると

a==False

の条件でスライスされ

b==True

が無視されます。
なぜなんでしょう?
0167デフォルトの名無しさん
垢版 |
2020/01/12(日) 12:35:45.17ID:eDYJZWaK
>>166
失礼しました。
自分の投稿みて気づきました。
前の条件を()でくくっていなかったですね。
orz
0170デフォルトの名無しさん
垢版 |
2020/01/12(日) 13:48:50.66ID:AzrAZmp9
python 3 で16進数文字列をutf-8文字列に変えたいんですが、簡単な方法ないですか?
0171デフォルトの名無しさん
垢版 |
2020/01/12(日) 14:24:18.86ID:M8sF3s6B
>>170

>>111と同じなのか違うのか?
違うのなら簡単な方法じゃなくめんどくさい方法でどうやってるのかをまず書いて
0172デフォルトの名無しさん
垢版 |
2020/01/12(日) 15:47:52.03ID:iU1LDXiT
いつのまにかインデントが崩れて正常に動作しなくなってた
でも中括弧がないので元の状態が分からない
元に戻せない
0173デフォルトの名無しさん
垢版 |
2020/01/12(日) 19:12:52.42ID:N3Z2zUK8
import binascii
print('あ'.encode('utf-8'))
print(binascii.a2b_hex('e38182'))
print(binascii.a2b_hex('e38182').decode('utf-8'))
0174デフォルトの名無しさん
垢版 |
2020/01/12(日) 20:02:34.80ID:7XI25yF1
>>172
ワロタwwwwww
0175159
垢版 |
2020/01/12(日) 20:18:51.94ID:PW2KE/yt
>>160
<div class="speed-results-container succeeded" id="speed-value">0</div>

この要素は、sleep 45 が無いと、すぐに、0 が取得されてしまう!
つまり、このdiv が、最初から存在していて、0になっているのだろう

このサイトを1分ぐらい見てると、数値が動くだろ

たぶん、1分ぐらい掛けて、何回も非同期処理で、この値を書き換えている。
だから、1分近く待たないと、速度が安定しない
0176デフォルトの名無しさん
垢版 |
2020/01/12(日) 20:56:59.94ID:UO120eKA
お金を計算するわけでもないのですが
小数点の計算に全部decimalつけるの面倒なんですけど
何とかならないですか?
0177デフォルトの名無しさん
垢版 |
2020/01/12(日) 21:09:49.97ID:M8sF3s6B
>>175
「0 が取得されてしまう!」じゃねーよ
もうちょっと頭つかってくれ

速度が安定するまで待ちたいなら
「wait until 速度が安定?」みたいなコードを書けばいいだけだろ

測定完了を示す状態変化があるのに
わざわざ速度が安定したかどうかで判定する必要もないんだけどさ
0178159
垢版 |
2020/01/12(日) 21:32:01.79ID:PW2KE/yt
他人のサイトをデバッグ・解析して、測定完了を示す状態を見つけるとか、それは大変!

仕様書もないのに、できない。
そういう解析を仕事としては色々やってきたけど、面倒
0180デフォルトの名無しさん
垢版 |
2020/01/12(日) 23:01:37.62ID:aXgbqZV+
こんにちは質問させてください。

20190112, A, 91
20190112, B, 82
20190111, A, 93

という感じで[日付,名前, 得点]の3カラムのデータがあり、各行の日付段階での、
その人の過去30日平均得点(人別の得点の移動平均)をできるだけ高速に計算したいのですが、
どのようにすればよいでしょうか?
なお、今はsqliteで、以下のような原始的なプログラムを書いてみましたが、遅くて困っております。

# date, nameの組み合わせを抜き出し
list = cur.execute('select date, name from table').fetchall

# listすべてにfor文で処理
for i in range(len(list)):
date = list[i][0]
name = list[i][1]

# dateから30日前の日付を計算
date30before (計算略)

# nameが一致しているそのデータから過去30日分のスコアを抜き出し
scoreList = cur.execute('select score from table where name == ? and ? < date < ?',(date30before, date)).fetchall

# 抜き出した30日分のスコアを平均
scoreListAve(計算略)

# 元のテーブルのdate, nameが一致する行に書き込み
cur.execute('update table set score30Ave = ? where date = ? and name == ?'),(scoreListAve, date, name))

con.commit() # for後、コミット
0181デフォルトの名無しさん
垢版 |
2020/01/12(日) 23:44:09.77ID:8exfRg1S
少なくともSELECT文はfor文で回す必要がないように見える
ウィンドウ関数とか使って、1回のSELECT文けで、その後のUPDATE文の条件として使いたいscoreListAve, date, nameを抽出出来るはず
0182180
垢版 |
2020/01/12(日) 23:53:05.86ID:aXgbqZV+
>181
ウインドウ関数を知らないので調べてみます。
ありがとうございます。
0183デフォルトの名無しさん
垢版 |
2020/01/13(月) 01:51:12.33ID:6QaMEdT1
where の条件に、日付・名前があって、
それらに索引インデックスが付いていないのなら、絞り込めず、全探索になるから!

例えば、100万レコードあれば、それらをすべて検索してから、チェックするから!

基本的には、検索条件に索引インデックスが付いていないものは、全探索になるから検索しない!

情報処理資格のデータベーススペシャリストの教科書で、
データベースの設計を勉強すべし!
0184180
垢版 |
2020/01/13(月) 02:43:19.89ID:wBE7Qmaa
>183
助言ありがとうございます。
書き忘れましたがname, dateのIndexはすでに作ってます。

cur.execute('create index dateIndex on table(date)')

Indexでだいぶましになったのですが、それでも現状、
forが100進むのに1秒くらいなので、20万レコードで30分くらいかかります。
0185デフォルトの名無しさん
垢版 |
2020/01/13(月) 04:48:03.15ID:nfiKoGl1
歯抜け無しならWindow関数で
歯抜け有りなら相関サブクエリで

― Window関数 ―
SELECT date, name, score, avg(score) OVER (
PARTITION BY name ORDER BY date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW
) AS moving_avg
FROM score_table
ORDER BY name;
0187180
垢版 |
2020/01/13(月) 05:49:10.94ID:wBE7Qmaa
>185
大変ありがとうございます。
歯抜け有りなので相関サブクエリの方をまず試してみます。
ここまで見本のコードを書いていただければ自分のレベルでも
なんとか取り入れられそうです。
0190デフォルトの名無しさん
垢版 |
2020/01/13(月) 10:30:58.73ID:BvowWoiX
1回のクエリで行けるところを、わざわざループでクエリ投げまくる意味はないでしょ
0191デフォルトの名無しさん
垢版 |
2020/01/13(月) 10:58:18.23ID:bfpXOE5X
クエリが苦手でPythoに慣れているなら意味はある
クエリは言語としては非常に特殊だからね
常用しない人にはとっつきづらい
0193デフォルトの名無しさん
垢版 |
2020/01/13(月) 11:38:01.76ID:nlvLw0Pz
>>189
遅いから困ってるって明記されてるのにメモリーとか何言ってるんだよw

>>191
書捨てならそれでいいけどよく使うならSQLは覚えていて損はないと思うぞ
考え方に慣れればそれほど難しくないし
0194デフォルトの名無しさん
垢版 |
2020/01/13(月) 13:13:36.22ID:V22NtS8V
距離を計算したいのですが、

df['distance']=math.sqrt((df['x_distance']**2+df['y_distance']**2).values)



only size-1 arrays can be converted to Python scalars

となります。
DFを.valueつけてndarrayに変換してsqrt()に渡せばいいのかと思ったのですが・・・
お教えいただけると助かります
0197デフォルトの名無しさん
垢版 |
2020/01/13(月) 13:24:28.21ID:uorRSC+x
>>194
math.sqrtはpythonの標準関数でスカラーにしか対応していない
np.sqrtにすればたぶん動く
0198デフォルトの名無しさん
垢版 |
2020/01/13(月) 13:37:39.33ID:+xCO6TbN
>>196
formatなんて組み込み関数はない
0199デフォルトの名無しさん
垢版 |
2020/01/13(月) 13:41:07.13ID:DXn4EK/n
Python学びたいんだけどどっから手を付けていいかわからん。

取り敢えず、クジラ本 「実践力を身につける Pythonの教科書」(4839960240)は買ってきた。
0201デフォルトの名無しさん
垢版 |
2020/01/13(月) 14:08:01.51ID:IO5oYjrW
教えて下さい。

pythonのコードを友人に書いてもらったのですが標準のIDLEではRunModuleで
実行できるのにコマンドプロンプトで実行しようとしたら以下のエラーを吐きます。
python3.6.5
windows10


Traceback (most recent call last):
File "C:\Users\user\Desktop\201911_Project_\201911_Project_\sendMailLogic.py", line 19, in <module>
WebSiteList = dac.getWebSiteList()
File "C:\Users\user\Desktop\201911_Project_\201911_Project_\DAC.py", line 96, in getWebSiteList
for row in cur.execute(strSQL):
sqlite3.OperationalError: no such table: WebSite_List

よろしくお願いします。
0202デフォルトの名無しさん
垢版 |
2020/01/13(月) 14:16:44.85ID:6kghygIo
>>201
「WebSite_List」って名前のファイルが参照場所にない。
探せ。
あと拡張子とかついちゃってて名前がかわってないかもチェック。
0203デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:42:49.08ID:V22NtS8V
2Dカードゲームでユーザの行動特性を調査する
研究用アプリを開発しようと思ってます

開発環境をPygameにするか、Unityにするかで悩み中

Unityのほうが色々ゲーム用の機能揃ってて見栄えの良いUI作れそうなんだけど、
ユーザの行動データを数値解析したり、将来的には機械学習も取り入れようかと思ってるので、
その点ではPythonのほうが親和性高そう

どちらが、おすすめとかありますか?
0204デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:43:53.12ID:V22NtS8V
ちなみにUnity、c#のほうが少しは得意
Pythonは最近sklearnとか使い始めたくらいの超初心者です
0205デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:51:01.10ID:tF3chcAw
それは

※ただし、選択できるプログラミング言語は一つだけとする

というような縛りプレイルールが暗黙的に存在すると考えていいのかしら?
でなかったら俺はゲームをUntiyで書いて機械学習をPythonでやるかな
0206デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:52:19.18ID:ghAse/mn
親和性って書いてるだろ
0207デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:54:55.78ID:tF3chcAw
だから、親和性を最優先にするならそれぞれ得意分野に使うのが最善に決まってるだろw

はぁーガイジは人間に進化するまでママと遊んでてくれないかね
0208デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:58:12.59ID:ghAse/mn
それ親和性優先してねーじゃん
0210デフォルトの名無しさん
垢版 |
2020/01/13(月) 16:10:23.44ID:ghAse/mn
ゲームエンジンと機械学習エンジンの接続
0211デフォルトの名無しさん
垢版 |
2020/01/13(月) 17:01:18.46ID:IO5oYjrW
>>202
ありがとうございます。自分で見る限りは異常ないと思うのですが・・・
IDLEでRunModuleできるのにコマンドプロンプトでエラーがでるってことありますか?
0212デフォルトの名無しさん
垢版 |
2020/01/13(月) 17:03:03.66ID:6kghygIo
>>211
コマンドプロンプトのカレントディレクトリがIDLEのカレントディレクトリと違ってるんだろ
0213デフォルトの名無しさん
垢版 |
2020/01/13(月) 17:15:24.55ID:nfiKoGl1
>>203
それ前も聞いてたけど公開して広くデータを取得する可能性考えたらJavaScript一択だと思うぞ

それにカードゲームというのがいわゆるソシャゲ系で
アクションや派手なエフェクトを多用するやつならともかく
トランプ系の動きの少ないやつならHTML/CSS使ったほうがはるかに簡単

研究室にテスター呼んでやってもらうだけなら
自分が作りやすさだけ考えればいいんだろうけど
その場合でもデータ連携で十分なんだから
得意分野の違う言語を無理やり一つにする意味あんまりない
0214デフォルトの名無しさん
垢版 |
2020/01/13(月) 17:58:01.77ID:nfiKoGl1
>>184
書き忘れたが nameとdateにそれぞれindex張るんじゃなく
(name, date)のcomposite indexにしたほうが速くなるはず

julianday()を使えば歯抜け有りでもWindow関数でいけた
これ使う場合はindexも(name, julianday(date))に

PARTITION BY name ORDER BY julianday(date) RANGE BETWEEN 29 PRECEDING AND CURRENT ROW
0215デフォルトの名無しさん
垢版 |
2020/01/13(月) 18:01:34.92ID:V22NtS8V
>>213
ごめんなさい
今やってることの次の研究なので、定期的に頭の中に湧いてくるみたいです。

Unityで行こうと思ってたんだけど、Pythonで機械学習の初歩も学び始めたら、
Pythonでやったほうがいいのかまた悩みはじめました

前は

Unityカードゲーム

データCSVで吐き出し

Pythonで解析

と考えていたけど、カードゲーム中にもデータを機械学習させて、カードゲームの設定をいじるとかしたくなってきました。
そうするとPygameでやったほうがいいのかなと思うんだけど、Pygameの評判があまり良くないようなので、グルグル思案中・・・。
0216180
垢版 |
2020/01/13(月) 19:27:28.23ID:wBE7Qmaa
180ですが、教えてもらった相関サブクエリによるselectのやり方で
20万レコード30分くらいかかってたのが2分くらいまで短縮できました。
助かりました。

select後、sqlに保存は依然としてfor文ですが、それも込みで2分です。
保存部分もまとめて、

update table t1 set (select avg(score) …

というやり方ができないかと思って試しましたが、うまくできませんでした。
たぶん、最初にコメントされた方はそこもわかった上で
「少なくともselect文は」と言われたのでしょう。

ウインドウ関数、コンポジットインデックスも教えてくださりありがとうございます。
また試してみます。
0217デフォルトの名無しさん
垢版 |
2020/01/13(月) 19:42:53.29ID:Yl8Am7cI
>>216
出来ると思うんだが、内容がすでにPythonから離れているので
データベース板のSQL質疑応答スレで聞いてみると良いかも
0218180
垢版 |
2020/01/13(月) 20:25:11.89ID:wBE7Qmaa
>217
たしかに!
意識できていなかったのですが、ちょっとスレ違いでした。すみません。

みなさんクエリがなんとかとか言って争ってる?ので
5ちゃんねるは教えてくれる人々がいつもなんか争ってるなぁとw
0219デフォルトの名無しさん
垢版 |
2020/01/13(月) 20:49:48.38ID:6kghygIo
>>218
DBへのクエリの出し方はジッサイトテモダイジだ。
おなじことをしたいときでも
書き順によって
30分かかったり
2分くらいで終わったりだ。
イイネ?
0220デフォルトの名無しさん
垢版 |
2020/01/13(月) 21:20:28.09ID:nfiKoGl1
>>215
↓実装方法を選択する一般的な思考プロセスを経てないので目移りするんじゃないのかな

1. 自分が求める機能/非機能要求を整理する
2. 評価軸を決める
3. 実装方法の選択肢を考えられる限り出す
4. 選択肢のPros/Consを把握する
5. 評価軸とPros/Consからトレードオフを見極めて実装方法を選択する

UnityとかPyGameとか特定のソリューション名で考えずに
もう少し抽象度あげて選択肢を考えたほうがいいと思う
Pythonで全部やる、C#で全部やる、Python+C#のハイブリッドと大枠の選択肢があって
ハイブリッドの場合はファイル連携、DB連携、プロセス連携、API連携といろんなレベルがある
どれがいいかは上に書いた1や2が整理されてないと選びようがない
0221デフォルトの名無しさん
垢版 |
2020/01/13(月) 21:25:54.08ID:nwry0R0l
大袈裟だな。
0222デフォルトの名無しさん
垢版 |
2020/01/13(月) 21:52:26.47ID:FBCsPnZa
北海道のグラサンスーパーハゲザーはここにはこないのー?
0223デフォルトの名無しさん
垢版 |
2020/01/13(月) 22:10:39.12ID:P1+rByUv
>>211
WebSite_Listの読み込みやってるあたりで外部ファイル参照してない?
ファイル読み込みしてたら、ファイル名をフルパスにするか、 import osして
os.path.dirname(os.path.abspath(__file__)) + '/'+filenameにしてみたら(実行ファイルと同ディレクトリの場合)?
0226デフォルトの名無しさん
垢版 |
2020/01/14(火) 10:44:24.13ID:sNEc9p7V
>>215
Pythonが機械学習部分を担当し、Unityがゲーム部分を担当し、
両者が通信を行えば言ってるようなことはできる。
(そして正直それがおすすめ)
出来ないうちに色々こんな機能も欲しいって言って考えていくと、要求ばかり大きくなって
結局何も完成しないから、まずは最小限使えるものを作ってしまうべき。
最悪のケースでも、書いたコードは無駄となるかもしれないけど、
設計手法や要素技術は身に着くのだから別のプラットフォームに移植するのに始めのときより時間がかからなくなる。
0227デフォルトの名無しさん
垢版 |
2020/01/14(火) 13:35:18.55ID:Cb2SImdL
「くだすれ」ってなんですか?
0228デフォルトの名無しさん
垢版 |
2020/01/14(火) 13:59:52.47ID:6KmUa3mX
ここが起源っぽい
https://www.log ;soku.com/r/2ch.net/tech/1023766485/
0230デフォルトの名無しさん
垢版 |
2020/01/14(火) 14:10:20.88ID:Sh3SY+TQ
sqlite3
0231デフォルトの名無しさん
垢版 |
2020/01/14(火) 14:10:23.62ID:Cb2SImdL
>>228
なんでそんな略称にしようと思ったんだろうな
0232デフォルトの名無しさん
垢版 |
2020/01/14(火) 14:11:37.48ID:Sh3SY+TQ
くそスレ
くそが出そう半分出かかってるがトイレ遠くて困ってる
くだらないスレ
0233デフォルトの名無しさん
垢版 |
2020/01/14(火) 14:14:12.10ID:/8RfG7cV
>>229
お前が何がしたいのか次第だろう
Webアプリ作ろうとしてるんだったらいくらSQLiteの扱いが簡単とはいえ選択肢に入らないし、
データ分析なんかで大きなデータセットを扱うんだったらBigQueryになるかもしれない
0235デフォルトの名無しさん
垢版 |
2020/01/14(火) 14:18:33.49ID:PBX58Pvh
memcached
0237デフォルトの名無しさん
垢版 |
2020/01/14(火) 20:03:55.62ID:V5Q3d6Dh
pandas関係です。

>>> train_df[['Embarked', 'Survived']].groupby('Embarked').mean()
Survived
Embarked
C 0.553571
Q 0.389610
S 0.336957
>>> train_df[['Embarked', 'Survived']].groupby('Embarked').count()
Survived
Embarked
C 168
Q 77
S 644

と2回メソッド実行が面倒です。
以下のようなDataFrameを得たいのですが、スマートな方法ありますか?

Mean Count
Embarked
C 0.553571 168
Q 0.389610 77
S 0.336957 644
0241デフォルトの名無しさん
垢版 |
2020/01/14(火) 21:48:30.83ID:sWWbL+aD
超初心者な質問で申し訳ないのですが
mの行列の縦の部分に行列Pを入れたいのですがどうしたらいいですか?
こんな感じにしたいのです
m=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
p=[5,6,7,8]
m[0][3]=p[0]
m[1][3]=p[1]
m[2][3]=p[2]
m[3][3]=p[3]
0242デフォルトの名無しさん
垢版 |
2020/01/14(火) 22:06:55.30ID:4urAtQVN
numpyが楽

import numpy as np
m=np.array(m)
p=np.array(p)

m[:,3]=p
0243デフォルトの名無しさん
垢版 |
2020/01/14(火) 22:19:54.34ID:Cb2SImdL
rubyでは
0244241
垢版 |
2020/01/14(火) 22:29:22.59ID:sWWbL+aD
>>242
ありがとうございます
p=[5,6,7]でmの縦より一個少なくて
ブロードキャストエラーって出てしまいます
これはどうしたらいいですか?
0245デフォルトの名無しさん
垢版 |
2020/01/14(火) 23:52:13.22ID:4urAtQVN
>>244
縦方向の範囲も決める
m[0:3,3]=p か m[1:4,3]=p
0246デフォルトの名無しさん
垢版 |
2020/01/15(水) 03:04:35.16ID:TeTRS4cT
sklearnで機械学習のモデルに使えるクラスの一覧取得したいんですけどできますか?
0247デフォルトの名無しさん
垢版 |
2020/01/16(木) 00:51:13.89ID:MOKFFgvW
https://colab.research.google.com
https://github.com/dotnet/try/blob/master/NotebooksOnBinder.md

import sys
import platform

print(sys.version)
print(platform.platform())

Binderでの実行結果
# 3.7.3 | packaged by conda-forge | (default, Jul 1 2019, 21:52:21)
# [GCC 7.3.0]
# Linux-4.14.138+-x86_64-with-debian-buster-sid

Colaboratoryでの実行結果
3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0]
Linux-4.14.137+-x86_64-with-Ubuntu-18.04-bionic

2.7.17 (default, Nov 7 2019, 10:07:09)
[GCC 7.4.0]
Linux-4.14.137+-x86_64-with-Ubuntu-18.04-bionic

Jupyter Notebooks with .NET Core
https://github.com/dotnet/try/blob/master/Notebook.md
参考:Pythonのバージョンを確認、表示(sys.versionなど)
https://note.nkmk.me/python-sys-platform-version-info/
VSCodeがネイティブ対応したjupyterをpython3.8で動かそう
https://qiita.com/moonoct/items/22ebfb62de18d4c8a576
0248デフォルトの名無しさん
垢版 |
2020/01/16(木) 18:45:28.48ID:TdDkkYB1
ちょっとスレ違いかもしれませんが何かヒントがあれば教えてください

今はやりのDeepFaceLabをちょこっと体験してみようと思って、ローエンドのグラボ買いました
CUDA9.2版をDLして使ってみたのですが、あきらかにGPUが使われておらず、
CPUの負荷が100%になり、RAMもかなり食っています

解説サイト等を見るとCUDA9.2やcudnnのインストール必須と書いてあるのですが、
DeepFaceLabの中にCUDAやcudnnのdllがあるので要らないのでは?と思っています
(一応インストールしてからも試してみましたが、変わらず…)

CPU:i5 4590 3.3GHz
GPU:GT710
RAM:12GB
0250デフォルトの名無しさん
垢版 |
2020/01/17(金) 02:23:05.59ID:gAZZjojh
スレチぉるど
0251デフォルトの名無しさん
垢版 |
2020/01/17(金) 05:22:24.20ID:C//xu3ki
Anaconda環境ってやつは
みんな普通に使ってるものなの?

open cv をインストールしようとしてるんだけど
そっちのほうがいいのか
別のやり方があるのか知りたいのですが
0252デフォルトの名無しさん
垢版 |
2020/01/17(金) 11:04:38.28ID:fMuYUnvE
Anaconda3 使ってるが conda じゃなくて pip で OpenCV 入れて何の問題も無いよ
0253デフォルトの名無しさん
垢版 |
2020/01/17(金) 11:56:05.00ID:blsKHKuZ
Anaconda3一応いれたけどVSCodeのターミナルでpipしても反映されなくなって
Anacondaコンソールからpipするようになったな
0254デフォルトの名無しさん
垢版 |
2020/01/17(金) 13:52:04.96ID:CE1DS/Xp
開発環境がオフラインなんですが、ライブラリを追加するにはどういった方法がありますか?
別環境でネットはつながり、ファイルの移動は可能です。
0256デフォルトの名無しさん
垢版 |
2020/01/17(金) 13:55:47.64ID:VTFge/t4
>>254
つながるヤツでライブラリの配布場所へ逝って一式zipで落としてくる
その後つながってない方へ移動させて
インスコ元指定オプション付けたpipでおk
0258デフォルトの名無しさん
垢版 |
2020/01/18(土) 12:28:11.28ID:bny/49Iw
日本語表記のあるcsvファイルをdfとして読み込もうとしているのですが、

df_descr = pd.read_csv(descr_path,encoding='SHIFT-JIS')

を実行したところ

例外が発生しました: UnicodeDecodeError
'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte

のメッセージが出現して読み込みできません。
SHIFT-JISの設定だけではいけないのでしょうか?
0259デフォルトの名無しさん
垢版 |
2020/01/18(土) 12:37:18.11ID:6Wtj4R8r
日本語ファイルを読み込むにはまずは文字コードについて精通している必要がある
UTF-8のBOMとかは特に
テキストファイルの文字コードが何かも
0261デフォルトの名無しさん
垢版 |
2020/01/18(土) 12:43:37.61ID:bny/49Iw
>>260
CP932
もダメでした。

pythonで日本語取扱うのってかなりハードル高いんでしょうか?
想定ユーザーは英語識字能力高くないので、日本語でいきたいのですが・・・。
0263デフォルトの名無しさん
垢版 |
2020/01/18(土) 12:51:58.74ID:bny/49Iw
>>262
だめでした。
テストのため
Excelで



の一文字だけ入力してcsvで保存しているのですが、ファイルの保存方法の設定を変えるべきなのかな。
0264デフォルトの名無しさん
垢版 |
2020/01/18(土) 12:56:34.44ID:34RcyaUW
>>258
pandas read_csv can't decode
でググれば、エラーを無視してread_table使えとかencoding='cp932'にしろとか色々書いてある
0265デフォルトの名無しさん
垢版 |
2020/01/18(土) 13:04:47.84ID:bny/49Iw
>>264
ignoreとかいろいろ設定ためしてみたのですが、全て同じエラー
考えてみるとshift-jisって指定しているのにutf-8でエラーってなんかへんですよね
0268デフォルトの名無しさん
垢版 |
2020/01/18(土) 13:21:56.07ID:KKXb2HyK
>>267
3.7系でも起きるんかい・・・ > 日本語問題

import codecs
with codecs.open(descr_path, "r", "Shift-JIS", "ignore") as file:
____df_descr = pd.read_csv(file)
____print(df_descr)

↑で どうよ
0269デフォルトの名無しさん
垢版 |
2020/01/18(土) 13:40:28.54ID:bny/49Iw
>>268
ありがとうございます。
ためしてみたのですが、

例外が発生しました: UnicodeDecodeError
'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte

でした・・・。
0270デフォルトの名無しさん
垢版 |
2020/01/18(土) 13:51:16.06ID:KKXb2HyK
>>269
263でひとりごとしてる通り、
> ファイルの保存方法の設定を変えるべきなのかな。
↑を試してみてけれけれ
0271デフォルトの名無しさん
垢版 |
2020/01/18(土) 13:52:45.11ID:KKXb2HyK
具体的には
(BOMなし)UTF-8で中身「い」とかにしてかぶんない名前で保存、
268のコードのShift-JISんとこをUTF-8に書き換えて
ファイル名も適宜設定した場合
うまくいくかどうか。
0272デフォルトの名無しさん
垢版 |
2020/01/18(土) 14:01:46.35ID:bny/49Iw
>>270
c#でcsv書き出してるけど、そこでなにか設定するべきなんですかね
excelでcsvファイル作って268のコード使ってみたら、もじバケしてるけど動作はしました
0273デフォルトの名無しさん
垢版 |
2020/01/18(土) 14:06:40.17ID:KKXb2HyK
>>272
263でテストのためエクセルで(ry とか言ってたのに
なんで突然C#が出てくるんだよwww

改行コード問題(0x0D派/0x0A派/両方必要だYO派)が
根底にありそうだとエスパーしてみる。
0274デフォルトの名無しさん
垢版 |
2020/01/18(土) 14:07:44.83ID:KKXb2HyK
>>272追記
「文字化けしてるけど動作はした」とやらの端末、OSは何使ってる?
非Windows、おそらくはマカーと予想しているんだが。
0275デフォルトの名無しさん
垢版 |
2020/01/18(土) 14:10:45.52ID:ITm1SqvJ
先頭にBOMがついていて、encode指定を無視してUTF8と見なし、
許されないSJISコードにぶつかりエラーになっていると妄想してみる
0276デフォルトの名無しさん
垢版 |
2020/01/18(土) 14:28:25.42ID:9uT/TZmo
C#で出力ということは単純にUTF-8になってる気がしないでもない
読み込みおかしい時は対象ファイルをバイナリエディタで眺めてみるくらいはしようよ
0277デフォルトの名無しさん
垢版 |
2020/01/18(土) 15:13:58.28ID:j3FkiK0W
すみません、どなたかご教授願います。
Pythonでseleniumを使いchromeを任意のページで起動させようとしています。
しかし、起動するはするものの
driver.get("URL")でページを指定しても、Googleのトップページしか開かない状況です。
どうにか、任意のページで開きたいのですが
何か心当たりある方はいらっしゃいませんでしょうか。
0278デフォルトの名無しさん
垢版 |
2020/01/18(土) 15:21:58.16ID:ftiCyY/7
>>277
まずスクリプトの中身をここに書いてけば?
プログラムは書いた通りにしか動かないから君の書き方がミスってるだけな気がするし
0280デフォルトの名無しさん
垢版 |
2020/01/18(土) 15:46:31.45ID:j3FkiK0W
>>278
>>279

OSはwindows 10
python3.8.1です
vs code で記述しています。

ソースコード

from selenium import webdriver
driver = webdriver.Chrome('ファイル場所')

driver.get('URL')
です。
0281デフォルトの名無しさん
垢版 |
2020/01/18(土) 15:51:37.00ID:KKXb2HyK
>>280
お前が1すら読んで理解できない池沼だということはよくわかった
ほごしゃの ひとと いっしょに みてね!
0285デフォルトの名無しさん
垢版 |
2020/01/18(土) 16:28:00.11ID:j3FkiK0W
>>283
>>284
教えていただき本当にありがとうございます。
chromedriverのパスを設定したら上手くいきました。
最初のほうで失礼な質問をしてしまい、すみませんでした。
0286デフォルトの名無しさん
垢版 |
2020/01/18(土) 16:55:44.21ID:bny/49Iw
>>270
c#側のコードを確認したらshift-jisになっていたので、
utf-8に変更したら読み込み可能になりました。

いろいろとありがとうございました。
0287デフォルトの名無しさん
垢版 |
2020/01/18(土) 16:59:34.12ID:bny/49Iw
でも、shift-jisのファイルをshift-jisとして読み込もうとしても
うまくいかないものなんですね
難しい・・・
0289デフォルトの名無しさん
垢版 |
2020/01/18(土) 18:17:17.03ID:bny/49Iw
>>288
これはできますね。
間にエクセルを入れるとどうもおかしなことになるみたいです。
エクセルって書き出し時のコード指定できないみたいだし。
0290デフォルトの名無しさん
垢版 |
2020/01/18(土) 18:43:47.49ID:KKXb2HyK
>>287 >>289
書き出し時の文字コード指定 > 分かりづらいところにあるが、なんとかできたと思うけど・・・

尚、エクセル経由のCSVは基本BOM付きUTF-8になるらしい。
おかしいときはnotepad(メモ帳)あたり使って、なんとかしる。
ANSIとかUnicodeみたいなのが選ばれてるかもわからんね。
0291デフォルトの名無しさん
垢版 |
2020/01/18(土) 18:46:21.41ID:bny/49Iw
df_descr.to_csv('summary_data.csv', mode='a', header=False)

header=Falseなのに、データに日本語があると毎回ヘッダーが書き込まれる
pythonはutf-8で自分で書き込んでいるのに、自分で読めてないってことですよね

pythonで日本語のデータ書き込み諦めたほうがいいのかなぁ

一日本質とは違うところで悪戦苦闘して疲れ果ててきました
0292デフォルトの名無しさん
垢版 |
2020/01/18(土) 18:59:16.48ID:bny/49Iw
>>291

間違えました

df_descr.to_csv('summary_data.csv', mode='a', header=False)

header=False
でデータに日本語が含まれているとヘッダーが一度も書き込まれない。
なんででしょう・・・。
0294デフォルトの名無しさん
垢版 |
2020/01/18(土) 19:03:05.38ID:KKXb2HyK
>>291の引数のケツに「encoding='cp932'」でも足して味噌
あと、
mode='a'は追記モードで!って意味だから、
最初に何か書かれてたら、ケツに付け足すだけだぞ念のため。
0295デフォルトの名無しさん
垢版 |
2020/01/18(土) 19:06:11.38ID:KKXb2HyK
>>292もちつけあふぉたんwww

> header=False
> でデータに日本語が含まれているとヘッダーが一度も書き込まれない
「ヘッダはなしで!」って引数で指示してるんだから
ヘッダーが出てきちゃったらおかしいだろwwwww


>>293
thx
で、BOMの有無はどうなんだ?
0297デフォルトの名無しさん
垢版 |
2020/01/18(土) 19:25:15.56ID:bny/49Iw
>>295
あああ〜
header=False
は常にヘッダー書き込まないんでしたっけ。

csvファイルにヘッダーがなければ書き込む、ヘッダーがあれば書き込まないって設定ありませんでしたっけ?
なんかもうだんだん自分が壊れてきました。
0299デフォルトの名無しさん
垢版 |
2020/01/18(土) 20:00:14.19ID:34RcyaUW
>>295
> で、BOMの有無はどうなんだ?
試してないけど有りだろ
さすがに自分で保存したcsvが読めないとかないと思うし
0300デフォルトの名無しさん
垢版 |
2020/01/18(土) 20:04:10.61ID:KKXb2HyK
ちょっとしらべてみた。
>>299のいう通り(?)
ExcelはBOMがないともげしく文字化け起こすから、むしろ必須なようだな。
0301デフォルトの名無しさん
垢版 |
2020/01/18(土) 20:07:24.13ID:KKXb2HyK
通知しますか?のポップアップうざいけど
↓の説明あたりはなかなか良いとおもた
ttps://alaki.co.jp/blog/?p=1236
0302デフォルトの名無しさん
垢版 |
2020/01/18(土) 21:42:34.08ID:bny/49Iw
>>301
いろいろありがとうございます。

頭冷やしに散歩してきて、じっくり読んだら解決しました。
これ一人だったら絶対解決できなかった。

Python数値計算とかバシバシできてるときはすごく作業効率いいんだけど、
こういうところで躓くと大量に時間を消費してしまう。
C#と勝手が違うところが多いよね。

使い続ければいいつか立派なPython使いになれるんだろうか・・・。
0303デフォルトの名無しさん
垢版 |
2020/01/18(土) 23:05:28.28ID:ciDfAHTw
Software Design 2月号は、Python 特集

Python.jp の手順通りに、Python 3.7 を入れる

VSCode で、Microsoft 製のPythonの拡張機能を入れる!
仮想環境は、venv

pip install jupyter pandas lxml plotly-express
で、使うものを入れる
0304デフォルトの名無しさん
垢版 |
2020/01/18(土) 23:13:31.82ID:bny/49Iw
plt.text(0,0,'hello')

と座標を指定するのでなく、グラフの左上、右上などを指定してテキストを表示させることってできますか?
0305デフォルトの名無しさん
垢版 |
2020/01/18(土) 23:13:48.02ID:ciDfAHTw
>>272
漏れは、Windows 10 のVSCode で、Ruby を使っているけど、
ファイルは、BOM なしUTF-8 しか使わない!

ただし、BOM が無いと、WindowsがCP932 と区別できないから、
エクスプローラーでの文字列検索ができなくなる

そのため、WSL に、Ubutu 18.04 を入れて、
Linux 側から、Windows 内のファイルを、grep している
0306305
垢版 |
2020/01/18(土) 23:20:56.02ID:ciDfAHTw
>>296
VSCode で、BOM なしUTF-8 で、保存し直せば?
0307デフォルトの名無しさん
垢版 |
2020/01/19(日) 08:40:11.51ID:pvqGEyXi
>>302
> 躓くと大量に時間を消費してしまう
これな
どの言語でもだいたいいっしょや

C系とは基本思想が違うからね
文字の扱いは特に違うね

C(無印)の頃からC使ってたおれも
いまではそこそこのPython2系使いです
3系はまだ途中です

>>304
matplotlibの扱い方のことけ?
0308デフォルトの名無しさん
垢版 |
2020/01/19(日) 09:51:40.75ID:pvqGEyXi
返信がないから勝手にmatplotlibの扱い方のことだとエスパーしておく

>>304
左上に寄せたいなら
plt.text(0, 0, 'hello' ,horizontalalignment='left', verticalalignment='top, transform=ax.transAxes)

> グラフ座標で位置を指定(transform)
> 基準位置は左上で指定(〜alaignment='left'/'top')
ttps://teratail.com/questions/108513 より
0309デフォルトの名無しさん
垢版 |
2020/01/19(日) 18:21:33.11ID:ehZNNwbS
>>302
>>307 にも書かれてるが
単に経験不足知識不足
python関係ない
0310デフォルトの名無しさん
垢版 |
2020/01/19(日) 18:41:27.11ID:08aGszMi
質問です。
IpadのPythonistaでWebページの作成にチャレンジしています。

Projectフォルダにあるurls.py内で
Pathをincludeでアプリケーションフォルダにある
myprofile.urlsを指定しているのですが
No Module named myprofileとなってしまいます。

アプリケーションフォルダはmyprofileで
その中にあるurls.pyもスペルに間違いはないのですが
他に登録する作業か何か必要なのでしょうか?
0312デフォルトの名無しさん
垢版 |
2020/01/20(月) 02:42:44.79ID:zXBhRA8b
>>311
ipadにインストールしたPythonistaでDjangoを
使ってWebサイトを作ろうとしています。

Projectフォルダのurls.pyでは
from django.urls import path, includeで

urlpattern = [path ‘’, include(‘myprofile.urls’),]
の先はアプリケーションフォルダ内の
urls.pyのルートを指定しています。

初心者でDjangoビギナーズブック(カットシステム)
という本を参考に手順を踏んでやっています。

ちなみにwebのページは2回ほど表示出来たのですが
その後はなぜか接続出来なくなりました。
ipadのブラウザの設定とか関係してるのでしょうか・・・
0313デフォルトの名無しさん
垢版 |
2020/01/20(月) 02:50:42.93ID:zXBhRA8b
こっちはプロジェクトフォルダ内のurls.pyです。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myprofile.urls')),
]

こっちがアプリケーションフォルダに分けたurls.pyです。

from django.http import HttpResponse
from django.urls import path

def top(request):
return HttpResponse('This is TopPage!!!')

def resume(request):
return HttpResponse('This is Resume!!!')

urlpatterns = [
path('', top),
path('resume/', resume,),
]
0314デフォルトの名無しさん
垢版 |
2020/01/20(月) 10:08:32.50ID:QkwcbMkc
>>308
昨日、突然の救出で読むのおそくなりすいません。
このページのコード実行してみたけど、エラー出るんですよね。

多分自分はplt.plotとax.plotがごっちゃになってて、
対話式のplt.plotはある程度使えるようになってきたんだけど、
ax.pltがまだわかってないんだろうなぁ。

いまのところpltの方でできる範囲なんですが、axの方も使えたほうがいいですよね。
0315デフォルトの名無しさん
垢版 |
2020/01/20(月) 10:15:02.18ID:QkwcbMkc
初歩的な質問ですが、
一つのdfとdfデータフレームからスライスした

df_correct
df_incorrect

というデータフレームをあちこちの関数で使い回す場合

1. mainでスライスしてdf、df_correct、df_incorrectを関数に引数として渡す
2. 各関数にはdfだけを渡して各関数の中でスライスしてdf_correct、df_incorrectを生成する

のどちらが正しいのでしょう?
mainでスライスして渡していたのですが、dfだけ渡せばあとは関数内で処理してくれるほうが、関数の独立性が高まっていいのかと悩み始めました
0316デフォルトの名無しさん
垢版 |
2020/01/20(月) 10:17:27.57ID:QkwcbMkc
1 コードの冗長性 低い   各関数の独立性 低い
2 コードの冗長性 高い   各関数の独立性 高い

となりますよね。
複雑なステップを踏んだ作業なら1だと思うのですが、
スライスのように一行で書けるコードだと2のほうがいいのかなぁ
0317デフォルトの名無しさん
垢版 |
2020/01/20(月) 13:24:40.69ID:0GX6odYx
>>314
そう単純な話ではないが今回に限って言えば
plt.plot のグラフ内なら plt.text
ax.plot のグラフ内なら ax.text
じゃね
0318デフォルトの名無しさん
垢版 |
2020/01/20(月) 15:57:08.15ID:Y1i1RW21
>>315
>どちらが正しいのでしょう?
この考え方が間違ってる
プログラミングにおける意思決定は常に唯一正しい解があるわけではない
二元思考は捨てて状況に応じて「より適切な」方法を選ぶという考えをすべき

どちらがより適切なのかは主に「各関数にどういう責務/役割を持たしたいのか?」による
correct/incorrectの判別を含む役割を持たしたいのかどうか
どういう風に処理を関数に分解してそれぞれに役割分担させたいのか
行数はあまり関係ない
0319デフォルトの名無しさん
垢版 |
2020/01/20(月) 17:40:33.60ID:Eb5OCTAV
>>312-313
おまえが1を理解できない程度の軽度池沼だということがわかった。

しょしんしゃを かくれみのに する
じしょうしょしんしゃ は しょしんしゃいた いがいの 5ちゃんは みないでね!

おうちの ひとと いっしょに いんたーねっとを していってね!
0320デフォルトの名無しさん
垢版 |
2020/01/20(月) 19:16:28.46ID:EenR0R6t
>>319
精神障害等級2級なんで分かるように教えてください・・^_^
0322デフォルトの名無しさん
垢版 |
2020/01/20(月) 20:18:36.33ID:tI8Cbd0v
seleniumでchrome動かしています

ページ内のラジオボタンをidで拾ってオンにしたいのですが、
画面表示ありだと問題なく進むのに、headlessだとなぜか失敗してしまいます
何か考えられる原因ありますか?

↓の部分でheadlessだとコケます
driver.find_element_by_id("該当ラジオボタンのid").send_keys(Keys.SPACE)

ちなみに月イチで動かしていたコードだったのですが、先月までは問題なく動いてました
chromeが79.0.3945.130にアップデートされたことは関係ありますかね…
0324デフォルトの名無しさん
垢版 |
2020/01/20(月) 21:11:01.87ID:tI8Cbd0v
バージョンがあってないように思えるのですが、
一応79系では最新のchromedriver使ってます
0325デフォルトの名無しさん
垢版 |
2020/01/20(月) 21:55:53.98ID:tI8Cbd0v
自己解決で済みません


chromeダウングレードしたら動いたので、やはりchromeのバージョンのせいでした
ちょっとこのまま様子見てみます
0326デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:28:29.32ID:Eb5OCTAV
>>324-325
chromedriverがあわせてくるまでの辛抱ってことけ…
まあ、なんだ、その、がんがれ

そういえば
Chromeはそのへんがしょっちゅう問題になるから
Firefoxに乗り換えたんだったな自分
0327デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:51:50.48ID:H7Jd/N/8
1, 2, 3, 5, 7, 12, 13, 14
みたいなランダムな数字の列があるのですが、
これらのなかから連続値のみを取り出してそれらの平均を計算し元の配列に戻したいのですがどうすればいいですか?

上記の物だと
2, 5, 7, 13
といった感じです
0328デフォルトの名無しさん
垢版 |
2020/01/20(月) 23:03:25.34ID:w7NKNQW/
n = [1,2,3,5,7,12,13,14]
temp = set()
ans = []

for i in n:
__if i-1 in temp: temp.add(i)
__else:
____if temp: ans.append(sum(temp)/len(temp))
____temp = {i}
else: ans.append(sum(temp)/len(temp))
0329天猛星ダラマンティス ◆DARAMAN/jg
垢版 |
2020/01/20(月) 23:23:49.32ID:bai7maK4
>>321
フハハハハ!
よろしい、では私の正体をお見せしましょう。

そこのスレに行けば質問に答えて頂けるのですね?
0330デフォルトの名無しさん
垢版 |
2020/01/20(月) 23:24:16.13ID:DABjARM6
>>328
ありがとうございます
最後の行で0除算エラーになるんですが、この行は何に使われるコードなんですか?
0331デフォルトの名無しさん
垢版 |
2020/01/20(月) 23:34:49.76ID:DABjARM6
for i in n:
if i - 1 in temp:
temp.add(i)
else:
if temp:
ans.append(int(sum(temp)/len(temp)))
temp = {i}
else:
temp.add(i)
print(temp)
ans.append(int(sum(temp) / len(temp)))

これで合ってますかね?
0332デフォルトの名無しさん
垢版 |
2020/01/21(火) 15:14:39.98ID:vdt1a+N/
binary classificationだと以下の2つは同じという認識であってます?
predict(test)
predict_proba(test)[:, 1]
0333デフォルトの名無しさん
垢版 |
2020/01/21(火) 17:23:30.28ID:aLz1RI/9
すみません、リストに[12,54,67,89,22,・・・・]とランダムな数字が2000個くらい並んでる状態で、
200個区切りでtxtファイルに出力したいのですが、その時の参考になるようなfor文を教えて頂けないでしょうか・・
0334デフォルトの名無しさん
垢版 |
2020/01/21(火) 17:42:36.16ID:Vd2KBMmO
>>333
from toolz import partition_all
foo = [12,54,67,89,22]
for x in partition_all(2, foo):
...: print(x)

(12, 54)
(67, 89)
(22,)
0335デフォルトの名無しさん
垢版 |
2020/01/22(水) 06:54:53.88ID:0G9ccXQk
>>333
ある言語では
write(dat,"data.txt",200)
0336デフォルトの名無しさん
垢版 |
2020/01/22(水) 07:58:49.25ID:rbmjoU9Y
rubyかと思ってググったけど第3引数はオフセットだったから違うな
0337デフォルトの名無しさん
垢版 |
2020/01/22(水) 16:14:53.51ID:nWv0CuIQ
文字列内の制御文字をそのまま表示する方法を教えて下さい。
"123¥t456"なら
'123¥t456'
と表示する方法です。Python3系でお願いします。
0339デフォルトの名無しさん
垢版 |
2020/01/22(水) 17:32:17.91ID:sK1GeIAD
cおじさんが今更pythonの入門書読んでるんだけど
リストやタプルを比較できるってどういう意味?

>>> (10, 2) > (9, 4)
True

>>> [3, 9, 5] > [4, 3, 1]
False

これって、リストやタプルの何をどう比較して結果を出してるの?
0341デフォルトの名無しさん
垢版 |
2020/01/22(水) 17:38:37.11ID:sK1GeIAD
自分で冷静に見返してみたんだけど
リストやタプルの先頭の数値だけを見て比較して結果を出してるのかしら?
0342デフォルトの名無しさん
垢版 |
2020/01/22(水) 17:40:40.38ID:sK1GeIAD
実験したらやっぱり先頭の数値を比較してるだけらしい事が解りました
お騒がせしました
0343デフォルトの名無しさん
垢版 |
2020/01/22(水) 17:55:40.16ID:1mCrOGg1
>>342
文字列の比較と同じで、先頭が同じだったら次の要素を比較するんじゃないかな。
1,2 < 1,3みたいな感じで。今試せないから推測だけど。
0345デフォルトの名無しさん
垢版 |
2020/01/23(木) 08:40:27.17ID:5USEgiu9
dict = {a:10,b:15,c:20,d:30,e:100}
みたいな辞書型があった場合に
これをそのまんま
string_dict = "[a:10,b:15,c:20,d:30,e:100]"
こんな感じの文字列に簡単に変換する方法ってないですか?
0346デフォルトの名無しさん
垢版 |
2020/01/23(木) 08:43:34.44ID:5USEgiu9
>>345
すみません、自己解決しました
jsonで
0347デフォルトの名無しさん
垢版 |
2020/01/23(木) 12:12:13.07ID:VWfJLmDE
jsonでもそうはならんのじゃ
0348デフォルトの名無しさん
垢版 |
2020/01/23(木) 12:26:14.36ID:USDwNJRh
>>345
str(dict)
これで不満だったらdict.items()をリスト内包処理して文字列を作るのがいい
‘[‘+’, ‘.join([str(k)+’: ’+str(v) for k,v in dict.items()]) +’]’
みたいな
0349デフォルトの名無しさん
垢版 |
2020/01/23(木) 14:01:15.03ID:rTyMrtC+
仕事で使用している上に特定のソフトのスクリプトなので詳しいことが書けないのですが、
以下のようにクラス変数をチェックするコードを書くと何故かcheck1の値は6になってるのに、check2の値は0のままみたいなことが起きてしまいます。


class testClass():
 def __init__(self):
  self.test = 0

 def set_test(self,a,b,c):
  self.test = a+b+c
  print("check1:"+str(self.test))

 def print_test(self):
  print("check2:"+str(self.test))

testClass = testClass()
testClass.set_test(1,2,3)
testClass.print_test()

この↑のサンプルスクリプト自体はどっちも6と正しく表示されるのですが、これに似たスクリプトでおかしなことになって困っています。
何か思い当たる節のある方がいたら教えてください。。。
0350デフォルトの名無しさん
垢版 |
2020/01/23(木) 14:04:48.80ID:VWfJLmDE
 def set_test(self,a,b,c):
  self.testt = a+b+c
  print("check1:"+str(self.testt))

みたいになっててもエラーは出ない
0351デフォルトの名無しさん
垢版 |
2020/01/23(木) 14:32:36.32ID:I5UoJI+g
変なとこでリストとか定義してない?
0352デフォルトの名無しさん
垢版 |
2020/01/23(木) 15:05:00.07ID:5USEgiu9
>>350-351
ありがとうございます
もう少し詳しく書くと、こんな感じになってて
check1では6と表示されるのに
check2では-1と表示されるので、スペルミスというわけでもなさそうです。
リストはあるにはあるんですが、self.test自体には影響のなさそうな使い方で定義しています。


class testClass():
 def __init__(self):
  self.testList = []
  self.test = 0

 def set_test(self,a,b,c):
  self.test = a+b+c
  if 5 < self.test:
   pass
  else:
   self.test = -1
  print("check1:"+str(self.test))

 def print_test(self):
  print("check2:"+str(self.test))

testClass = testClass()
testClass.set_test(1,2,3)
testClass.print_test()
0354デフォルトの名無しさん
垢版 |
2020/01/23(木) 18:54:37.85ID:rTyMrtC+
try exceptでエラーが出ないようになってて
それが原因でした
0355デフォルトの名無しさん
垢版 |
2020/01/23(木) 19:12:45.97ID:5iKgMbK4
class testClass():
(略)
  self.test = a+b+c
(略)
testClass = testClass()
同じ名前でtestClassを上書きしているので
self.testがインスタンス変数の.testだったりクラス変数の.testだったりなってそう
0356デフォルトの名無しさん
垢版 |
2020/01/23(木) 19:26:56.00ID:I5UoJI+g
0357デフォルトの名無しさん
垢版 |
2020/01/24(金) 00:57:45.95ID:TsxkySTN
MacでUDP送信できるバイト数は9216バイトまでらしいんですが
どうしても、もっと長い文字列を送りたい場合、何も対処方法はないですか?

以下の回答には、sudoで指定すればいいとありますが、ユーザーに配布するプログラムでは9216バイト以上の
UDP通信は不可能ということでしょうか?
https://stackoverflow.com/questions/22819214/udp-message-too-long
0359デフォルトの名無しさん
垢版 |
2020/01/24(金) 01:52:46.64ID:TsxkySTN
お母さんに言われました
0360デフォルトの名無しさん
垢版 |
2020/01/24(金) 06:07:59.20ID:JfpvAmZH
つかえねーママだな
井戸に棄てとけ
0361デフォルトの名無しさん
垢版 |
2020/01/24(金) 08:18:26.54ID:TsxkySTN
お母さんは大きすぎて井戸に入りきりませんでした
0362デフォルトの名無しさん
垢版 |
2020/01/24(金) 11:40:21.68ID:ytRnz1Ft
packet分割して順番通りに届かなくても良かったり一部lostしても良いものはUDPで送れ
そうじゃなければTCPで送れ
もちろん敢えてUDPで送って受信側が自分で管理しても良い
0363デフォルトの名無しさん
垢版 |
2020/01/24(金) 11:41:23.44ID:ytRnz1Ft
ちなみにUDPのパケロスは日常茶飯事なので覚悟汁
0364デフォルトの名無しさん
垢版 |
2020/01/24(金) 12:31:23.12ID:yMReJdyt
raspbianでwebviewを使いたいんだけど、pyqtwebengine がインストールできない

$ pip3 install pyqtwebengine
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyqtwebengine
Using cached https://files.pythonhosted.org/packages/47/9f/60e630711fd1dd14ef3bd95c86c733c86b8c0853749c7a03691f681f13fd/PyQtWebEngine-5.14.0.tar.gz
Installing build dependencies ... done
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.7/tokenize.py", line 447, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-install-64axxnil/pyqtwebengine/setup.py'

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-64axxnil/pyqtwebengine/

対処方法わかる方いますか?
0365デフォルトの名無しさん
垢版 |
2020/01/24(金) 13:20:47.18ID:0kzB5+Pu
ヤギさん問題で、パケが届いてないというパケを出してそれも届かない時はどうすんの
0366デフォルトの名無しさん
垢版 |
2020/01/24(金) 13:31:05.01ID:ytRnz1Ft
protocol次第
0368デフォルトの名無しさん
垢版 |
2020/01/24(金) 18:32:57.19ID:TsxkySTN
>>367
1. ネットで拾ったコードがUDPだったものを改良・増築していったからTCPを使うという頭がなかった
2. リアルタイム性の高いものなので何となくUDPかな〜と思ってUDPにしていた
3. TCPの書き方が単純に分からなかったので後回しにした

の3点です。ゲームっぽいものの通信です。
0371デフォルトの名無しさん
垢版 |
2020/01/24(金) 22:18:14.81ID:ILEFKGvt
>>369
>>370
馬鹿か?
0372デフォルトの名無しさん
垢版 |
2020/01/24(金) 22:25:07.93ID:FWS5bVSz
>>369
なぜそうしたのかと尋ねているのだから、本人がそう思ったと言うならそれが正しい理由だろう。
その理解や判断が正しくないならそれを指摘してあげればいいだろう。
0373デフォルトの名無しさん
垢版 |
2020/01/24(金) 22:49:35.14ID:6QvNT4gk
print(1)
print(2)
print(3)
と書くのと、

def printTestFunction(one,two,three):
print(one)
print(two)
print(three)
printTestFunction(1,2,3)
と書くのだと、

当然といえば当然なのかもしれませんが、関数を作ってる下の方が処理が遅くなります。
関数を使いながら、処理速度を関数なしの場合と同程度にする方法はありませんか?
0375デフォルトの名無しさん
垢版 |
2020/01/25(土) 00:46:31.72ID:r4R7xOc1
evalってすごいね
デリゲートみたいにごちゃごちゃ書かなくても動的に関数を実行できるのね
0378デフォルトの名無しさん
垢版 |
2020/01/25(土) 11:38:30.42ID:oEqdrxlM
eval禁止
0381デフォルトの名無しさん
垢版 |
2020/01/25(土) 18:45:29.64ID:DbK51sM/
testDict = {"aaa",4}
print(testDict["aaa"])
とすると、TypeError: 'set' object is not subscriptable
とエラーになります
何故ですか?
0382デフォルトの名無しさん
垢版 |
2020/01/25(土) 18:47:54.04ID:DbK51sM/
testDict = {"aaa":4}
print(testDict["aaa"])
これで治りました
0384デフォルトの名無しさん
垢版 |
2020/01/25(土) 20:38:46.42ID:zXhFVDQK
カンマで区切ったらsetになるから「setをの中身をdictのように参照はできんぞ」となるわな
0385デフォルトの名無しさん
垢版 |
2020/01/25(土) 22:26:57.93ID:PcW4kwXa
setのリテラルあったの知らんかった
0386デフォルトの名無しさん
垢版 |
2020/01/26(日) 00:05:48.41ID:oOcVQS8z
もう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}

というように、辞書の中の辞書に要素を追加するにはどうしたらよいですか?
0388デフォルトの名無しさん
垢版 |
2020/01/26(日) 00:17:05.87ID:oOcVQS8z
>>387
ありがとうございます!
0389デフォルトの名無しさん
垢版 |
2020/01/26(日) 11:16:01.43ID:Y8WnpXRT
完成したプログラムをExeファイル化して配布しようと思うのですが、
pyinstallerで

pyinstaller set_data_ver25.py --onefile

としたところ

maximum recursion depth exceeded while calling a Python object

となります。
0393デフォルトの名無しさん
垢版 |
2020/01/26(日) 11:58:14.00ID:2upMPRsR
floatのunixtimeをdatetime.timeの時分秒の文字列(日にちなし)に変換するメソッドはありますでしょうか?
今はdivmod()で順次割ってformat()で文字列変換し':'で結合しております。
0395デフォルトの名無しさん
垢版 |
2020/01/26(日) 12:19:30.18ID:R5dI7Hbk
ああ、クラスの方か
クラスも文字列ではないから辻褄が合わないけど
print(datetime.fromtimestamp(unixtime).time())
でいい話のような気もするな
まあ、知らね
0397デフォルトの名無しさん
垢版 |
2020/01/26(日) 13:16:45.26ID:Y8WnpXRT
おそらく

https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt

でpyinstallerの設定変えろってことなんだとおもうんですが、anaconda使用してターミナルからpipでインストールしたpyinstallerがどこのフォルダにあるのかわからない・・・
アナコンダでインストールしたPyhotnのフォルダってそもそもどこにあるんでしたっけ?
0402デフォルトの名無しさん
垢版 |
2020/01/26(日) 17:35:08.11ID:Y8WnpXRT
>>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すると

読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力

となるはずが、読み込みファイルを聞いてこず、なにか謎処理をしてグラフは出さずに計算結果だけ出力します。
なんだこりゃ。
0403デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:02:56.11ID:R5dI7Hbk
Anaconda信者はちゃんとサポートしてやれ
俺はあんなゴミ使わないから知らねー
0404デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:05:10.13ID:htXcC3/b
配列で
0番目の値を1番目の値に足す
1番目の値を2番目の値に足す
というのを繰り返して
最後は
n番目の値を0番目に足す
こういうループを作るのってどうすればいいですか?
a=[]
for i ,h in enumerate(haireru):
___a.append(hairetu[i]+hairetu[1+1])

にすると最後ゼロ番目と計算できないです
0405デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:34:25.67ID:htXcC3/b
すみません

aは配列じゃなくてループ内ですぐに使いたいので
iはゼロはじまりでお願いします

for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[i+1])
__b=c*a
0406デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:39:12.37ID:ux8Vy6ZU
>>404
foo = [1,2,3,4,5]
[ x + y for x, y in zip(foo, foo[1:] + [0])]
#=> [3, 5, 7, 9, 5]

このパターンこのスレだけでもう3回目くらいだと思うんだけどなんで頻出なのか謎
0407デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:39:24.22ID:0XMsrEiZ
>>402
だから文字コード(encodingの中身)をちゃんと指定汁とさっきから言ってるだろうがよ

Anacondaの詳しいことはおれもよーしらんわ >>403
0409デフォルトの名無しさん
垢版 |
2020/01/26(日) 18:43:49.29ID:+Q3fYZeR
>>403
Anaconda信者とかより、コミュとれない奴の相手はエスパー・高脳でないと相手できないからな。
>読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力
以下略
は、エスパー・高脳でないとポカーンになる感じだからな
0411デフォルトの名無しさん
垢版 |
2020/01/26(日) 21:10:21.36ID:htXcC3/b
>>406
>>410
ありがとうございます
配列って[:]どうしだと合体できるんですね
助かりました
0412デフォルトの名無しさん
垢版 |
2020/01/26(日) 21:40:26.45ID:Y8WnpXRT
401ですけど、

すいません。
コード上げてきちんと質問するべきですよね。
期限迫ってたのであせってたのですが、寝落ちして少し頭冷めました。
あきらめて現在のところまででまとめることにしました。

今の仕事終えてから、ご指摘頂いたこともう一度確認してみます。
0413デフォルトの名無しさん
垢版 |
2020/01/26(日) 22:23:07.80ID:mYb8Rqtn
>>404,405
n=len(hairetu)
for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[(i+1)%n])
__b=c*a
0414デフォルトの名無しさん
垢版 |
2020/01/29(水) 16:41:03.56ID:rr34JdCX
どこまでdefでまとめるのが良いのかアドバイスお願いします
一定の距離ごとに物体の置いてその場所や向きや大きさを決めています
距離ごとに計算すべきなのか
最初から物体の位置、向き、大きさをすべて計算して
置けばよいのでしょうか?

↓距離ごとの計算
for km in 距離:
__物体の位置()に物体を置く処理
__向きの計算()に物体の向きを変える処理
__大きさ()に物体の大きさを変える処理


def 物体の位置:
___計算式

def 物体の向き:
__計算式

def 大きさ():
__計算式
0415デフォルトの名無しさん
垢版 |
2020/01/29(水) 16:43:09.94ID:rr34JdCX
続きです

↓まとめて計算した場合
for x in 物体の位置():
__物体を指定の位置に置く処理

for y in 物体の向き():
__物体を指定の向きに置く処理

for z in 物体の大きさ():
__物体を指定の大きさにする処理

def 物体の位置():
位置 = []
__for km in 距離:
___位置.append()
__return 位置

def 向きの計算():
向き=[]
__for km in 距離:
___向き.append()
__return 向き
0416デフォルトの名無しさん
垢版 |
2020/01/29(水) 17:34:31.08ID:V4INQ4I7
>>414
その2つなら後者を選ぶケースは考えにくいかな

俺の読解力の問題かもしれんが、「for km in 距離:」がよく理解できん
距離はどういうイテレータ?
例えば、距離 = [1, 2, 3, 4, 5] みたいなものと考えればいいの?
で各距離の値によって各物体の位置、向き、大きさが決まる?
0417414
垢版 |
2020/01/29(水) 20:49:58.87ID:rr34JdCX
>>416
ありがとうございます
一個目みたいにまとめることにします

for km in 距離:は
各距離から置く場所や向きや大きさを決めてます
0418デフォルトの名無しさん
垢版 |
2020/01/29(水) 22:13:17.15ID:V4INQ4I7
>>417
各物体の位置・向き・大きさを計算する部分と
それを使ってI/O的な処理をする部分は分けておいたほうがいいと思う
それぞれ違う理由で変更したくなるから混ざってると後で面倒

きれいに分かれてれば計算しつつ出来た順にI/Oするよう変更するのも簡単

↓関数/データに分けた場合とオブジェクトにまとめた場合のイメージ
https://techiedelight.com/compiler/?n7t7
https://techiedelight.com/compiler/?qDa4
0419414
垢版 |
2020/01/30(木) 01:07:15.66ID:TCVWvduC
>>418
解説をつけてもらってありがとうございます
入力・出力もどうしようか悩んでいたので
助かります!!
0420デフォルトの名無しさん
垢版 |
2020/01/30(木) 17:49:07.16ID:9oqZpWVT
raspbian上でwebviewを使用しています。
公式ページのサンプルをコピペしたのですが、そんなattributeは無いとエラーになります。
オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。
0423デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:03:41.98ID:zqJjLosR
あっそ
じゃあしねよ
0424デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:10:41.47ID:SpgFxTsY
>>422
煽りが返ってくるってことはだいたい質問が悪い
公式ページのサンプルってどこの公式だよURLくらい貼れ
何を実行してるかわからないのに答えられるわけないだろ
0425デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:12:46.73ID:TcPsF5Vj
>>423
キモすぎワロタ
0426デフォルトの名無しさん
垢版 |
2020/01/30(木) 23:16:17.43ID:TcPsF5Vj
オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。

これに答えろってことだろ
なにをぶつぶつ言ってるんだよw
0429420
垢版 |
2020/01/31(金) 11:20:07.05ID:NXB8BBj3
>>428
教えていただいた方法で表示できました。ありがとうございます。
0431デフォルトの名無しさん
垢版 |
2020/01/31(金) 17:48:23.76ID:ltLMy86h
惨めだなぁ…
0432デフォルトの名無しさん
垢版 |
2020/01/31(金) 22:07:10.58ID:WYJCj5Ov
hoge = "わたしの名前は{0}です"

こういう変数hogeは、f-stringで値埋め込むのは無理だよね?
hoge.format()するしかないよね
0433デフォルトの名無しさん
垢版 |
2020/01/31(金) 22:14:17.30ID:KoDF/0eX
>>432
ムリジャナーイ Python!

hoge = "わたしの名前は{{0}}です"
hoge
↑この2行をこのままコピペ実行してみよう!
(3.6.5以降なら確実におk)
0434デフォルトの名無しさん
垢版 |
2020/01/31(金) 23:36:34.66ID:BFxfTyah
惨めな上に頭も悪いときたあ
0436デフォルトの名無しさん
垢版 |
2020/02/01(土) 07:59:04.74ID:caubOhav
>>435
なるほどぉ…
出来ることは理解したけど、微妙に読みづらい感があるな
ありがとうございました
0437デフォルトの名無しさん
垢版 |
2020/02/01(土) 15:23:41.81ID:p+nIpDYx
デバックについての質問なのですが
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分つけて無理やりインデント合わせてコピペして
デバッグしてますが
そういうループの途中だけ動きを見る方法でもっといい方法ありませんか?
0438sage
垢版 |
2020/02/01(土) 15:32:30.14ID:aHBNrXGA
MATLABでいうsimulinkの代用になりそうな物ってありませんか?環境移行したいんですがこれだけどうしても見つからなくて。
0439デフォルトの名無しさん
垢版 |
2020/02/01(土) 15:38:32.96ID:fiLTG5Nb
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
0441デフォルトの名無しさん
垢版 |
2020/02/01(土) 16:00:39.94ID:p+nIpDYx
>>439
for の中にifコンテニューですか
ありがとうございます

>>440
そんなものあったなんて知らなかったです
ありがとうございます
0444デフォルトの名無しさん
垢版 |
2020/02/01(土) 16:20:42.33ID:EnxAFhi/
$ 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
0445デフォルトの名無しさん
垢版 |
2020/02/02(日) 22:34:59.17ID:nTdekf5z
forやdefで使う変数が多くなったときはどうしてますか?
7個ぐらいになってくると
行が長くなって何とかしたほうが良いのか
悩みます

色々ありがとうございます
>>442
blenderというソフト内のpython使ってて
本格的なデバッグ機能があまりないのです
その辺りは専用スレで聞いてみます
0446デフォルトの名無しさん
垢版 |
2020/02/03(月) 00:07:04.35ID:XimuQ1Xy
>>445
型にまとめられるものはまとめる
単に行が長いのが困るだけなら改行すればいいだけ
あとは*args, **kwargs
0447デフォルトの名無しさん
垢版 |
2020/02/03(月) 00:42:52.51ID:M5UXjnSG
>>446
ありがとうございます
なんでも改行可能なんですね
中身を変数にまとめれるんですね
助かります!!
0450デフォルトの名無しさん
垢版 |
2020/02/03(月) 12:17:00.67ID:62FLJlST
>>445
おすすめはせんけど行減らすだけなら
a=1
b=2
c=3
のかわりに
a,b,c=1,2,3
意味のあるまとまったデータなら別クラスにして
hoge=Hoge(1,2,3)
0451デフォルトの名無しさん
垢版 |
2020/02/03(月) 12:20:59.82ID:62FLJlST
ああそういう意味じゃないのか
制御変数の話なら適当に改行汁

あと blender は漏れも使ってるけど
癖があるので普通の python だと思わない方が良い
(普通の python で慣れてる人が使う分には問題無いが)
考え無しにあれを使い続けると糞プログラマになるだけだと思う
0452デフォルトの名無しさん
垢版 |
2020/02/04(火) 23:09:14.52ID:0mUTKS9X
plt.subplot使ってグラフを2つ表示しています

plt.subplot(1, 2, 1)
plt.title('attention')

plt.subplot(1, 2, 2)
plt.title('Non attention')

2つのグラフの下中央に大きなタイトルを表示したいのですが、
なにか良い方法ありますでしょうか?
0453デフォルトの名無しさん
垢版 |
2020/02/05(水) 10:06:39.19ID:FfddlBUI
def test():
def test_test():
print("test")
があったときに、test_test()を呼び出すにはどうしたらいいですか?
0456デフォルトの名無しさん
垢版 |
2020/02/05(水) 11:33:01.43ID:FfddlBUI
>>454
すみません、インデントが反映されていなくて分かりづらい感じになってしまいました。
↓のように、クラス内にメソッドがあって、メソッドの中に関数がある場合
どうやって関数を外部から呼び出せばいいのでしょうか?

def test():
 def test_test():
  print("test")

外部ではなく、内部から呼び出すには

def test():
 def test_test():
  print("test")
 test_test()

とすれば呼び出せますが、test()の外から呼び出す方法を知りたいです。
0457デフォルトの名無しさん
垢版 |
2020/02/05(水) 12:38:02.65ID:fbcJymO4
ローカル変数みたいなものだから外部からアクセスはできない
0459デフォルトの名無しさん
垢版 |
2020/02/05(水) 13:14:47.01ID:d60p+KZz
class testclass:
  def test(self):
     def test_test(str):
       print(str)
     return test_test

f = testclass().test()
f("aaaaaaa")

へぇこんな事できるんだ、何に使えるもの?
0460デフォルトの名無しさん
垢版 |
2020/02/05(水) 13:23:28.11ID:FfddlBUI
>>458
>>459
ありがとうございます。

今までメソッドは全部selfで書いてたんですが
毎秒何百回も処理するような処理を書くとやたら遅くて
試しにメソッド内部に関数を書いたら処理速度が速くなりました。

selfでメソッドを呼び出すと遅くなるので、処理速度を早くしたいときはローカル関数として定義した方が良いみたいです。
0461デフォルトの名無しさん
垢版 |
2020/02/05(水) 14:20:51.30ID:2gxpMPkb
>>459
デコレータとか
0462デフォルトの名無しさん
垢版 |
2020/02/05(水) 15:18:52.75ID:6NLusyAl
csvの例えば5列目が2,3,5,7,3,5,7,,,,,といろんな数字で並んでるとき、
その列の特定の数字を一括して別の数字に変換して、csv保存したいのですが、サンプルコードを頂けないでしょうか
0463デフォルトの名無しさん
垢版 |
2020/02/05(水) 15:32:28.07ID:HabtckGA
>>462
pandas 置換 🔍
0464デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:46:26.26ID:2rKdW1Ec
>>452
figureの任意の位置にテキスト表示出来る
0465デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:49:43.06ID:2rKdW1Ec
>>460
適当なことを言うな
0467デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:05:15.67ID:2rKdW1Ec
うそだとは言っていない
0468デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:29:47.90ID:PnTZcdWz
毎秒何百回程度でやたら遅くなる

とか言うのは嘘と言い切ってもいいと思う
0469デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:56:00.86ID:FfddlBUI
>>468
いやこれもホントに
処理内容次第なので、処理負荷の低いものなら気づかないですけど
timeitとか使わなくても目で見て明らかに遅いレベルまで遅くなったんです
信じてもらえなくても別にいいですけど、僕に得も何もないんで
0470デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:59:06.82ID:2rKdW1Ec
@staticmethod
0471デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:21:18.03ID:3A2Vd31x
cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
パイソンでDLバリバリになるには何の書籍から始めるのが良い?
やっぱ統計学はやんなきゃ話にならない?
0472デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:27:09.11ID:xJPwpbdq
>>471
統計がわからない機械学習エンジニアはただの占い師
ビジネスがわからない機械学習エンジニアはただのベンチマーク厨
0473デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:32:56.42ID:V2ceD5vC
敢えて喩えるほど実際から離れていく
0475デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:45:33.80ID:gx9j2avt
統計ってベイズ推定とか?
0477デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:56:17.65ID:l5EZ/l0z
>>472
俺、機械学習さっぱりわからんが、なんか核心をついているような言葉だが
基礎となる統計がわからない自称機械学習エンジニアはただの占い師
ターゲットのビジネスがわからない自称機械学習エンジニアはただのベンチマーク厨
が正しいんじゃないのか

>>471
>cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
こんな自己紹介からして、お前はソフトエンジニアではなくプログラムかける土方
ってかんじだろ。
そんな奴が目指しているのは機械学習"エンジニア"ではなく
機械学習を用いる占い師 や機械学習のベンチマークができる厨 じゃないのか?
なら、統計学なんてやる必要ないんじゃないか。
エンジニアになりたいなら基礎理論の統計学はしっかりやらんとだめだろうが。
どの分野でもめざせエンジニアなら基礎はしっかりやらないと駄目だろ。
例えばソフトエンジニアなら大学・大学院の情報工学科でやるようなことは
学んでないとな。
と偉そうなこと言っている俺は趣味でプログラミングなんだがな。
0478デフォルトの名無しさん
垢版 |
2020/02/05(水) 20:58:14.94ID:V2ceD5vC
なげえよカス?
0480デフォルトの名無しさん
垢版 |
2020/02/05(水) 21:10:55.94ID:aNozFXKi
長さの割に中身ゼロの長文には参るな

>>477は今ではチョロっとライブラリインストールするだけで
どんな素人でも始めることのできる機械学習についてまったく分からず
おまけにプロでもないアマチュアなのでエンジニアの求人にも必要資格にも全く詳しくないけど
「エンジニアの資格」にだけは一家言ある変な人ってわけだ
0481デフォルトの名無しさん
垢版 |
2020/02/05(水) 21:20:46.43ID:oCA39UVc
>>475
ほかにもあるから教科書買ってきて嫁

>>476
きゃつは万能ではないし、
昔はデータ数制限がきつくって、今も(高額な専用ソフトはもちろんだが)Rに劣っている
0482デフォルトの名無しさん
垢版 |
2020/02/05(水) 21:27:18.91ID:ZizT6Tal
簡単なことなんだけどな
データがあって、目的が決まっている
この二点をクリアできないと機械学習をする意味がない
二点がクリアされたとしても性能がでるという保証はないが
0483デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:04:06.46ID:GAMNd4TG
BeautifulSoupとかいうのを使ってGoogle画像検索結果をスクレイピングしてたけど
多分Google検索結果あたりが変わってとれなくなりました。

html.select('.rg_meta.notranslate')
このあたりの仕様が多分変更になったと思うんですが
うまく取得できる方法を教えて頂けたら有難いです…。よろしくお願い致します;。
0484デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:10:38.29ID:76t6g1c3
今後検索結果が変更になる度にここで聞くのかな?(笑)
0485デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:14:57.47ID:GAMNd4TG
>>484
申し訳ありません…
でしたら、クラスの指定と思うのですがそのあたりのコツと言いますか
間違いなく出来る方法あたりをお教頂けましたら…
現在  .rg_i というクラスはあるのですが
これをもう、 .rg_i. src img href a そのた思いつくものを
やれるだけ順番を前後させても、半日以上経過しても進めず
本当に苦しくなってきてしまっておりまして、すみません…。
0487デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:37:38.28ID:GAMNd4TG
>>486
すみません…。自分は前後を変えたり何度やっても
空といいますか画像が取得できないので、
お教頂けたら、ありがたいです…。
0488デフォルトの名無しさん
垢版 |
2020/02/06(木) 10:35:45.43ID:GAMNd4TG
>>486
すみませんです…どうやって検索したらよいかお教え頂けましたら…
0489デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:07:22.39ID:d7NhcEcy
教えてやるからどこかにパースしてるHTMLを全部置け
そしてどの要素が欲しいかHTMLの中に <!--この要素が欲しい--> と書け
0491デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:27:31.04ID:GAMNd4TG
有難うございます。
すみません、keywordは山として以下のようにして取得を目指しており
それで<!-- --> でほしいのですが 以下の表記方法ではだめでしょうか。




urlKeyword = parse.quote(keyword)
url = 'https://www.google.com/search?hl=jp&;q=' + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch'

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/10.0",}
request = req.Request(url=url, headers=headers)
page = req.urlopen(request)

html = page.read().decode('utf-8')
html = bs4.BeautifulSoup(html, "html.parser")

elems = html.select('.rg_meta.notranslate')


この最後の.rg_meta.notranslate のあたりで目的の画像を一つ一つ取り出せなくなっていると分析しています。
0492デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:28:23.61ID:GAMNd4TG
一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
elems= の前に 例えば print(html) とするとGoogle画像検索結果の画面全体は取れているのです。
しかしそれは全体像なので、個々の1枚1枚を取得してphpmyadminに格納したり、とかそれが狙いであるので
elems = のところでつまずいてはやはりまずい具合です。

そして目的の画像検索結果、 例えば 山で検索して


<!--
<img class="rg_i Q4LuWd tx8vtf"
src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-iid="0" data-iurl="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRFWZJ-G8GOvPEcPPJZqy_IqLTMokKOyW_VAdDON2S_9V6cnOQZ"; jsname="Q4LuWd"
alt="「山」の画像検索結果" />
-->
↑この要素が欲しいものです
ここのimgのclassにrg_i というものがありこれはヒントの一つ?かと想像したりするのですが
data-iurl= のこれが取得したい画像のURLだと思います。 URLで hrefでなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します;
0493デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:42:27.42ID:GAMNd4TG
>>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ…
0495デフォルトの名無しさん
垢版 |
2020/02/06(木) 12:25:05.18ID:PruBe/51
>>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね

あとfirefox10でも47でもないいい加減なUAはやめとけ
0496デフォルトの名無しさん
垢版 |
2020/02/06(木) 12:35:55.03ID:/hIhK6yv
要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか

スクレイピングは、相手のサイトを分析するのが難しいのと、
適切に限定される、セレクターを作るのが難しい

API が公開されているなら、APIを使った方がよい

漏れは、Ruby で、Selenium WebDriver, Nokogiri などで、
Chrome, Edge などのブラウザーを自動操作して、スクレイピングするけど

ここに書いておいた

【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27
0497デフォルトの名無しさん
垢版 |
2020/02/06(木) 12:41:43.46ID:zAec24ND
>>494
改行=\n または \r\n
0498496
垢版 |
2020/02/06(木) 12:45:42.46ID:/hIhK6yv
>>492
Base64 は、HTML でもよく使う

Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める

<img src="data:image/png;base64,xxxxx..." />
0499496
垢版 |
2020/02/06(木) 12:59:31.10ID:/hIhK6yv
>>492
適切に、1つに限定される、セレクターを作るのが難しい!
以下で、特定できないのか?

class="rg_i Q4LuWd tx8vtf"
data-iid="0"
jsname="Q4LuWd"

それか、img 要素の外側で、id など、限定される要素を探すか。
基本的には、idを探さないと特定できない

idを振っていない場合は、そのサイト特有のルールを発見しないといけない!

例えば、5ch のスレ内では、id が無いから、
data-id に投稿番号が入っているので、それを使うとか

このように、相手のサイトを分析するのが難しい!
0500デフォルトの名無しさん
垢版 |
2020/02/06(木) 13:30:53.32ID:GAMNd4TG
>>495
firefoxのUA、修正します。すみませんでした;

そして、以下でやってみましたが
elems = html.select('img[data-iurl]')
なぜか出来ずに、うむむ…と申し訳ありません、さらに研究してみますが…
0501496
垢版 |
2020/02/06(木) 14:30:31.06ID:/hIhK6yv
>>496
にも書いたけど、
要素をAjax で非同期処理に読み込むから、またimg 要素が存在しないとか?

Ruby で、Selenium WebDriver を使えば、要素が出現するまで、自動的にwait する。
await みたいに、非同期処理を同期的に書ける
0502496
垢版 |
2020/02/06(木) 14:34:29.34ID:/hIhK6yv
もっと簡単に、10〜20 秒ぐらい、sleep したら、img 要素が出現しないのか?
0503デフォルトの名無しさん
垢版 |
2020/02/06(木) 16:58:26.66ID:GAMNd4TG
一応成功致しました!

>>500
結果としてelems = html.select('img[data-iurl]')
で、このelemsとしては取れていたようです!

ここは元々elems = html.select('.rg_meta.notranslate')
であったと最初に出しましたが このelemsを
↓(適当〜8行くらい)
------------------
for ele in elems:
eledict = dict()
ele = ele.contents[0].replace('"','').split(',')
for e in ele:
num = e.find(':')
eledict[e[0:num]] = e[num+1:]
imageURL = eledict['ou']・・・・・
--------------
というような感じで使っていたのですが img[data-iurl]の今回? 目的のurl自体はスムーズに取れていたようで

for ele in elems:
imageURL = ele.get('data-iurl')

今回elemsのeleを ele.get('data-iurl') で、1枚づつ取ることができたようでした。
有難うございました!
0504デフォルトの名無しさん
垢版 |
2020/02/06(木) 20:03:36.02ID:bDkEju7l
asyncioってわかる人いますか?
0505デフォルトの名無しさん
垢版 |
2020/02/07(金) 07:27:17.45ID:cGGfIEk4
知ってるよ(どの程度を期待してるのか知らないけどな)
0507デフォルトの名無しさん
垢版 |
2020/02/08(土) 08:43:13.34ID:sQ9sQIGh
>>506
それらはOSやCPUを自力で作れる神クラスの技術者でないと理解できないし、使いこなせないと思う
一般人である自分もドキュメントを読んでみたが、チンプンカンプン(死語)だった
さっさと忘れてPythonを楽しみましょう
0508デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:13:41.17ID:gJJFnkpu
GUIやるなら、threadかasyncioのどちらかは必須。
0510デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:19:32.94ID:0YppiA+B
GUIやるならC#+VisualStudioが一番
0511デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:26:34.58ID:iJq/sxyx
Macにも持っていけるの?
>>510
0512デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:32:22.39ID:0YppiA+B
Mac持ってないからわからん
俺は自分用ツールしか作ったことない
0515デフォルトの名無しさん
垢版 |
2020/02/08(土) 11:12:38.04ID:K7+uW5ie
シェア一割のくせに態度だけ見てると九割くらいありそうだよなw
0517デフォルトの名無しさん
垢版 |
2020/02/08(土) 12:37:42.97ID:W0we+YOR
売れない芸人が一丁前に何か言ってるわ
0518デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:20:07.76ID:iJq/sxyx
Windows/Mac/iOS/androidに対応したGUIを作ることができます
そう、pythonならね
0520デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:47:48.76ID:YnTe+96U
普通にWindowsで作ったC#はLinuxでもMacでもMonoで動くぞ
0521デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:48:05.92ID:YnTe+96U
GUI含めて。
0523デフォルトの名無しさん
垢版 |
2020/02/08(土) 14:46:34.93ID:KXr/QwX0
Monoって書いてるだろ
0524519
垢版 |
2020/02/08(土) 15:35:46.13ID:9Nn74D/R
C# では、Microsoft が、

>>519
や、Unity などに対抗するために、Xamarin/Mono を買収した
0526デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:09:56.17ID:Gwq8LIiY
Ruby禁止だけじゃなくMono/C#も禁止するか
0527デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:19:51.57ID:szXf7gpM
qtって汚いよな
0528デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:28:08.83ID:uuv8oSvR
RADツールもないもんな
知らんけど
0530デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:46:35.97ID:Ewdvkn0R
世代交代しか訴えられないんじゃぁ、ぶてぃじぇっじもたいした候補じゃねーなぁ
0532デフォルトの名無しさん
垢版 |
2020/02/08(土) 20:33:49.47ID:Y+Ds/PpP
>>506>>507
良くわかるけど
Pythonやるにはあまり関係ないよ?
0533デフォルトの名無しさん
垢版 |
2020/02/08(土) 21:53:48.06ID:tg7wd02h
>>506
ソフトエンジニアならわからないと馬鹿にされるんだろうが
でも、この底辺スレに来る連中はエンジニアではなく低レベルのサンデープログラマが
ほとんどで分からない奴が大多数だろ(もちろん俺もわからん)
0534デフォルトの名無しさん
垢版 |
2020/02/08(土) 22:16:28.53ID:DP9vcaNb
>>506
プロセス(OSから見えてる単位)→スッドレ(プロセスの下にわさわさ増殖可能)→コア(CPUの部品)

1プロセス=1CPU
プロセスとプロセスの間の情報やり取りはゲキムズ&低速。

スッドレとスッドレの間はやり取りOKだけど、
メモリを奪い合わったり書き換えっこになったりしないように要注意。
あと、旧来は1スッドレ1コアが普通だったけど、
今は2スッドレ1コアが普通になりつつあり、
多スッドレ→1コアする場合はメモリ領域の扱いに注意が必要。

(どのスッドレも同時にみんな手をつないでゴール!を強要されない計算の場合は)
1つのプロセスからいっぱいスッドレわかせて計算するより、
いっぱいプロセス湧かせて順次まとめあげる方が、高速&効率が良いはずである。
だが、
多プロセス化するとメモリはもっさり消費される傾向なので、
ほんとのところは、
やりたいことが同期を強く求めてるかどうかと、マシンスペックによるのである。
0535デフォルトの名無しさん
垢版 |
2020/02/08(土) 22:17:55.33ID:0YppiA+B
突っ込まないぞ
0537デフォルトの名無しさん
垢版 |
2020/02/08(土) 22:31:02.57ID:DP9vcaNb
(つづき)
さきにあげた並行処理をPythonにさせるとき使うライブラリが506の質問であがってるさいしょの3ツ。

threading : スッドレをいっぱいわかせることができる(マルチスッドレ)
multiprocessing : プロセスを複数作れる

ケツ2つはやはり並行処理なのだが、
「ノンブロッキング処理」とゆうのをさせるためのもので、
投入されたPythonのバージョンが違う(concurrent.futuresの方が古い)のと、
とっつきやすさが違う(concurrent.futuresの方が人類にはとっつきやすい)。
これらを使うメリットがあるのは下の3条件を満たしてるとき。特に3についてはよく考えろ。
1.過程で、ボトルネックなクソ重い処理がある
2.それが何度もやってくる
3.ボトルネックの通過完了時刻が全部バラバラになってもおk(追い越しOK)で、
  最終的にまとまればいい。

もっと詳しくは
ggってHitした↓でもよんでくれ。
ttps://qiita.com/icoxfog417/items/07cbf5110ca82629aca0
0539デフォルトの名無しさん
垢版 |
2020/02/09(日) 01:28:40.71ID:JzPk4jqf
>>534
ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解してるようだな。
勉強してからもう一度書き込むように。
0540デフォルトの名無しさん
垢版 |
2020/02/09(日) 07:52:13.11ID:CdDouLVX
>>> (10).to_bytes(2,'big')
b'\x00\n'

期待している結果となりません。
b'\x00\x0a' にならないのは何故?
0541デフォルトの名無しさん
垢版 |
2020/02/09(日) 08:44:46.73ID:vHnIKgeN
>>540
ドキュメントのbyteオブジェクト関連の項目を読むと書いてあるが
文字として見せた方がわかりやすいと思われるバイト値は
16進ではなく文字で表示する方針なのだそうだ
だから値としては正しく格納されているので気にしなくてよろしい
0543デフォルトの名無しさん
垢版 |
2020/02/09(日) 09:30:32.92ID:vHnIKgeN
>>542
ところで、この(値).to_bytes()っていう書き方は初見なんだが
いつからある機能なんだろうか(自分の知識はver.3.3で止まっている)
JavaっぽくてPythonらしくないと感じるのだが
0545デフォルトの名無しさん
垢版 |
2020/02/09(日) 10:38:09.30ID:hMxVM0F3
flaskでsms認証つけたいんですけど何がおすすめでしょうか?
アカウントにユーザーのメルアド、氏名、住所もつけておきたいです。
0549デフォルトの名無しさん
垢版 |
2020/02/09(日) 11:26:42.55ID:uG+JJfG5
会話に茶々入れたくなければ公開掲示板なんかで聞かなきゃいいじゃん
つまりいくらでも茶々入れていいのが2ch5chでしょ
その基本を無視して俺ルールをいきなり押し付けられても困る

で、賢さってのは知識量のことなワケ?
0550デフォルトの名無しさん
垢版 |
2020/02/09(日) 11:27:51.13ID:uG+JJfG5
だって「超初心者」が知識と賢さを混同してるらしいからね
ほっとけないね
0551デフォルトの名無しさん
垢版 |
2020/02/09(日) 11:32:14.37ID:EbhgtQ51
>>539
>ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解
そのようだ…

ありがとう
そしてありがとう

Pythonのライブラリでやれるのは
ソフトウェア的マルチスッドレだな
0552デフォルトの名無しさん
垢版 |
2020/02/09(日) 11:34:06.96ID:EbhgtQ51
というわけで
>>506よ、
536のことはうっちゃっておいて
>>537の先頭2行も脳内から消して、詳しくはケツに貼ったQiitaの人の記事を読んでクレクレ
0553デフォルトの名無しさん
垢版 |
2020/02/09(日) 12:11:02.39ID:vWZlCr2H
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?
0554デフォルトの名無しさん
垢版 |
2020/02/09(日) 12:16:47.36ID:uG+JJfG5
一般的には想定される普通の使い方をする時に一番早くなるように言語を作る
それに間に一枚噛んでると遅くなる、と思うのが人間

あとは長さ10万くらいのリストを数千回試して時間を計る
0558デフォルトの名無しさん
垢版 |
2020/02/09(日) 13:38:53.89ID:haksjRuS
お前ら木偶の坊なんだから俺の疑問に答えて少しは世の中の役に立てよ

という意識があのような質問を生むのだ
0559デフォルトの名無しさん
垢版 |
2020/02/09(日) 14:44:11.09ID:KmTvxb40
>>555
sum(for x in range(10))
sum([for x in range(10)])
これの違い。
0560デフォルトの名無しさん
垢版 |
2020/02/09(日) 14:49:31.50ID:KmTvxb40
sum(x for x in range(10))
sum([x for x in range(10)])
だった。
0562デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:22:07.62ID:O6Vx4x7H
>>553
listをsetに変換するコストを無視してもsetをイテレートするほうが遅いよ
hash tableをイテレートする時に必要な処理とlistをイテレートする時に必要な処理の違い

といってもその差は微々たるものだから
その差が重要なプログラムを書こうとしてるなら言語を変えたほうがいいかも
0563デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:35:28.11ID:vWZlCr2H
>>554-562
ありがとうございます
あまり大きくは変わらないのですね
参考にします
0564デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:45:54.02ID:wTv3WydA
>>561
上: generator (リストは造らない)
下: 内包表記 (リストが造られる)
0565デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:54:02.80ID:KmTvxb40
for i in set(list):
listのイテレートとsetのイテレートが発生するのと、一旦setのためのメモリが確保されるから、
setの重複排除機能が必要でない限り、100%無駄だと断言できる。
0567デフォルトの名無しさん
垢版 |
2020/02/09(日) 16:14:09.61ID:wTv3WydA
むしろforの中身を見直すか
numpyとか使うべき
ループはクソ遅い
0568デフォルトの名無しさん
垢版 |
2020/02/09(日) 21:20:07.67ID:U6aZQoQk
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが
0573デフォルトの名無しさん
垢版 |
2020/02/10(月) 01:46:01.93ID:y8VN1gM7
>>571
>>568
>forでsetより遅くなる道理はないと思うが
と言っている。で、これから
>リストをfor文を回してsetより速くする方法が他にあるってことですか?
がなぜ出てくるんだ?
>>568の前の部分はfor~inについてではなく、
list/setの要素にこれ(x)ある?を調べるin演算(x in list/set)についての
ことを言っている。
0575デフォルトの名無しさん
垢版 |
2020/02/10(月) 09:51:35.16ID:5lt6zYiz
>>572
570はサーチとイテレートをごっちゃにしてるわな。
listは動的配列だから、オブジェクトへのポインタのポインタをインクリメントしてるだけだわな。
サーチはその後の話だろ。
0576デフォルトの名無しさん
垢版 |
2020/02/10(月) 09:58:28.58ID:8uBZGbTk
>>575
いや君がごっちゃにしてるだけでイテレートの話なんてしてないだろ
570はin演算子使った時にどうやって探すかの話だろ
0577デフォルトの名無しさん
垢版 |
2020/02/10(月) 16:12:22.59ID:fRmEVRio
色々脱線はしているのかもしれないが、最初の質問は >>553
リストを処理するのに、そのままよりも、
setを噛ませた方が速くなるかどうか、ということであって
リストの内容は全件処理しているようだし
0579デフォルトの名無しさん
垢版 |
2020/02/10(月) 17:29:20.70ID:fRmEVRio
568 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 21:20:07.67 ID:U6aZQoQk
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが

570 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 23:21:11.41 ID:U6aZQoQk
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す

この辺の説明を ID:U6aZQoQk がちゃんとすれば良いんだと思う
0582デフォルトの名無しさん
垢版 |
2020/02/10(月) 17:44:23.19ID:fRmEVRio
553 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 12:11:02.39 ID:vWZlCr2H
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?

これが最初の質問
0583デフォルトの名無しさん
垢版 |
2020/02/10(月) 17:47:57.76ID:fRmEVRio
この質問で想定される回答は

for i in set(list):の方が高速
どちらも変わらない
set 使わない方が高速

この三通りじゃないかと思うが
0584デフォルトの名無しさん
垢版 |
2020/02/10(月) 17:55:55.56ID:cKG4UD69
>>580
俺も何がわからないのかわからん

in演算子が何かわかってないから
>>568>>570に書いてることが理解できないんじゃないかな
と想像してみる
0585デフォルトの名無しさん
垢版 |
2020/02/10(月) 17:59:57.44ID:cKG4UD69
>>583
それはもう回答が出てるでしょ

んで普通に考えたらsetにしたほうがが速いという考えにはならないのに
setのほうが高速かもしれないと思ってしまってるのは
for loopのfor x in fooの`in`と
contains(foo, x)を演算子にしたin演算子の`in`とを勘違いしてるんじゃない?
ってコメントが>>568
0587デフォルトの名無しさん
垢版 |
2020/02/10(月) 18:21:49.94ID:8uBZGbTk
>>584
そういうことかね

>>585
前にQiitaでリストにin演算子使うと遅いっていう記事がバズってたからね
そういうの見て質問者が漠然とリストはsetより遅いって思い込んでしまった可能性はあるね
0588デフォルトの名無しさん
垢版 |
2020/02/10(月) 19:06:26.64ID:NX1L632S
>>584
質問者ですがそうです
setのforループの方が早いのかと思い込んでいました
>>574で自分の勘違いに気づいたところです
0591デフォルトの名無しさん
垢版 |
2020/02/11(火) 10:10:26.19ID:QVEssOx9
ちっちゃい質問かもなんですが
かっこ閉じ際の位置ってpython的にはどこが良いですか?

例えば
def kakko(a,b):
____a+b
というdefを使うときに行の最後にかっこをつけるか
kakko(
____1+2+3+4,
____5+4+6+7)
改行してかっこの中のインデントに合わせるか
kakko(
____1+2+3+4,
____5+4+6+7
___)

kakkoのインデントに合わせるのか
kakko(
____1+2+3+4,
____5+4+6+7
)
0593デフォルトの名無しさん
垢版 |
2020/02/11(火) 10:30:13.65ID:KtXysiBK
kakko(
____1+2+3+4,
____5+4+6+7)
または
kakko(1+2+3+4,
____5+4+6+7)
0594591
垢版 |
2020/02/11(火) 11:02:07.61ID:QVEssOx9
>>592
ですよね・・・
そうなると式が長くなる時は
かっこの前に分かり易い名前をつけて
さきに計算しておいたほうが良いですか?

kakko_a = 1+2+3+4
kakko_b = 5+4+6+7
kakko(kakko_a,kakko_b)

>>593
ありがとうございます
かっこ閉じは改行で分離しない方が良いんですね
0595デフォルトの名無しさん
垢版 |
2020/02/11(火) 11:07:02.60ID:BVyNsmkt
実運用としてはblackとかyapfにフォーマットさせてそれに従っとく
0596591
垢版 |
2020/02/11(火) 11:51:51.81ID:QVEssOx9
>>595
これ使えば悩まなくて済みそうです。
ありがとうございます!!
0598デフォルトの名無しさん
垢版 |
2020/02/11(火) 13:52:28.79ID:YRn6ep9S
>>597
>pythonの流儀・作法に従うのが一番いい

そのpythonの流儀・作法を聞いてるのになぜそれに答えずC++のそれもWIN32API持ってくんの?
0599デフォルトの名無しさん
垢版 |
2020/02/11(火) 14:25:45.03ID:L4MHQKAq
Pythonの初級を受けた人いますか?
どのような勉強されたか教えてください
m(__)m
0600デフォルトの名無しさん
垢版 |
2020/02/11(火) 15:36:18.95ID:lGXjI99c
継承クラスのinitの引数が増える場合はどうしたらいいですか?
class person():
def __init__(self, age):
this.age = age

class student(person):
def__init__(self, age, number)
this.age = age
this.number = number

こんな感じにしたいのですが。
0601デフォルトの名無しさん
垢版 |
2020/02/11(火) 15:56:30.44ID:BVyNsmkt
>>599
ぱいそんのしかくしけんはひとつだけじゃないんだ
きみがいっているのはどのしけんのしょきゅうかな?
0602デフォルトの名無しさん
垢版 |
2020/02/11(火) 15:58:27.34ID:RWYSN8yj
>>599
何にも勉強せずに一度受けてみるとよい
試験の雰囲気と問題の内容と自分の実力がわかる
それを踏まえて備えれば二回目は受かる
0603デフォルトの名無しさん
垢版 |
2020/02/11(火) 15:59:40.15ID:BVyNsmkt
>>600
Student側でsuper().__init__(age)するだけじゃねーの
ああ、基底クラスの__init__を呼ぶ方法が分からんのかな?
0604デフォルトの名無しさん
垢版 |
2020/02/11(火) 16:01:24.03ID:BVyNsmkt
それにしても、金になると思うとすぐ資格ビジネス屋が群がりやがって
0605デフォルトの名無しさん
垢版 |
2020/02/11(火) 16:52:49.23ID:RUM4eNEQ
a1 = 0, a2 = 0, a3・・・・が続く

for i in range(1, 2):
i = i +1
a[i] = 5
a+数字に値を入れたいのですがa[i]のような使い方はできないのでしょうか
0609デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:35:43.13ID:AyaWNvDt
これはスゴイ

やりたい事はなんとなく分かるが、
何をやりたいのかが分からない
0610デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:50:33.09ID:HQEYSI3a
>>605
a1 = 0, a2 = 0

for i in range(1, 2):
i = i +1
exec(' "a"+str(i) + "= 5" ')
0611デフォルトの名無しさん
垢版 |
2020/02/11(火) 19:40:05.81ID:X3jD9Kja
これは高確率でやり方よくないパターン
0612デフォルトの名無しさん
垢版 |
2020/02/11(火) 19:47:41.29ID:a/euzlWM
初心者のうちはそういうことやりたくなるのわからなくもないけど素直にlist使いましょう
0613デフォルトの名無しさん
垢版 |
2020/02/11(火) 21:21:11.13ID:v/oRLdRM
>>605
for i in range(1, 2):
____i = i +1
____x = “a%s” % i # xには”a2”という文字列が入る
____locals()[x] = 5

静的言語のリフレクションみたいなのは
globals/locals, getattr/setattr/delattr

文字列をコードとして評価したいならeval
実行したいならexec
0614デフォルトの名無しさん
垢版 |
2020/02/11(火) 22:13:11.46ID:ZhnXkLvm
>>605
a1 = 0, a2 = 0, a3・・・・が続く
があり、それらに、オブジェクトaを通して
a[1]でa1に,a[2]でa2に....([]を使って)アクセスしたいってことだろ。
(a[1]のaはaでなくても、名前みたいなものだから好きなのにしていい。
aシリーズにアクセスするらわかりやすくaにしている)
こんなことを実現するクラスの作り方を教えて?という質問になるよな。
と、言っても俺は低脳で出来ない。
>>612
俺もそれで間に合うならそれが良いがと思う
0617デフォルトの名無しさん
垢版 |
2020/02/11(火) 23:02:14.51ID:RUM4eNEQ
605です
レスありがとうございました
>>610さんのアドバイスで私のやりたかったことが出来ました。ありがとうございます。
execを初めて知りましたが、初心者的には便利な使い方ができそうですね
hoge = "aaaa"
exec('hoge = "ほげ"')
print(hoge)

>>616
それです
0618デフォルトの名無しさん
垢版 |
2020/02/12(水) 02:21:47.75ID:8gaFy0VD
dtreevizで決定木を可視化したのですが棒グラフの下の閾値が謎の数値と被ってとても見にくい状態です
閾値だけ表示させることはできますか?
0619デフォルトの名無しさん
垢版 |
2020/02/12(水) 08:34:59.50ID:MxyBlFwL
a1=0,0
はタプルになるから
a1=0,a2=0
もそうかと思ったらこっちはエラーだな
0620デフォルトの名無しさん
垢版 |
2020/02/12(水) 15:55:30.07ID:a1w2Xqz0
>>617
こいつとは仕事したくない
うちの会社にいたら首切る
0621デフォルトの名無しさん
垢版 |
2020/02/12(水) 17:24:47.59ID:LrVjYqM5
別にええやん
学生かもしれないしプログラマーじゃない可能性も高いし
簡易的なツール作るだけならそんな高いレベル求められないし
execを覚えたというだけでも成長したのにそんな言い草あるか?
0622デフォルトの名無しさん
垢版 |
2020/02/12(水) 17:34:29.91ID:QgfOdoDN
>>616
どういうこと?
0623デフォルトの名無しさん
垢版 |
2020/02/12(水) 18:24:00.47ID:h0cbN6Js
>>620
初心者が間違った判断をしたならそれを指摘してやればいいだろう。
おれはお前のような奴の方が一緒に仕事したくないよw
0624デフォルトの名無しさん
垢版 |
2020/02/12(水) 22:17:48.25ID:ohhYjydu
環境はMacです、ワケあってpython2を使おうとしてpip install -U python2を行ったら
Requirement already up-to-date: python2 in
/usr/local/Cellar/pypy3/7.3.0/libexec/site-packages (1.2)
と表示され、versionが1.2でしかもpython2 -Vとしてもコマンドが見つからないと
言われるのでどういうことかと首をかしげpip listを行うと
$pip list
Package Version
---------- -------
appdirs 1.4.3
cffi 1.13.2
greenlet 0.4.13
packaging 20.0
pip 20.0.2
pyparsing 2.4.6
python2 1.2
readline 6.2.4.1
setuptools 44.0.0
six 1.13.0
と表示され、numpyなどが入ってないので何かおかしいと思い、
numpy.__version__、numpy.__file__を確認するとそれぞれ
'1.17.3'、'/usr/local/lib/python3.7/site-packages/numpy/__init__.py'
まあ正直どうなってるかよく分からないのでとりあえずpip install -U numpyを行うと
Successfully installed numpy-1.18.1
しかし上記のように__version__を確認しても、'1.17.3'のままでした。
pipのlistには1.18.1でしっかり入ってます。
これって何が起きてるんでしょうか?Homebrewでinstallした可能性も考えたのですが
brew listを行ってもnumpyもscipyも見つからずpypy、pypy3、pythonがあるくらいです
pipのversionは
pip 20.0.2 from /usr/local/Cellar/pypy3/7.3.0/libexec/site-packages/pip (python 3.6)
です。思い当たる原因としては一回brewでpypy3を消したらpip効かなくなったことですが、
消す前にpipでinstallしたものは今でも普通にimportが効きます。
pipに表示されない原因に思い当たる方がいたらどうかよろしくお願いします。
0625デフォルトの名無しさん
垢版 |
2020/02/12(水) 22:41:09.40ID:mtSj8YKm
>>624
パス通す順番はジッサイトテモダイジ

MacにしみこんでいるPython(2系)の存在を忘れてはいけない。
0626デフォルトの名無しさん
垢版 |
2020/02/12(水) 23:00:22.35ID:bYqOq5KM
605です。ご迷惑をおかけして申し訳ありません
最初に書いた例が私自身もよくわかっていないまま書いたのが駄目でした
皆さまのアドバイスでコードが完成しました
https://pastebin.com/y2QT7m3E
色んな方法があると思うのですが、教えて頂いたexecとevalを使いました
コード中のa_no_list[0] にはforで作ったa1を入れて、そのa1にランダム関数の数字を代入しました
手動でa1,a2を作って値を入れたりというのは出来たのですが、forで任意の回数繰り返して自動でa1,a2作れないかとこちらに相談した次第です
forでprint(a[i])もa(i)もできるようになって、自動でリストの中の要素の中の要素・・・・を表示したり代入できるようになってるはずだと思います
ちなみにこれは初心者参考書を1/4まで読み終わった復習として作りました
0627デフォルトの名無しさん
垢版 |
2020/02/12(水) 23:30:50.90ID:ohhYjydu
>>625
ありがとうございます、それ聞いて試しに
aliasのpython="python3"
を外したら動きました、linuxだとpython2で認識するんですけど
macだと効かないんですね……悩んでた問題が一つ解決しました、本当にありがとうございます。

ただ今インストールされてるnumpyやtensorflowなどがpipで出ない方は解決できてません
上記のこともありpip listとpip3 list両方試したんですが全く同じ結果でした……
0628デフォルトの名無しさん
垢版 |
2020/02/12(水) 23:52:40.41ID:ohhYjydu
申し訳ありません、自己解決しました
何故かPATHで/usr/PATH/pypy3が先頭に立っててpypyが一番最初に呼び出される設定になってた為
pypy3のpipが表示されてたんだと思います……PATHのpypy3外したら直りました。
長文と勘違いで迷惑を書けてしまい申し訳ありませんでした。
0631デフォルトの名無しさん
垢版 |
2020/02/13(木) 08:14:35.67ID:0eJoVY/8
>>626
どうしてa1とかa2の変数名が必要なのかわからないな
0634デフォルトの名無しさん
垢版 |
2020/02/13(木) 17:35:23.50ID:r7bSHOfr
pythonでオブジェクト指向やれば
selfだらけになってシグナルノイズ比が高い事は自覚しておくべき

明示的にselfを渡してる言語としてGoやRustと同列に語るのはぶっちゃけ頭おかしい
Goはどの型のメソッドが識別するためにselfを渡してる
Goの場合はそれ以外で識別する方法がないから
Rustはselfの使い方が3種類があるから
関数がどの種類なのかをシグニチャで指定するために明示的にselfを渡してる
0636デフォルトの名無しさん
垢版 |
2020/02/13(木) 19:02:19.46ID:qvECNN2e
条件分岐の分かり易い書き方について教えてください

通常ではa=bで
c=0の時はa=zで
d=1の時はa=yというときに

if c == 0:
__a=z
elif b==1:
__a=y
else :
__a=b

になりますがほとんどの場合a=bになって
まれにa=y やa=zになるとすると
a=bが最後に来るのはわかりにくい気がするんですが
どうしてますか?
0638デフォルトの名無しさん
垢版 |
2020/02/13(木) 20:12:27.95ID:Ure0FzdD
>>636
別に気にならないけど、前に持ってきたいなら
最初に無条件でa=bを記述
その後条件文を記述
にするかな
0639デフォルトの名無しさん
垢版 |
2020/02/13(木) 20:16:27.98ID:Ure0FzdD
ちなみにそんなことよりも、自分がレビューするとしたら
cが0でbが1の時は本当にa=zでいいのかとかが不安になるわ
0640デフォルトの名無しさん
垢版 |
2020/02/13(木) 21:36:32.33ID:r7bSHOfr
>>636
通常ケースと通常でないケースという認識なんであれば
3つを並列に書くんじゃなくガード節を使ったりして通常ケースとそれ以外のケースを分離する

def evaluate(b, c):
____if c == 0:
________return z
____if b == 1:
________return y
____return b
0644デフォルトの名無しさん
垢版 |
2020/02/13(木) 23:45:35.00ID:l+IDZGdn
まあ変数の真名と役割をコメントしてくれないと可読性の議論は出来ないよね
順番とか記述方法云々よりそっちが先
0645636
垢版 |
2020/02/13(木) 23:51:12.83ID:qvECNN2e
>>638
条件が変わったら上書きしていくのもアリなんですね
ありがとうございます
説明へtsくそですいません・・・

>>640
ありがとうございます
こんな方法あるんですね

>>641
コメントでの説明がへたくそすぎて
後で過去の自分を殴りたくなることが多いですorz
0646デフォルトの名無しさん
垢版 |
2020/02/14(金) 13:14:33.56ID:a5iC3cHy
>>636
カルノー図を覚えろ
0647デフォルトの名無しさん
垢版 |
2020/02/14(金) 14:54:01.70ID:/S4vU3l9
mac os 10.11.6
python 3.7.4

https://ideone.com/Mkhw9S
ターミナルから上のスクリプトを実行すると以下のようなエラーがおきます。
VScodeから実行した場合は問題なく実行されます。
Non-UTF-8 code starting with '¥xe6' in file test2.py on line 2, but no encoding declared;

https://ideone.com/D9Fkym
上のスクリプトはターミナルからも実行できます。
(リストの文字列の数のみの違いです)

以前はこんな感じのエラーは起きなかったのですが
原因がわかる方おられますか?
0648647
垢版 |
2020/02/14(金) 14:59:14.12ID:/S4vU3l9
自己レスです。
# coding: UTF-8を入れたらターミナルからも実行できましたが、
なぜリストの内容数とVScodeからだと問題無いのかがわかりません。
0649デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:27:13.81ID:WtuYdkw5
atomic bomb
0650デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:34:47.45ID:+9NDg3r6
「python non-utf-8 code starting with ' xe6'」で検索!

どうせ、文字コードが異なるとか?
BOM 無しUTF-8 で保存すれば?

漏れは、Windows 10, VSCode で、Ruby, JavaScript などを使うけど、
すべてのファイルを、BOM 無しUTF-8 だけにしている!
0651647
垢版 |
2020/02/14(金) 15:39:07.65ID:/S4vU3l9
>>650
上下とも同じエンコーディング(BOM 無しUTF-8 )で保存しています。
リスト内の文字列は全て同じ文字列の繰り返しで、2種類のスクリプトは要素数のみの違いです。
0652デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:40:45.69ID:WtuYdkw5
# coding: UTF-8 書いてなかったんだろ
0653デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:42:19.46ID:WtuYdkw5
>>6
0654647
垢版 |
2020/02/14(金) 15:52:33.27ID:/S4vU3l9
>>652
>>648で書いたように、# coding: UTF-8は入れてなかったのですが、
知りたいのは、以下の2点の理由です。
1.VScodeだと問題なく実行できる
2.リスト要素数の違いによるエラーの有無
0655デフォルトの名無しさん
垢版 |
2020/02/14(金) 15:57:16.26ID:WtuYdkw5
sys.getdefaultencoding() みろ
0656647
垢版 |
2020/02/14(金) 16:01:14.20ID:/S4vU3l9
>>> sys.getdefaultencoding()
'utf-8'
0658647
垢版 |
2020/02/14(金) 16:07:55.64ID:/S4vU3l9
>>657
単にマウント取りたいだけなら返信不要です
0659650
垢版 |
2020/02/14(金) 17:08:51.51ID:+9NDg3r6
>>654
VSCode では、Microsoft がPython の拡張機能も作っているし、
設定ファイルにでも、UTF-8 で起動するように書いてあるのだろう

一般的には、IDE などの統合開発環境は、親切
0660デフォルトの名無しさん
垢版 |
2020/02/14(金) 17:19:37.05ID:EOtBZfN8
>>654
原因はバグ
対処は改行して1行のバイト数を減らすか
明示的にencoding指定をファイルの先頭に記述するか
https://bugs.python.org/issue34979

VSCodeで実行できるのは>>659の書いてる通り何か設定してるからだと思われる
俺の環境ではVSCodeでも同じエラーが出る
0661647
垢版 |
2020/02/14(金) 17:21:58.26ID:/S4vU3l9
>>659
>>660
ありがとうございます。すっきりしました。
バグですか。確かに配列内容を分割しただけでエラーが消えたりしてたので悩みました。
0662デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:07:56.62ID:+2T2g9zy
要領悪いやつ
大人しくutf8宣言しときゃ動くんだからそうしろよ
お前なんかがvscodeのバグ発見したからって何になるんだ
時間のムダ
0663デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:13:36.39ID:x4GfXJj6
単に知的好奇心だろ
おまえみたいなIT土方にはわからんか
0664デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:39:14.54ID:+2T2g9zy
全く知的ではない
ただの"何でvscodeだと上手くいかないのムキー"でしかない
その証拠にバグと分かったらもう投げ出してる
0665デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:44:06.77ID:x4GfXJj6
それがなんで証拠なんやろうか
バクについてまでは興味ないってだけやろうに
土方が偉そうに評価するな
0666デフォルトの名無しさん
垢版 |
2020/02/14(金) 19:56:12.57ID:+2T2g9zy
バグだったら仕方ない、
自分のせいじゃない、
よかったよかったあースッキリ。

どこに知的要素が存在するのか
0667デフォルトの名無しさん
垢版 |
2020/02/14(金) 20:00:15.70ID:x4GfXJj6
知的好奇心のない奴は動けばいいやでuft8宣言して終わりだろうな
0668650
垢版 |
2020/02/14(金) 20:19:25.00ID:+9NDg3r6
プログラマーが日本語のバグで時間を使うのは、馬鹿らしい。
Python は、日本語対応をやってない

Ruby なら、Cookpad・マネーフォワード・Ruby 開発とか、
日本人のメンテナーが、一杯いる
0669デフォルトの名無しさん
垢版 |
2020/02/14(金) 20:23:20.50ID:+2T2g9zy
>>667
だからそれで終わりでよい
知的な意味もなく自己満足のためにムダな時間費やす無能よりも幾らか使えると言っているのだ
0670デフォルトの名無しさん
垢版 |
2020/02/14(金) 20:26:32.77ID:x4GfXJj6
IT土方は動けばいいだけだもんな
0671デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:24:05.85ID:GcRD3KfQ
True=1,False=0じゃなくて
IFで何行も書かなくても
Trueの時は1をかけて、Falseの時はマイナス1を掛ける方法ってありますか?
0672デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:33:48.85ID:NYbvjz3Y
普通は
*(1 if hoge else 0)
だろうな
hoge*1でもできるっぽいけど
0673デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:50:26.77ID:GcRD3KfQ
>>672
*(1 if hoge else -1)
で行けるんですね
ありがとうございます!
0674デフォルトの名無しさん
垢版 |
2020/02/15(土) 00:52:40.95ID:NYbvjz3Y
よく読んでなくてすまん
0675デフォルトの名無しさん
垢版 |
2020/02/15(土) 04:34:54.53ID:CrxoAXqf
>>671
hoge*2-1
0676デフォルトの名無しさん
垢版 |
2020/02/15(土) 07:03:08.25ID:1M8DJTak
>>675
Basicは三項演算子なかったからその手のコードよく見かけたな
Trueが-1だから-2*hoge-1とかにしないと駄目だけど
0679デフォルトの名無しさん
垢版 |
2020/02/15(土) 12:23:37.16ID:GcRD3KfQ
みなさん色々ありがとうございます
>>677
*[-1,1][hoge]なら短いし
1か−1を掛けてるのが一目でわかっていいですね。
0681デフォルトの名無しさん
垢版 |
2020/02/15(土) 12:54:17.21ID:OeWG4QMt
どーでもよくて草
0682デフォルトの名無しさん
垢版 |
2020/02/15(土) 13:02:49.71ID:GcRD3KfQ
>>680
>>671で-1か1を掛けたいと質問したので
*マークをつけてくれたんだと思います
0685デフォルトの名無しさん
垢版 |
2020/02/15(土) 14:48:11.69ID:cTwFsuY/
x * [-1, 1][hoge]ってことだと思うが
流石にこれはない

評価する変数にboolしか入らない状況なら
x * (hoge or -1) でいいんじゃないかと思うが
これだと何のためにやってるかわかりにくいので
通常のif else使って関数化したほうがいい気もする
0686デフォルトの名無しさん
垢版 |
2020/02/15(土) 22:11:51.52ID:L3zGf310
>>684-685
俺もそう思う。
元質問をしたPythonでの三項演算の表記を知らないレベルの人は
x * [-1, 1][hoge]やx * (hoge or -1) を嬉々として・どや顔して
使いそうだが
0687デフォルトの名無しさん
垢版 |
2020/02/15(土) 22:40:28.65ID:cl/r4jK1
[-1, 1][hoge]は0,1以外弾くから結構間違いが入り込みにくい実装なんだけどね。

まぁ、普通は三項演算子使うだろうな。
0688デフォルトの名無しさん
垢版 |
2020/02/15(土) 23:35:32.08ID:GcRD3KfQ
質問ですが
def内で使う変数名を考えるのが面倒だし
後でどれがどれか分かるように
引数と同じ変数名にしてますが
問題ないですか???

グローバル変数はほぼ使ってないです。
0689デフォルトの名無しさん
垢版 |
2020/02/15(土) 23:49:52.90ID:robjZmR7
def addnumbers(a, b):
return a+b

a=10
b=5
print(addnumbers(a, b))

みたいな話?
なら別に問題はないけど。

引数じゃなくて関数内で宣言するローカル変数の話なら、頭に_をつけたりして外の環境をマスクしないようにしたほうがお行儀がいいけど。
0690デフォルトの名無しさん
垢版 |
2020/02/16(日) 00:44:18.75ID:S0ZkinLG
>>689
そんな感じです
ありがとうございます
解説とかだと大抵名前変えてあるので
変えた方がいいのかと思い込んでいました
0691デフォルトの名無しさん
垢版 |
2020/02/16(日) 02:28:25.33ID:Q6srCXr2
>>690
動くか動かないという意味では動くから、同じであっても問題はない、というだけだぞ。
意味的に分かりやすく適切な名前をつけるべき。
0692デフォルトの名無しさん
垢版 |
2020/02/16(日) 09:01:43.73ID:17VZ7Cpd
>>690
> 変数名を考えるのが面倒
これは2年後にタイムマシンで過去の自分をブン殴りたくなるまでなおらんとおもうが
なおせるものなら早めになおしとけ

> 後でどれがどれか分かるように
この発想はただしい。
で、どうしたらいいのかについては>>691が書いてくれてる

つまり

考えるのが面倒だから、って理由で
引数の名前をaだのbだのにしておくのはやめておけ
0693デフォルトの名無しさん
垢版 |
2020/02/16(日) 09:35:32.63ID:xJ91WGrf
名前を考える時間がもったいない
スクリプト言語はいかに早く作り早く動かすかが命
一度動けば後は野となれ山となれ
0694デフォルトの名無しさん
垢版 |
2020/02/16(日) 10:19:55.17ID:1yJgvEz2
どうしても名前を考えるのがめんどくさいならば
注釈で変数の意味を書いておくという方法もある
典型的な変数の値も書いておくとなおよい
0695デフォルトの名無しさん
垢版 |
2020/02/16(日) 10:26:00.98ID:6foDUZHe
関数の分割と命名が適切ならローカル変数なんて全部一文字でいいよ
そんなことで読めなくなるような長い関数を書くな
0698デフォルトの名無しさん
垢版 |
2020/02/16(日) 11:33:53.98ID:vdOGaRiC
Goはむしろ一文字変数と引数を推奨してるね
コードが十分に構造化されていれば、長い変数名はノイズになって逆に読みにくいってのは一理ある
0700デフォルトの名無しさん
垢版 |
2020/02/16(日) 12:24:10.94ID:5YcuBhUR
689だけど無次元数を扱う場合はa,bとかm,nとかを使うな
ファイルディスクリプタならfd
ループインデックスはi,j,kとかix,iy
それ以外は英単語2〜3個を繋いで変数名にして
PandasのDataFrameやNumpy Arrayみたいに実質型のないものはアプリケーションハンガリアン
ローカル変数だと頭にアンダースコアをつける感じだな
0701デフォルトの名無しさん
垢版 |
2020/02/16(日) 12:26:02.52ID:uPTaqoVN
雑魚はせめてリーダブルコードでも読んでからコメントして
0704688
垢版 |
2020/02/16(日) 13:04:49.24ID:S0ZkinLG
ローカル変数名ですけど

例えば名古屋から広島の距離を計算するとして

def kyori(nagoya,hirosima)
___length = nagoya-hirosima
___return length


#東京からの距離
tokyo = 0
nagoya = 350
kyoto = 457
hirosima = 768

length = kyori()

っていう感じですけど
意味があって分かり易いだと
一文字だと長さはまだlで分かり易いと思うんですが
defが増えていくったときに
それぞれのdef内でもまだ個性的な名前を付けた方がいいのですか???

length_kyoto_hirosimaとか???
0705デフォルトの名無しさん
垢版 |
2020/02/16(日) 13:13:22.41ID:xJ91WGrf
>>704
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ
0706デフォルトの名無しさん
垢版 |
2020/02/16(日) 13:19:18.43ID:vdOGaRiC
>>704
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる
0707デフォルトの名無しさん
垢版 |
2020/02/16(日) 13:24:20.27ID:17VZ7Cpd
>>704
そのdefのはっそうは、正直よろしくないとおもう。

使いまわせないだろw

def kyori(from, to):
にすれば、使いまわせるだろw

でもって、
引数のあとの「:」を忘れるな

(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。
0708デフォルトの名無しさん
垢版 |
2020/02/16(日) 13:26:21.56ID:17VZ7Cpd
>>707修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか
0709デフォルトの名無しさん
垢版 |
2020/02/16(日) 14:30:21.73ID:iNVxJNOu
関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?

>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。
0710デフォルトの名無しさん
垢版 |
2020/02/16(日) 14:33:43.62ID:E60C1LrQ
namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます?
0712デフォルトの名無しさん
垢版 |
2020/02/16(日) 15:03:54.06ID:17VZ7Cpd
>>709
なるほど
函数定義って言えばいいのか
なるほどなっとく

口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。
0713デフォルトの名無しさん
垢版 |
2020/02/16(日) 15:08:15.16ID:17VZ7Cpd
>>710
綴りちがっとる
×tupple
〇tuple

from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当)
0714688
垢版 |
2020/02/16(日) 16:38:20.27ID:S0ZkinLG
>>705
趣味でやってるんですが
ほぼほぼ作ったのが後々改造できなくて
投げ捨てるはめになってるので
何とかしたくてって感じです

>>706
趣味なので自然と身につかないのです・・・

>>707
具体例ありがとうございます
気を付けます
0715デフォルトの名無しさん
垢版 |
2020/02/16(日) 16:53:49.03ID:17VZ7Cpd
>>714
> ほぼほぼ作ったのが後々改造できなくて
> 投げ捨てるはめになってる
www
わかるwwwww始めたばっかりの頃のあるあるwwwwwわかるwwwww


オライリーの
リーダブルコード
  ISBN-10: 4873115655
  ISBN-13: 978-4873115658
(あるいは
ビューティフルコード
  ISBN-10: 4873113636
  ISBN-13: 978-4873113630 )

買って読んでみたらー
中古でも安くなってないだけのことはあるでよー
0716デフォルトの名無しさん
垢版 |
2020/02/16(日) 17:07:16.29ID:05WBirzM
オブジェクトがコピーなのか現物なのか、調べるにはどうすればよいですか。または全て現物で渡すには?

1. クラスの初期化時に引数として渡してselfに格納
2.クラスのgetterメソッド返り値としてselfの値を返却する
3.手順2で得られた値を演算したものをクラスのsetterメソッド引数として渡してselfに再格納

1〜3まで全て現物でいてほしいのですが、どこかでコピーになってしまうようで同期しません。
0717デフォルトの名無しさん
垢版 |
2020/02/16(日) 17:11:30.05ID:05WBirzM
716、自分でも分かりにくいので追記です、

e = 1
a = Class1(e)
b = Class2(e)

tmp = a.getE()
tmp += 1
a.setE(tmp)

b.print()

このprintの結果が、2となって欲しいのです。
0718デフォルトの名無しさん
垢版 |
2020/02/16(日) 17:18:43.25ID:17VZ7Cpd
>>716-717
書き込む前に>>1

>オブジェクトがコピーなのか現物なのか、調べるには
id(オブジェクト)
↑これがオリジナルとコピーでは異なるので確認汁
0719デフォルトの名無しさん
垢版 |
2020/02/16(日) 17:44:48.94ID:05WBirzM
>>718
ありがとうございます。
原因わかりました。
716で書いてるeが実際はイミュータブルだったので、書き換える際にreplace呼んでid変わってたみたいです。
eを自作クラスに変えたら動きました。ありがとう
0720デフォルトの名無しさん
垢版 |
2020/02/16(日) 19:45:43.91ID:w90VPIvZ
リーダブルコードでググったら英語版はタダで見れるのか
苦Cみたいなもんか?
0721688
垢版 |
2020/02/16(日) 19:51:59.66ID:S0ZkinLG
>>715
調べてみます
ありがとうございます
0722デフォルトの名無しさん
垢版 |
2020/02/16(日) 20:00:33.27ID:S0ZkinLG
このクラスの########から########の間を
書き換えて別の子クラスを作る方法を教えてもらえませんか?
リターンはなくて条件によってどんどんpを書き換えていく感じの内容です

class coner:
__def __init__(self):
____self.angle = 0.0
____self.width = 0.0
#以下self.が沢山

__def tijimi(self):
#####################################
____if 0 <= self.angle < math.pi/3:
______#計算式色々
______p = l

____if self.angle == 0 :
______#計算式色々
______p=l
____#以下ifでangleを調べてpを上書きしていくif分沢山
#####################################################

____if self.width == 50:
______#計算式色々
______p=l
____if self.width == 80:
______#計算式色々
______p=l
0724デフォルトの名無しさん
垢版 |
2020/02/16(日) 21:14:42.57ID:iNVxJNOu
>>722
>書き換えて別の子クラスを作る方法
継承してオーバーライドすること言ってるのかな?

それと
条件によってpをどんどん書き換えていくような仕様は
一般的にはものすごく悪い設計
バグりやすいしテストもしにくいので避けたほうがいい
0725デフォルトの名無しさん
垢版 |
2020/02/16(日) 21:47:49.06ID:17VZ7Cpd
>>720
>英語版はタダで見れる
なん・・・だと・・・・

まあいいや
日本語版書籍には訳者によるおまけがついてるらしいから・・・
0726722
垢版 |
2020/02/16(日) 22:05:37.52ID:S0ZkinLG
>>724
たぶん、継承オーバーライドの事だと思います
よくわかってなくてすいません
pを書き換えていくのを直します
ありがとうございます

>>723
ありがとうございます
やってみます
0727デフォルトの名無しさん
垢版 |
2020/02/16(日) 22:59:10.36ID:5EL9p8ON
Ruby なら、B はA から派生したクラスで、
派生クラスで、親クラスの同名のメソッドを上書きする(override)。
@ はインスタンス変数

class A
def f( ) @x = 1 end
end

class B < A
def f( ) @x = 2 end
end

p A.new.f #=> 1
p B.new.f #=> 2
0728デフォルトの名無しさん
垢版 |
2020/02/17(月) 00:33:34.29ID:VGvKWI+b
リーダブルコードもコードコンプリートも読んだ上で700書いてるけどねえ
PEP8とかもそうだけど、知恵とルールを混同してしまう人が結構いる
0730デフォルトの名無しさん
垢版 |
2020/02/17(月) 05:56:39.51ID:9Byn+CCQ
アンカも打てないのかよ
いちいち自分で辿らせるとかどんだけ構って欲しいんだ
0732デフォルトの名無しさん
垢版 |
2020/02/17(月) 07:47:39.40ID:wxeqwMT5
裏表紙のない本
ドアのないトイレ
キャップのないペットボトル
0733デフォルトの名無しさん
垢版 |
2020/02/17(月) 11:57:31.26ID:xV6ZEvHF
Macなんですが元々入ってるPython2系をpython2で呼び出して
Python3系をpythonコマンドで呼び出す方法ってありませんか?
alias python="python3"
を設定してもpython2が使えなくなる代替案を探してる最中です
0734デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:37:38.00ID:m/x7HUx7
>>729
読んであれならヤバイ級だよなあ
0735デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:38:09.76ID:m/x7HUx7
エイリアスにフルパス入れちまえよ
0736デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:53:44.11ID:xV6ZEvHF
>>735
エイリアスで置き換えすることばかり考えてました、ありがとうございます
m(_ _)m
0738デフォルトの名無しさん
垢版 |
2020/02/17(月) 13:31:47.59ID:y136Nw0W
>>733
pipだったり他のプログラムが使ってるpythonの依存ぶっ壊れるようなやり方すぎる。
dockeで隔離するか、pyenv, anaconda 使うなりする方が問題起きたときに復帰しやすいと思われる。
0741デフォルトの名無しさん
垢版 |
2020/02/17(月) 17:29:32.07ID:91EB+qlc
>>737
Rubyはスレチだから
0742デフォルトの名無しさん
垢版 |
2020/02/17(月) 19:14:02.33ID:A9t7x7q2
デフォルトの設定を変えたら、それを使っている無数のアプリがバグルw

OS の仕組みを学べ!
0743デフォルトの名無しさん
垢版 |
2020/02/17(月) 20:02:52.96ID:4yysNtzR
呼ぶときはPython2ならpythonで、Python3はpyで呼べるようになってるだろ
方針としてpythonで呼ばれるのはPython2のままにするっていうのがあるし
0746デフォルトの名無しさん
垢版 |
2020/02/18(火) 00:00:11.54ID:o6M8r8f5
import numpy as np
a = np.array([1,2,3])
print(a.shape)

こうやると、
(3,)
と表示されますけど
この3の後ろにあるカンマは
どゆ意味なんでしょう?
不必要としか思えないのですが?
0748デフォルトの名無しさん
垢版 |
2020/02/18(火) 00:17:31.22ID:o6M8r8f5
>>747
ありがとうございます。
型を比べると(3)はint、(3,)はtupleですね。
np.arrayのshapeをtuple型の同じ型にする、
ということですね?
0749デフォルトの名無しさん
垢版 |
2020/02/18(火) 13:43:57.54ID:ZbgU3Gim
全然違うω
0750デフォルトの名無しさん
垢版 |
2020/02/18(火) 13:54:29.04ID:2AC9Ct1n
>np.arrayのshapeをtuple型の同じ型にする、
>ということですね?
日本語がおかしい、もしくは理解の仕方がおかしい。
「np.array の shape を print で確認したら、tuple 型で (3,) だった。」
くらいは書いてほしい。
0751デフォルトの名無しさん
垢版 |
2020/02/18(火) 17:44:44.88ID:NpZig/vi
>>748
何が言いたいのかよくわからない
何と何が同じなの?
0753デフォルトの名無しさん
垢版 |
2020/02/18(火) 22:11:49.35ID:kXXzWqPh
>>752
現行このスレの上の方か、前スレで
pipで既に入ってるものを全部txtに吐かせて
それを新しいPCにコピーして
新しいPCのコマンドプロンプトからpipに食べさせる方法レスした記憶
0754デフォルトの名無しさん
垢版 |
2020/02/18(火) 22:25:08.60ID:Sq+szhyd
>>752
コマンドをバッチファイルに記録しておくのおすすめ
何を入れたのかの備忘録にもなるし、クリーンインストール後にも一気に復帰可能
0755デフォルトの名無しさん
垢版 |
2020/02/18(火) 22:27:06.73ID:I7Q3zK/c
あーそういやエクセルにpip一覧作ってコピペって入れてたな
あれバッチにすればよかったのか!
0756デフォルトの名無しさん
垢版 |
2020/02/19(水) 00:22:18.64ID:67Zh1tMt
>>753で書いてた過去のレスの、要約したったど

てきとうな階層でコマンドプロンプト起動して
pip freeze > requirements.txt

できたtxtを次のPCの
これまたてきとうな階層に入れ、
そこからコマンドプロンプト起動して
pip install -r requirements.txt
0757デフォルトの名無しさん
垢版 |
2020/02/19(水) 11:51:55.61ID:cGULNOoW
そしてcondaに感染
0760デフォルトの名無しさん
垢版 |
2020/02/19(水) 19:01:50.35ID:Um90NQYB
Ruby なら、StandardError を継承して、カスタム例外クラスを作るだけ!

class MyError < StandardError
def initialize( msg="引数なし" )
super
end
end

raise MyError #=> 引数なし (MyError)

raise MyError, "引数あり" #=> 引数あり (MyError)
0761デフォルトの名無しさん
垢版 |
2020/02/19(水) 19:32:54.08ID:TvNfUAFk
Exceptionを継承してるのだから何もしてないわけではない
既存の例外クラスをそのまま使わず新たな例外クラスを作ればexcept節で場合分けしやすくなる
0763デフォルトの名無しさん
垢版 |
2020/02/19(水) 23:17:38.46ID:DTFko2h2
質問が大雑把すぎて答えてもらえない気がするんですが…
>>758に関してダメ元で聞きたいです。
>>758のコードをPython3.7で実行するとこんな感じのエラーが出るのですが何をどうしたら直せますか…?
いくつもエラーが出ているんですが、1つだけでも良いので…教えてもらえると嬉しいです…。
どのエラーも直し方がわからないです。。

Traceback (most recent call last):
File "C:\Users\username\Desktop\test.py", line 238, in <module>
mux = USBMux()
File "C:\Users\username\Desktop\test.py", line 222, in __init__
self.listener.listen()
File "C:\Users\username\Desktop\test.py", line 191, in listen
ret = self._exchange(self.proto.TYPE_LISTEN)
File "C:\Users\username\Desktop\test.py", line 184, in _exchange
self.proto.sendpacket(req, mytag, payload)
File "C:\Users\username\Desktop\test.py", line 101, in sendpacket
data = struct.pack("IIII", length, self.VERSION, req, tag) + payload
TypeError: can't concat str to bytes
0764デフォルトの名無しさん
垢版 |
2020/02/19(水) 23:53:08.56ID:GM7mImOk
>>763
いくつもエラーが出てるんじゃなくて
エラー内容と呼び出し履歴が表示されてるだけ

101行目ので
「TypeError: can't concat str to bytes」ってエラーが発生してる
python2用のコード
0765デフォルトの名無しさん
垢版 |
2020/02/20(木) 00:05:49.70ID:rl2y9G0y
よく見たら11年以上前のコードやん
個人的にどういう経緯で辿り着いたのか気になる
0766デフォルトの名無しさん
垢版 |
2020/02/20(木) 00:35:27.77ID:x93hW6cn
>>764
ありがとうございます…!!
101行目のエラーさえ潰せれば解決なんですね…!!

>>765
iOSデバイスとPC上のPythonをUSB/lightningケーブルで接続して通信をしようと思ったのですが
それらしき情報がコレしか見つからなかったので辿り着きました
0767デフォルトの名無しさん
垢版 |
2020/02/20(木) 12:40:33.14ID:sbHTvmgo
不潔ゾーンからお帰りください
0768デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:02:46.88ID:x3GQj6xQ
インスタンス変数についての質問です
他言語(c/c++/c#)から入った人間の例に漏れずself/clsって何なの…となりました
で色々見ているのですが1番大きな疑問はインスタンス変数です
サンプル見ると大体コンストラクタでself.x=とかやってますがこのxはどこで定義されているのですか?
仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
それに関数で新しく定義出来てしまうならインスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
この辺りの解説を探しても見つけられませんでした
ご教授頂ければ幸いです
0769デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:35:03.06ID:AkYRUnXu
コンストラクタでself.x=とやればそこで定義される
0770デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:35:43.13ID:RiyafmFC
>>768
>インスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
オブジェクトがどういうメンバを持つかは静的じゃなく動的
インスタンス化後にインスタンス変数やメソッドを追加できる
クラスはディクショナリみたいなものだと思っておけばいいよ
https://ideone.com/aAGA0y

>仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
メソッドの第1引数にレシーバのオブジェクトが渡されるので
それを`self`という名前の引数で受けてメソッド内では渡されたレシーバを使って
`self.x`とかでインスタンス変数を参照してるのでスコープ外ではない
ちなみにselfは慣習として使われてる変数名であってhogeとかに変えても問題なく動く
0771デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:35:53.10ID:AkYRUnXu
あとCの経験があるならPyObjectについて調べたら理解が進むはず
0772デフォルトの名無しさん
垢版 |
2020/02/21(金) 17:12:06.44ID:QP8p1GF2
仮想通貨のbotを作りたいんだけど、
AWSのCloud9で、
pythonのプログラムかいて動かす場合、
ブラウザー閉じたり、PCの電源切ったりしても、
プログラムはずっと動くの?
0773デフォルトの名無しさん
垢版 |
2020/02/21(金) 17:31:14.15ID:2TMdipPT
>>768
Ruby では、デフォルトでインスタンス変数は、private だから、
アクセサー(attr_accessor)で宣言しないと、クラス外部からアクセスできない

class A
attr_accessor :x
def initialize
@x = 1
end
end

p A.new.x #=> 1
0776デフォルトの名無しさん
垢版 |
2020/02/21(金) 20:31:58.13ID:QP8p1GF2
>>775
そうですかぁ
停電とかPCの故障で停止して、
大損したらまずいと思ってたから、
AWSでずっと動かしてみる、
クラウドなら停止しないで安心ですね。
0778デフォルトの名無しさん
垢版 |
2020/02/21(金) 21:52:48.61ID:g+Ne8Q54
>>776
そのレベルなら停電の心配するより自分のプログラムのバグで損失出す可能性の方がはるかに高いだろう。
0779772
垢版 |
2020/02/21(金) 23:27:12.20ID:QP8p1GF2
Cloud9にPyCarmで書いてたプログラムを移して、
AWSで動かしてみました、
ブラウザー閉じても、無事に自動で動いてるみたい、
もう、20円くらい稼げた、
これで、寝ているだけで朝起きたらお金が増えてるかな、
AWSは750時間分無料で使えるみたいなので、
しばらくこのまま動かしてみます。
0782デフォルトの名無しさん
垢版 |
2020/02/22(土) 08:40:23.32ID:6wlvfoPI
>>770
参考になりました
https://stackoverflow.com/questions/12569018/why-is-adding-attributes-to-an-already-instantiated-object-allowed
検索して見つけたんですがここでもクラスはディクショナリの糖衣構文なんて書いてますね
いやしかしそうすると同じ型のオブジェクトなのにその後の操作によって違うメンバを持ってたりするわけですか
えぇ……型適当すぎませんかpython……

selfに関しては自分自身を参照型なりポインタなりで関数内に渡していじくってると考えればいいんですかね
なぜthisにしない……そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
0783デフォルトの名無しさん
垢版 |
2020/02/22(土) 09:16:04.11ID:/f58S0oT
>>782
言語が異なれば用語や概念は異なるのだから、自分の母国語に無理に当てはめて考えようとすると行き詰まるぞ。それぞれの言語で意図やポリシーがあってその言語の仕様が作られているのだから、違う考えに基づくものだとして違いを受け入れ、理解しようとしてみなよ。
0784772
垢版 |
2020/02/22(土) 09:50:55.45ID:ltYpm+bh
動かしたまま寝て朝見たら、
無事に動き続けてました、
45円くらい利益出たから、
半日もしないのに資金の1.2%程増えた、
ほんとに、寝ているだけで朝起きたらお金が増えてるw
クラウド便利ですね、ありがとうございます。
0785デフォルトの名無しさん
垢版 |
2020/02/22(土) 10:10:20.27ID:hsz3eTB9
>>782
嫌なら使わなくていいよ
世界で2番目に使われてる言語は諦めて田舎で畑でも耕してな
0786デフォルトの名無しさん
垢版 |
2020/02/22(土) 12:14:02.69ID:4QVNajON
>>782
selfに関してはC++やっている奴なら、非明示でC++のメンバ関数にもPythonのself
のようなもの(this ポンタ)が渡されると知っているんじゃないのか?
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
>メンバ関数には this ポンタが隠し引数として渡されるので、普通の関数と同じようには扱えないのです
0787デフォルトの名無しさん
垢版 |
2020/02/22(土) 13:22:04.84ID:WVugcdbO
>>782
Python開発した当時にthisを使ってたのはC++くらいだしね。
SmalltalkやObjective-CはselfだしJavaやJavaScriptはまだ出てなかった。
0788デフォルトの名無しさん
垢版 |
2020/02/22(土) 13:45:22.33ID:qQaAG+8d
レシーバーは、Ruby ではself、jQuery ではthis で、
どちらも引数で渡さないでも使えるように、実装で頑張った

Rubyのインスタンス変数には、@ を付ける。
@x = 1

Ruby のself は、文脈依存。
モジュール内で、クラスの外では、Module

module M
p self.class #=> Module
class C
p self.class #=> Class
end
end

M::C.new
0789デフォルトの名無しさん
垢版 |
2020/02/22(土) 13:46:07.97ID:BwPLw7gM
なぜthisにしない……って
そりゃCやC++で開発するんだから被るthisは回避するじゃん
C++で使ってないselfになるのは順当

Cで作る→C++に移行 との可能性はわずかながらあり
0790デフォルトの名無しさん
垢版 |
2020/02/22(土) 15:28:23.09ID:8UzPa+1r
プログラム未経験のまったくのど素人です

以下のコードを実行しても何も起こりません
なぜか逆スラッシュが\になってしまい、それが原因でしょうか?

長いので二つにわけます

def hangman(word):
wrong = 0
stages = ["",
"_______ ",
"| ",
"| | ",
"| 0 ",
"| / | | ",
"| / | ",
"| "
]
rletters = list(word)
board = ["_"] * len(word)
win = False
print("ハングマンへようこそ !")
0791790
垢版 |
2020/02/22(土) 15:30:30.55ID:8UzPa+1r
while wrong < len(stages) -1:
print("\n")
msg = "1文字を予測してね"
char = input(msg)
if char in rletters:
cind = rletters.index(char)
board[cind] = char
rletters[cind] = "$"
else:
wrong += 1
print(" ".join(board))
e = wrong + 1
print("\n".join(stages[0:e]))
if "_" not in board:
print("あなたの勝ち !")
print(" ".join(board))
win = true
       break

如何でしょう?
0792デフォルトの名無しさん
垢版 |
2020/02/22(土) 15:40:17.92ID:2qBDSHyD
一方うbyはklassを使った
0795デフォルトの名無しさん
垢版 |
2020/02/22(土) 16:18:17.21ID:nfgptzfk
>>782
>えぇ……型適当すぎませんかpython……
Pythonに限らずJSやRubyなんかのOOをサポートしてる動的言語はだいたい同じ
クラスやオブジェクトのベースはディクショナリ

>そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
Cやシェルスクリプトと同じでレガシーな言語だからイケてない部分もたくさんある
そういうものだと思って受け止めるしかない
開発者が使いやすいように積極的に機能追加していくような言語ではないからね

Stackoverflowとか見てもわかるけど
Pythonコミュニティは割と言語機能に対するコンプレックス強いから
イケてないところ指摘すると逆ギレされやすいから気をつけて
0797796
垢版 |
2020/02/22(土) 16:51:45.07ID:qQaAG+8d
>>910-911
ちゃんと動く

Python は、スペースでインデントしないといけないのか。
タブでは動かない
0799796
垢版 |
2020/02/22(土) 17:36:28.82ID:qQaAG+8d
スペースとタブが混在したからかな?

漏れは、動かなかったけど
0801デフォルトの名無しさん
垢版 |
2020/02/22(土) 18:39:04.76ID:WVugcdbO
混在は別に問題ないぞ?linterで警告されるかもしれんが。
インデントに一貫性がない場合はエラーになる。
0802デフォルトの名無しさん
垢版 |
2020/02/22(土) 18:42:52.13ID:lw7HhssO
言語機能に対するコンプレックスというか、
「○○の言語にある◽︎◽︎がないなんて…」と思うなら、
○○を使えばいいじゃん、としか思わないなあ。
日常的に7言語ぐらい使ってるし、経験としてはもう3言語ぐらい使えるけれど、
Pythonで書くとメリットがあるものしかPythonで書かないから、他の言語の構文がどうとかかなりどうでもいいな。
ブロックスコープがあるといいなと思うことはあるけど。
0803デフォルトの名無しさん
垢版 |
2020/02/22(土) 18:48:19.79ID:/u2JjX4w
>>790
これ、関数定義だけのように見えるんだけど
それなら実行しても何も起きないのは当然だよね
0804796
垢版 |
2020/02/22(土) 18:57:19.31ID:qQaAG+8d
そのスクリプトの下の方に、こう書いておいて、
「python3 script.py abc」みたいに実行すればよい

全角空白で、インデントしたけど

if __name__ == "__main__":
 args = sys.argv

 hangman( args[ 1 ] )
0805796
垢版 |
2020/02/22(土) 18:59:26.46ID:qQaAG+8d
>>804
のスクリプトの冒頭に、import sys

も必要
0806デフォルトの名無しさん
垢版 |
2020/02/22(土) 20:38:45.74ID:NV/PY/Op
>>801
> 混在は別に問題ないぞ?
あるだろ
なんのためにインデントでブロック表現するようにしたと思ってるんだよ
0807デフォルトの名無しさん
垢版 |
2020/02/22(土) 21:00:17.41ID:WVugcdbO
インデントにスペースとタブを混在しても問題ないと言っているんだが話理解してるか?
0808790
垢版 |
2020/02/22(土) 21:03:41.80ID:8UzPa+1r
皆さんスレのルールを守らなかったにも関わらずレスして戴きありがとうございます
今後はルールを厳守しますのでよろしくお願いします

早速ご忠告どおりに試してみたいと思います

厚かまいついでにもう一つ、逆スラッシュが\に変換されてしまう理由も教えて戴ければ幸いです
0810790
垢版 |
2020/02/22(土) 21:10:51.98ID:8UzPa+1r
独学でpythonをマスターしたというコーリー・アルソフなる御仁の「独学プログラマー」って本で勉強しているんですが、
これは、とても初心者向けとはいえない入門者なので、「超初心者が初心者になるためのpython入門」という本を買い直し
ました
0811790
垢版 |
2020/02/22(土) 21:12:47.05ID:8UzPa+1r
入門者→入門書
訂正いたします
0812796
垢版 |
2020/02/22(土) 21:13:08.40ID:qQaAG+8d
逆スラッシュが、\ に割り当てられているのは、
日本語キーボードだからじゃないの?

Ruby では、改行は、\n。
\ で問題ない
0813790
垢版 |
2020/02/22(土) 21:19:59.48ID:8UzPa+1r
仰るとおり日本語キーボードを使っています
\で問題ないんですね
0815デフォルトの名無しさん
垢版 |
2020/02/22(土) 21:38:27.08ID:/f58S0oT
>>813
円記号とバックスラッシュに同じ文字コード0x5Cが割り当てられているせいで、フォントによってどちらで表示されるかが異なるがデータ上は同じ文字として扱われているから気にしなくてよい。
>>812が言ってる日本語キーボードは無関係。ついでに言うと、>>812はこのスレのタイトルに【Ruby禁止】と付けられる原因になった有名な荒しだからスルー推奨。コテはつけてないけど書き方に癖があるからすぐに見分けられるようになるよ。
0816デフォルトの名無しさん
垢版 |
2020/02/22(土) 21:44:03.11ID:WVugcdbO
>>814
流れ読めよ。エラーにならないという意味で問題ないと書いた。
推奨されない書き方だから警告されるとも書いた。
0817790
垢版 |
2020/02/22(土) 22:00:26.05ID:8UzPa+1r
解決しました!
ちゃんと動きます
最後に関数を呼び出していませんでした
お騒がせしました
0819デフォルトの名無しさん
垢版 |
2020/02/22(土) 22:17:04.65ID:WVugcdbO
>>818
面倒くさい奴だな。エラーにならないという意味で問題ないと書いたし警告が出るとも書いた。
それに何か反論するならお前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。
0820デフォルトの名無しさん
垢版 |
2020/02/22(土) 22:42:33.33ID:NV/PY/Op
>>819
> お前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。
それを書かずに問題ないとか言ったのはお前な
0822デフォルトの名無しさん
垢版 |
2020/02/22(土) 22:57:54.31ID:WVugcdbO
面倒くさいからケリつけて。

>>806
どういう意味でどう問題があると言いたいのか。

>>814
動けばいいという話じゃなくてどういう話なのか。

>>818
コンパイルが通ればOKじゃなくてどうだと言いたいのか。

ケチつけるだけで内容が無いから話が進まない。
0823デフォルトの名無しさん
垢版 |
2020/02/22(土) 23:49:21.14ID:nfgptzfk
TabError: inconsistent use of tabs and spaces in indentation
https://ideone.com/3EhNsh

インデントに一貫性がない場合ってのが「混在してる」場合の一つ
結論 =>「混在は別に問題ない」わけがない
0824デフォルトの名無しさん
垢版 |
2020/02/23(日) 00:11:39.44ID:4i+7lYMQ
しょもない流れww
0825デフォルトの名無しさん
垢版 |
2020/02/23(日) 01:30:58.93ID:0yFZuBmR
Tab、スペースインデント混在は
tabを何個のスペースにするのかわからんからエラーにしているんだろ。
Tab、スペースインデント混在の場合
スペースインデントが4スペースでtabが4スペースになるエディタでかきかきして、
で、別な人がtabを2スペースにしているエディタみたら怒るからな
0826デフォルトの名無しさん
垢版 |
2020/02/23(日) 06:17:14.29ID:wq/R6u2w
>>822
動く動かないの話に前提なしに「問題ない」と言うお前がおかしいだけ
ケリは元々ついてるぞw
0827デフォルトの名無しさん
垢版 |
2020/02/23(日) 08:55:09.18ID:SvXUu1bl
>>823
>インデントに一貫性がない場合ってのが「混在してる」場合の一つ

つまり、混在していても一貫性が保たれる限りは問題ないということなんだが。
既に>>801に書いたこと。
0831デフォルトの名無しさん
垢版 |
2020/02/23(日) 10:45:39.04ID:hiW827nh
>>830
そのコードを何の補足説明も無しに「タブとスペースが混在してるが、一貫性は保たれてる」と言うのは君だけだぞ
0832デフォルトの名無しさん
垢版 |
2020/02/23(日) 11:09:17.84ID:SvXUu1bl
結局>>801がすべてなんだが、言葉の定義にこだわっていつまでもゴネている奴は何が言いたいんだろう。
>>806のツッコミは的外れじゃなくて>>801の書き方が悪かったからだぞこのやろう」とかかね?
0833デフォルトの名無しさん
垢版 |
2020/02/23(日) 11:13:02.67ID:SvXUu1bl
>>831
タブとスペースが混在しているのは明らかだろう。インデントの一貫性を破っていないからエラーにはなっていない。
補足説明要るか?
0835デフォルトの名無しさん
垢版 |
2020/02/23(日) 11:24:54.59ID:4ldhSgPz
# マンチカン なら、833の顔面偏差値でも「動きがぐうかわ!」で済ませられるんだけどな。
0837デフォルトの名無しさん
垢版 |
2020/02/23(日) 11:38:38.07ID:4ldhSgPz
>>836
前提として必要

・[A,B,C]と、[E,F,G]は常に同じ長さでくるのか?
・Noなら、数があわないときはどうしろなのか?
0839デフォルトの名無しさん
垢版 |
2020/02/23(日) 12:04:58.04ID:4ldhSgPz
>>835 >>838
(1)の、Pythonらしいやり方については
おれ苦手でとっさに出てこないわ。
誰かよろしく。

(2)Cっぽい考え方
カラのリストを1個用意する。
カウンターを用意する。初期値は0。

forループで、どっちかのリストの長さまで
  もしエラーがおきるようなら、breakさせちまえ。
  各リストからカウンタのところの値を取り出して、テンポラリなリストをつくる。
  予め用意してあるカラのリストに、テンポラリなリストを足す
0840デフォルトの名無しさん
垢版 |
2020/02/23(日) 12:05:46.76ID:pmgC0PIY
       自称月商800万!!!マナブの収益!!
http://www.tuber-town.com/channel_detail/UCb9h8EpBlGHv9Z896fu4yeQ.html

    本物の有能な新人。 しかも無名。
http://www.tuber-town.com/channel_detail/UC7umTzIrIJq8Xh428lj0M5A.html
http://www.tuber-town.com/channel_detail/UCS8WbS0kQCbqVYLU26pMHoA.html
http://www.tuber-town.com/channel_detail/UC4T-dSpkAT8xGprFjXpBeMw.html
http://www.tuber-town.com/channel_detail/UCDPjpWErZOYsoqfeCxYTd_Q.html
http://www.tuber-town.com/channel_detail/UCIgIVRs-VrV-pkkenE5lRBQ.html
0841デフォルトの名無しさん
垢版 |
2020/02/23(日) 12:06:59.72ID:4ldhSgPz
>>839の(2)補足
「カラのリストを1個用意する。」のところで、
どっちかのリストの長さ分をもってる、中身は全部カラのリスト を作った方が、
おれ的には、なんでかしらんがうまくいきやすいと感じている。
0844デフォルトの名無しさん
垢版 |
2020/02/23(日) 12:46:42.62ID:SIYyhFz4
>>841
>>842
ありがとうございます。

質問内容について補足します。(最初からいえばよかったです。すいません。)
A,B,...G...は全て(n,n,n,1)の形をしています。(全て数値です)

[A,B,C,...] (m,n,n,n,1)
[E,F,G,...] (m,n,n,n,1)
から、
[[A,E],[B,F],[C,G]] (m,n,n,n,2)
にしたいです。

>>842さんが教えてくださったものだと、(m,2,n,n,n,1)になりました。

>>841さんの方法でやってみましたが、うまくいきませんでした…
0845デフォルトの名無しさん
垢版 |
2020/02/23(日) 13:03:41.65ID:4ldhSgPz
>>844
>(n,n,n,1)の形をしています。(全て数値です)
↑タプルじゃないの?座標かなんかなの???
0847デフォルトの名無しさん
垢版 |
2020/02/23(日) 13:43:46.84ID:Lg699LWo
Ruby では、Enumerable#zip を使うけど

p [ 1, 2, 3 ].zip( [ "a", "b", "c" ] ).to_a

出力
[[1, "a"], [2, "b"], [3, "c"]]
0852デフォルトの名無しさん
垢版 |
2020/02/23(日) 15:24:50.40ID:IlwHKqM0
無理やりエスパーすると、n=2の場合にA,B,...はすべて
 A=[[[1,2],[3,4]],[[5,6],[7,8]]]
 E=[[[8,7],[6,5]],[[4,3],[2,1]]]
の形をしていて、
 [[[[1,2],[3,4]],[[5,6],[7,8]]],...]
 [[[[8,7],[6,5]],[[4,3],[2,1]]],...]
から
 [[[[[1,8],[2,7]],[[3,6],[4,5]]],[[[5,4],[6,3]],[[7,2],[8,1]]]],...]
にしたいんじゃなかろうか。
0853デフォルトの名無しさん
垢版 |
2020/02/23(日) 15:31:36.94ID:Ofd1+MwB
np.array(zip(np.array(list_a).flatten(), np.array(list_b).flatten())).flatten().reshape(hoge,fuga)
0854デフォルトの名無しさん
垢版 |
2020/02/23(日) 18:12:37.71ID:I9CLSJWc
>>833
そのコードを見てインデントに一貫性があるとは初心者はまず思わない
コードを示した上で「インデントの一貫性」とは何かを
初心者に分かるように説明できなければ君の価値ないよ

何度レスしてもエラーメッセージに書いてる以外の言葉で説明できてないから
コイツわかってなさそうって印象を受ける
0855デフォルトの名無しさん
垢版 |
2020/02/23(日) 18:32:25.06ID:SvXUu1bl
>>801の「インデントに一貫性がない」というのは

TabError: inconsistent use of tabs and spaces in indentation

このエラーが出る状態のことを言ったつもりだが、他に解釈のしようがあるかね?
「python インデント 一貫性」とかでググればすぐ出てくるが。

いつまで「問題ない」とか「一貫性」とかの言葉だけにこだわるんだか。
0856デフォルトの名無しさん
垢版 |
2020/02/23(日) 19:20:35.92ID:ot72o1Tp
Tab SP
Tab Tab
SP SP
Tab Tab
これpythonでは同一レベルになるけどお前的には一貫性があると言うの?
0857デフォルトの名無しさん
垢版 |
2020/02/23(日) 19:53:32.77ID:/zCpM4JS
>>856
ガイジはガイジの学校で先生とお話ししてろカス
0859デフォルトの名無しさん
垢版 |
2020/02/23(日) 20:18:41.95ID:4ldhSgPz
>>850
そんなきもする

>>852
[]がいっぱいすぎてワロルwww

>>853
デフォ状態からだと、
numpyをインスコしてから、
importしないとだめじゃねそれ
0863デフォルトの名無しさん
垢版 |
2020/02/23(日) 21:11:30.09ID:4ldhSgPz
>>830
さっきまで、デジャヴュがしてすごいひっかかってたんだが
思い出したwww
まだPython2.3あたり最新安定版だった頃のド初心者おれが
まじでこんなクソコード書いてたwwwww
うはwwwwメガナツカシスwwwwww
0864デフォルトの名無しさん
垢版 |
2020/02/23(日) 22:05:12.03ID:SvXUu1bl
>>862
もともと>>801ではインデントにスペースとタブを問題ないということを説明し、ただし例外として
一貫性のない使い方(とpython処理系が判断した場合)にエラーになると補足した訳だが、
>>856はまさにそれを裏付けてくれたわけだろう。
0865デフォルトの名無しさん
垢版 |
2020/02/23(日) 22:30:36.58ID:uUFeESNP
Pythonで文字を入力させて、計算をさせたりすることは出来ますか?

例えば、
1切ると泣いてしまう食べ物は?(玉ねぎ):5点
2ニュートンと関わり深い果物は?(りんご):5点
というなぞなぞを作る時、

input1=input('切ると泣いてしまう食べ物は?')
input2=input('ニュートンと関わり深い果物は?')
.
.
.

として回答に応じて10点満点のテストを作ることは可能ですか?
0866デフォルトの名無しさん
垢版 |
2020/02/23(日) 22:37:31.79ID:0yFZuBmR
>>844のように後出しする奴の相手は、エスパー・高脳でないと駄目だよな
並みの奴は本当に求めているもの何か分からんから振り回されるだけ
後出しクレクレは、自分ファーストで他人の手間とかのことをは考えていないからな
0867デフォルトの名無しさん
垢版 |
2020/02/23(日) 22:58:37.25ID:0yFZuBmR
>>854
コミュ能力がない、相手がなんで理解してくれないのか推察できない奴とのやり取りは
並み脳力以下の奴では超手間がかかる。
こんな奴と普通(スムーズ)にやり取りできるのは高脳・エスパー
0868デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:05:50.77ID:I9CLSJWc
>>865
どの言語でもプログラミング言語と呼ばれるものであれば
文字を入力させて計算させることはできるぞ
0869デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:15:49.10ID:uUFeESNP
>>868
解答入力欄が1とか3の数字ならint()で数値変換出来るんですけど、玉ねぎを数値変換ってどうやってするのですか?
0870デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:20:16.80ID:I9CLSJWc
>>867
コミュ力の問題じゃない
ID:SvXUu1bl は単に知識がないだけ

ググって見つかったエラーメッセージから知ったかしてみたが
その本質的意味を理解してないからエラーメッセージに書いてる文面以上のことを何も説明できない
言語仕様的に「タブとスペースが混在してもインデントに一貫性がある」と言えるのが
どういう場合か分かってないからロクな説明もできずに苦し紛れの知ったかレスを繰り返してるだけ
0871デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:23:31.04ID:I9CLSJWc
>>869
なんで玉ねぎを数値に変換したいの?
1問目に「玉ねぎ」って回答を入力したら+5点なんだよね?
0873デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:25:52.40ID:uUFeESNP
>>871
そうです。玉ねぎ以外は0点。
最後にprint()表記する時に足し算したいからです。
0874デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:42:17.47ID:SvXUu1bl
>>870
そりゃあ、>>855のエラーが出る条件の枝葉末節までは知らんよ?
>>801はそういうエラーが出ることもあるということだけで話の本筋には関係ないし。

「一貫性」にこだわるあんたは何がどうだと言いたいわけなんだろう。主張がさっぱり見えない。
0875デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:43:16.03ID:uUFeESNP
>>872
いや、辞書じゃなくて計算ツールです。
理想としては、
回答入力→解答と照合→数値変換→計算なんですけど
解答と照合と数値変換の過程が分からなくて…
0876デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:46:20.80ID:5VljjZNL
くだらない争いを止められない精神年齢の低さ
これがpython使いです。
0877デフォルトの名無しさん
垢版 |
2020/02/23(日) 23:58:51.12ID:4ldhSgPz
>>875
事前に872が作ってくれたようなかんじの
正解ワード:得点 ってなってる「辞書」を用意しておく。

ほんでもって
「問題文と正解ワードが1対1対応のリスト」のリストにでもして、これまた予め集めてておく(問題集)

適当なカウンタ変数を用意する(iみたいな1文字名でおk)初期値は0
おまいの得点=0
for i < len(問題集):
   出題文=問題集[i][0]
   正解=問題集[i][1]
   hoge=input(出題文) # 回答入力
   if hoge==正解: # 回答と照合
       加点=辞書[正解] # 数値変換
       おまいの得点+=加点 # 計算
さいごに
print(おまいの得点)とでもやれば、何点とれたか出る。
0878デフォルトの名無しさん
垢版 |
2020/02/24(月) 00:29:21.02ID:iQYTd9Fe
>>873
input1=input('切ると泣いてしまう食べ物は? ')
input2=input('ニュートンと関わり深い果物は? ')

score = 0
if input1 == "玉ねぎ":
____score += 5

if input2 == "りんご":
____score += 5

print(score)

一番最初はこのレベルから。
何かしら超入門のチュートリアルをやりながら学んだほうがいい
チュートリアルを終えれば繰り返し処理を抽出して1つにまとめたり
問題文・回答・得点をファイルから読むようにしたりできるようになる
0879デフォルトの名無しさん
垢版 |
2020/02/24(月) 01:07:21.07ID:EuMvh8nX
>>873
玉ねぎ以外、例えば、たまねぎ、タマネギ、玉葱などは駄目(0点)なのか
りんごも同様にりんご以外は駄目なのか
0880デフォルトの名無しさん
垢版 |
2020/02/24(月) 01:52:00.30ID:9Kd/PSPa
>>864
お前的には「>>856は一貫性がある」と言うことでいいのね
それって人とはかなり違う感性だから会話するのは難しいと思うぞw
0882デフォルトの名無しさん
垢版 |
2020/02/24(月) 08:50:50.41ID:vb10EdOX
>>879 横レスだが・・・
( ゚o゚)ハッ!!!
そういえば、そうだwww
ニホンゴハトテモムズカシイネー
0883デフォルトの名無しさん
垢版 |
2020/02/24(月) 13:47:09.95ID:/24zPZsT
>>844
>A,B,...G...は全て(n,n,n,1)の形をしています。
これは例えばこういうこと?
import numpy as np
A= np.arange(8).reshape((2,2,2,1))
print(A.tolist())

[[[[0], [1]], [[2], [3]]], [[[4], [5]], [[6], [7]]]]
0885デフォルトの名無しさん
垢版 |
2020/02/26(水) 08:30:44.63ID:MVR+lhT1
f文字で改行する場合はどうしたら良いのでしょうか?

> f'hello \n{hoge}'

上記のようにすると\nがそのまま出力されてしまうのですが
0886デフォルトの名無しさん
垢版 |
2020/02/26(水) 08:35:41.43ID:MVR+lhT1
>>885
すみません
f文字にrを追加した場合、改行コードがそのまま出力されてしまうの間違いでした

> fr'hello \n{hoge}'
0888デフォルトの名無しさん
垢版 |
2020/02/26(水) 11:19:23.96ID:wiEfavJ1
r付けるなよω
0891デフォルトの名無しさん
垢版 |
2020/02/26(水) 11:58:06.05ID:hHwy7uag
アホ草
0892デフォルトの名無しさん
垢版 |
2020/02/27(木) 00:47:35.59ID:PK1Y55xx
標準モジュールのreってなんでマッチした文字列を返すメソッドがgroup()なの?
どういう意味?
0895デフォルトの名無しさん
垢版 |
2020/02/27(木) 11:05:33.77ID:jJI4a3AF
「if分が多いと見難いです
三項演算子を使うといいです」
https://techacademy.jp/magazine/28098

みたいな記事を読んでたんだけど三項演算子ってわかりやすいのかな?
適切な場面とそうでない場面がありそうだけどよくわからん
0897デフォルトの名無しさん
垢版 |
2020/02/27(木) 12:33:47.54ID:gBw0J9MB
目を動かす量が減るから簡単な分岐なら参考演算しでいいよな
0898デフォルトの名無しさん
垢版 |
2020/02/27(木) 12:47:41.42ID:G3iz3let
中身が3,4文字なら見やすくなるがめちゃくちゃ長いのに3項演算とか馬鹿としか言いようがない。
0899デフォルトの名無しさん
垢版 |
2020/02/27(木) 13:36:25.25ID:j46qIfAH
基本的に読みにくい
Python以外でも 条件 ? 真 : 偽 って書く言語のも読みにくい
普通にif 条件 then 真 else 偽 が式になる関数型言語のは読みやすい
分岐はifが頭にある方が圧倒的に読みやすい
0900デフォルトの名無しさん
垢版 |
2020/02/27(木) 14:06:29.14ID:9dlETTA2
>>892
capture groupのgroupだよ
match全体を結果配列の最初の要素に格納するのは多くの言語で行われてる
group(0)という命名センスは・・・まあ・・ね? pythonだから
0901デフォルトの名無しさん
垢版 |
2020/02/27(木) 14:23:14.28ID:9dlETTA2
>>899
pythonの三項式が読みにくいのは当然だけど
Cの記法が読みにくいかどうかは命名と慣れと抽象化次第

foo = if is_hage then hoge else fuga
foo = is_hage ? hoge : fuga

pythonに三項式が取り入れられる際の投票結果を見ても
今の記法はもちろんif 条件 then 真 else 偽の記法よりも
条件 ? 真 : 偽 のほうが支持されてたことが分かる
0902デフォルトの名無しさん
垢版 |
2020/02/27(木) 15:30:14.64ID:G6pyHvdg
>>892
findall使え
0903デフォルトの名無しさん
垢版 |
2020/02/27(木) 15:31:40.73ID:G6pyHvdg
>>894
s///gのgもgrepのgもpythonのgroupとは無関係
0904デフォルトの名無しさん
垢版 |
2020/02/27(木) 15:34:26.29ID:G6pyHvdg
>>901
pythonの三項演算子は表記は違うけど書く順はCと一緒だし困らない
慣れだけの問題
0906デフォルトの名無しさん
垢版 |
2020/02/27(木) 16:37:07.47ID:G6pyHvdg
細かいことは気にすんな
0907デフォルトの名無しさん
垢版 |
2020/02/27(木) 18:08:21.56ID:RRBu+1LX
>>895
三項演算子うんぬん以前に、文字列と予約語(if)との間や二項演算子の前後に
空白を置かないという、初心者にありがちな可読性を低下させる誤りがある
この田島悠介という現役エンジニアの技術レベルがその程度であり、
おそらくTechAcademyマガジンというサイトもそんなレベルの記事で
溢れているであろうことは、容易に予測できる

もし自分がPythonで三項演算子を使うなら、以下のように書く
  https://www.ideone.com/gOE9K0
後置if節とでも言えばいいのか、Haskellのガード式をイメージしている


>>899
関数型言語ではないが、スレタイの某言語だと以下のように書ける
 https://www.ideone.com/uy4Baa
 
0908デフォルトの名無しさん
垢版 |
2020/02/27(木) 19:10:02.18ID:x1hy167u
>>904
0910デフォルトの名無しさん
垢版 |
2020/02/27(木) 21:11:54.40ID:oAIJ90KI
>>895
条件によって値を返すだけなら
Excelのワークシート関数のif関数みたいなのが
個人的には1番わかりやすい
0911デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:06:26.96ID:F/P7X7F7
ループでぐるぐるまわしてて
4の倍数の時は3をたすってのはどうしたらいいですか
それ以外のときはそれぞれ別々にやる計算あります

あとpythonの質問するところってここしか知らないですが
他にもありますか?
0912デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:39:54.31ID:ZhdluG0Q
>>911
非コミュ障害、知能が低くないなら、ここよりTeratailにしたほうが良いが
でも、お前はコミュ障害もち、知能低い感じで一般の奴らからは相手にされないだろう。
結局、基地外、ゆとり、低脳の掲示板である5chぐらいしかお前の相手をしてくれないよ
0913デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:41:29.91ID:W1ryAU1b
>>911
しゅくだいの わからないところは
だすひがくるより だいぶさきに
せんせいに きいてね!
0914デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:43:31.64ID:IKP0YcdJ
pandasで2つのキーを指定してcsvファイルを結合したいのですが、可能でしょうか?

列Aが一致する範囲内で列Bを軸に2つのファイルを結合
pd.merge(df1, df2, on=['列A', '列B'], how='outer') としたところ、シャッフルして変になりました
0916デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:50:12.13ID:W1ryAU1b
>>914
なにがどう「変に」と感じたのかしらんが
↓あたりのhowについてのところ + joinについてのところでもよんでみればー
ttps://note.nkmk.me/python-pandas-merge-join/
0917デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:53:16.74ID:F/P7X7F7
4の倍数でっていうのは

if n%4 == 0:
____b=a+3
else:
____b=a

みたいなのじゃなくて
if使わなくてもa+3に
なにか足すと四の倍数の時にだけ3を足すような
のがあるかどうか知りたかったのです
説明不足ですいませんでした
0918デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:55:49.15ID:0yCkEhTI
pythonの環境構築が難しすぎる
3系で動かそうとしたら、デフォで入ってる2系が動いてる
vagrantでsyncフォルダにScrapyのプロジェクト作ろうとしたらエラー吐くし
諦めてdjangoで糞アプリ作ってる
pythonはライブラリが豊富だから魅力的なんだけど、今の活かせてない
0919デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:09:00.44ID:mQGc2SMz
>>911
その日本語をそのままコードに翻訳するだけ
0920デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:22:44.86ID:9dlETTA2
>>907
>関数型言語ではないが、スレタイの某言語だと以下のように書ける
そのケースは普通case文使うやろ
https://www.ideone.com/7jQ3Tb

>>909
ぱっと見わかりやすそうに見えるけど
自然な思考順序に反してるからすごく可読性が低いんよね
0922デフォルトの名無しさん
垢版 |
2020/02/27(木) 23:48:16.79ID:EmRw8gIY
>>901
なんでそれが通ったか逆に不思議だよな。
後置ifとも他の三項演算子とも似てるようで違うキモい文法。
0923デフォルトの名無しさん
垢版 |
2020/02/28(金) 00:00:23.47ID:CBzuDuio
>>921
ありがとうございます
a+3*[1,0,0,0][n%4]というのも考えましたが
やらない方が良いですか?
ifが来た方がやっぱり良いんでしょうか?
0924デフォルトの名無しさん
垢版 |
2020/02/28(金) 00:12:19.37ID:DkMBLb2P
>>923
自分だけが見るんなら何やってもいいけど人が見る可能性あるなら正直読みにくいし
無駄なハックは自分がやるならいいけど他人がやってるの見るとイラッとする
人ってそういうもんだし
ただそうやってコードで遊ぶのは勉強としてはとてもいい
0926デフォルトの名無しさん
垢版 |
2020/02/28(金) 01:33:44.99ID:mVRkB3jj
>>922
内包表記とか関係あるのかな
0927デフォルトの名無しさん
垢版 |
2020/02/28(金) 02:17:43.60ID:xXr38fg8
>>926
https://lwn.net/Articles/25304/

if <condition> then <expression1> else <expression2>
この選択肢だとマイナー機能に新しいキーワードを追加しないといけない
それに加えてパーサーがif文の開始だと誤解しないようにするため
括弧が必要になり醜くなる

というのがGuidoがPEPが提示段階で書いてた理由
その後メーリングリストでいろいろ議論はされてるけど
本人がそれをまともに読んでる形跡はなく
自分が最初に出した案に決めたように見える

https://lists.gt.net/python/python/144863/?page=1;
https://lists.gt.net/python/dev/264358?#264358
0928デフォルトの名無しさん
垢版 |
2020/02/28(金) 02:31:53.06ID:JX0D/Sej
ちゃんとメーリスから議論を拾ってくる有能
0929デフォルトの名無しさん
垢版 |
2020/02/28(金) 13:49:30.68ID:GfVfgYuK
>>918
Windows 10, WSL, Ubuntu 18.04 では、
python/python3 コマンドは別のものだから、間違う訳ないw

which python3
/usr/bin/python3

file /usr/bin/python3
/usr/bin/python3: symbolic link to python3.6

which python
/usr/bin/python

file /usr/bin/python
/usr/bin/python: symbolic link to python2.7
0930デフォルトの名無しさん
垢版 |
2020/02/28(金) 23:30:10.54ID:/I0WWb67
pyenv導入したいんですがいくつか疑問があります
まず、既にエイリアスに
python="/usr/local/bin/python3"
python2="/usr/bin/python"
という風に設定してるんですが、pyenv導入する場合はこれは外さないとまずいですかね?
そして既に入れてるpipのライブラリはpyenvの方のPythonでも使えるんでしょうか。
最初の導入ばかりでこの辺りの説明してるサイトが全然見つかりませんでした
もし良ければ回答お願いします。
0931デフォルトの名無しさん
垢版 |
2020/02/29(土) 11:11:22.64ID:VOzt624K
とりあえずは外したほうがよい。
というか二重三重の設定をメンテするなんて大変だろ?
pyenv自体はそこらへんのエイリアスをいい感じにやるだけだから
pipも普通に使えるし変わらんよ。
ただ、いろいろ環境がわからなくなることはよくある。
個人的にanacondaにパス通す方がよっぽど事故が少ないんだが、
公式原理主義者はどうも納得しないぽい。
0932デフォルトの名無しさん
垢版 |
2020/02/29(土) 11:17:08.59ID:i8bha/XW
もうPythonの環境周りは滅茶苦茶だね
初心者は環境構築だけで丸一日費やして嫌になってやめていく
普及したことが皮肉にも普及の妨げになっている
0933デフォルトの名無しさん
垢版 |
2020/02/29(土) 11:58:39.68ID:KnuPGJb+
仮想環境が当たり前みたいな記事ばっか書いてるアホどものせいだろ
全員電ノコで4ツ切りにして海に捨てたい
0935デフォルトの名無しさん
垢版 |
2020/02/29(土) 12:54:53.32ID:PDnkp16t
困ってる奴が何のos使ってるのか知らんが、windowsならpathを弄れば何とかなる
俺も勉強のために最新入れてインタラクティブモードでpython起動したら2.7(?)とかだった
cドライブをpython.exeで検索したら20件ぐらい出てきて色んなアプリでpythonが使われていた
仕方がないので自分が意図してインストールしたpythonのpathを一番先頭に持っていったら
自分が意図してインストールしたpython.exeを起動できた
0936デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:00:09.94ID:x6UuZEs8
C#+Visual Studioが至高
0937デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:10:46.26ID:/XxbCwlB
>>931
ありがとうございます!
2系と3系を同時に使いたいんですがそれはもう毎回切り替えるしか手がないんですかね?
0938デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:42:38.05ID:i8bha/XW
>>934
**envというプロダクトが多すぎて検索しただけで萎える
しかも廃れた古いものもヒットするので、全くの新規さんが独学でやるには二重の苦難だろう
こんなんじゃPythonの未来は暗いと感じる
0939デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:54:03.49ID:3sltTQiA
>>931
ほんそれ
0940デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:56:01.85ID:3sltTQiA
>>937
切り替えるんじゃなくて
どっちの設定もしない
コンソールを開いてから
どっちを使うか選択(コマンド実行)
0941デフォルトの名無しさん
垢版 |
2020/02/29(土) 13:57:46.01ID:3sltTQiA
ちょっと判りにくかったかもしれんが
要するに混ぜるなってこと

両方入ってるのは問題無い
環境を混ぜるのが問題
0942デフォルトの名無しさん
垢版 |
2020/02/29(土) 14:17:00.97ID:xglx3xdS
>>937
Win系なら、両方入ってる場合は
pythonとうったら2系
pyとうったら3系
がデフォやぞ

.pyをダブルクリックで実行したい ってのはかなわぬ願い
バッチかませろ
0944デフォルトの名無しさん
垢版 |
2020/02/29(土) 14:36:00.26ID:/XxbCwlB
>>941
ありがとうございます、とりあえず言われた通りコマンドで選択してみます。
後言い忘れてましたがOSはMacです…エイリアスで色々やってるのはpythonコマンド
だと2系が自動で選択されるからです。環境描き忘れててすみません。
0946デフォルトの名無しさん
垢版 |
2020/02/29(土) 23:48:35.12ID:6IdZMwnf
>>935
パスの順番を変えたら、他のアプリが動かなくなるけど、それは良いのか?

>>944
Mac は最初から、Python, Ruby が入っているから、その環境に影響を与えるとまずい。
それらを使っているアプリがあるから

だから、仮想を使う

Docker も良いかも
0947デフォルトの名無しさん
垢版 |
2020/03/03(火) 09:40:24.54ID:Zy/UEfGJ
seleniumにてfirefoxの既存のプロファイルを使用する方法はありませんでしょうか?
どうにも既存のプロファイルを読み込まなく難儀しています...
0948デフォルトの名無しさん
垢版 |
2020/03/03(火) 09:43:07.58ID:Zy/UEfGJ
コードはたったコレだけなんですが全くといいほど読み込みません

from selenium import webdriver

fp = webdriver.FirefoxProfile('/home/user1/.mozilla/firefox/zaxxxxxt.default')
browser = webdriver.Firefox(fp)
0949デフォルトの名無しさん
垢版 |
2020/03/03(火) 11:13:11.66ID:GznFhYco
>>947-948
https://techiedelight.com/compiler/?ScFS
↑ここにかんすうはってきたので
fp = get_profile_path("default")
こうやってさがさせてみそ

それでも、なんでかうまく読まないことあるけど。。。

あと、基本的なところだが、
geckodriverのバージョンが古いと失敗すること多い。
0950デフォルトの名無しさん
垢版 |
2020/03/04(水) 02:21:30.44ID:n/osJUKI
>>949
ありがとうございます

fp = get_profile_path("default")
browser = webdriver.Firefox(fp,executable_path=’場所')

作って頂いた関数を使用したのですが、やはり新規プロファイルを読み込まれ既存のプロファイルが読み込まれません
Chromeでは既存のプロファイルが読み込まれるのですが、如何せんChromeではmeta refreshをdisable出来ないため
firefoxを利用したいのです
プロファイルの場所は初期値 geckodriverは0.26.0なので問題ないと思うのですが…
0951デフォルトの名無しさん
垢版 |
2020/03/04(水) 12:59:09.91ID:Q2O9cj6l
>>950
プロファイルの場所探すところを改造せんといかんのかもしらん

泥臭いやりかただと、
ターゲットフォルダの中身全部をリストにして
.defaultで終わってるものをとる。みつかったらbreak

みたいなー
0952デフォルトの名無しさん
垢版 |
2020/03/04(水) 19:58:03.24ID:fq3DQX8J
>>932
アナコンダインストール一発ではだめなの?
0953デフォルトの名無しさん
垢版 |
2020/03/04(水) 20:13:57.82ID:O0VNA921
駄目に決まってんだろアホ
お前だろ「Anacondaをインストールする2020最新」とかいうアマゾンの中華製品みたいな信用度の記事Qiitaに書きまくってるゴミは
0954デフォルトの名無しさん
垢版 |
2020/03/04(水) 23:19:20.62ID:nNNW6i++
Anaconda は、Python が入っていない、Windows 限定

Mac, Linux など、最初から、Pythonが入っているものについては、
初心者には無理なので、プロに聞いてくださいと、
「みんなのPython 第4版、2017」にも、書いてある

つまり、最初から入っている、Pythonと両立させるのは、仮想が必要だから、難しい
0955デフォルトの名無しさん
垢版 |
2020/03/05(木) 04:04:41.17ID:eClduRvk
つまりPythonを使うならWindowsという時代が来たということだな
最初からPythonを入れてシステム的に依存する仕組みにしたLinux系は下手打ったよなあ
0956デフォルトの名無しさん
垢版 |
2020/03/05(木) 07:16:32.77ID:s/vnmaxn
システムとは別にPythonいれてそっち使えばいいやん
仮想可は実行環境だからまた別の話
0957954
垢版 |
2020/03/05(木) 08:01:54.80ID:PBcHTAfh
仮想環境は、Ruby のrbenv・RVM とか、Python のvenv とか、
これが素人には難しすぎるから、入門書には書いていない!

Mac・Linux では、仮想環境になる
0958デフォルトの名無しさん
垢版 |
2020/03/05(木) 12:41:11.27ID:s/vnmaxn
>>956
>仮想可
じゃなくて、仮想環境でした
0959デフォルトの名無しさん
垢版 |
2020/03/05(木) 15:08:38.13ID:zs+Uexwr
超初心者です
100回動作を繰り返すとします
繰り返しn回目でn回〇〇するといった場合どう記述すればいいんですかね?
たとえば30回目の動作で30回ボタンを押す、55回目で55回ボタンを押すというような感じです
0960デフォルトの名無しさん
垢版 |
2020/03/05(木) 15:15:03.78ID:CNNRfBpe
それ、pythonの質問じゃなくてどうプログラムしたら良いのかの
プログラミング自体の質問だから
自分で考えなさい
0961デフォルトの名無しさん
垢版 |
2020/03/05(木) 15:20:01.54ID:ZS+YL4ip
>>959
for n in range(100):
 for i in range(n):
  doSomething()
0962デフォルトの名無しさん
垢版 |
2020/03/05(木) 15:54:57.40ID:zs+Uexwr
>>960
すいません気をつけます

>>961
理想通りできました
ありがとうございました!
0963デフォルトの名無しさん
垢版 |
2020/03/05(木) 16:30:55.23ID:wTyki8t2
pythonはメジャーになって逆に環境構築に関してはひどい状況になったかもな。。
今正確にやるならdockerで閉じ込めろって話になるが、それ初心者には言えんわ。
0964デフォルトの名無しさん
垢版 |
2020/03/05(木) 19:06:49.16ID:yi4ntJTq
dockerは厳しいわ
流行っているから本買って来て読んでみたけど
そもそも何をするソフトなのか、何の役に立つのかすら理解できなかった
0965デフォルトの名無しさん
垢版 |
2020/03/05(木) 19:21:28.75ID:wTyki8t2
やっぱり最低限は環境変数とPATHは理解してもらってanaconda入れてPATH通すってやり方かなと思う。
最悪問題起きても環境変数とPATHがわかってればデバッグできるでしょ。
0967デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:16:30.47ID:dUqOCP9n
>>966
おまえのぐっぐるとはなんのことやらエスパーする余地がある

さすが、自然言語が不自由なスッドレだなw
0970デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:57:29.83ID:s/vnmaxn
丸投げはやっとるん?
0971デフォルトの名無しさん
垢版 |
2020/03/05(木) 21:01:02.49ID:fCV+9Bpk
np.expand_dims
0972デフォルトの名無しさん
垢版 |
2020/03/06(金) 03:11:42.52ID:9EQdyE3d
python3で質問です
for i in list1:
if ("A" or "B") in str(i):
list2.append(i)
elif "C"==str(i) or "D"==str(i) or "E"==str(i):#←ここ
list3.append(i)
else:
list4.append(i)

というコードがあるのですが、#部分が汚いというか煩雑で困っています。
いずれは#部分の比較文字列が増える可能性があるので、例えば
("C" or "D" or "E")==str(i)
みたいな感じでスマートに書きたいです。(ちなみにこれだと最初のCしか比較されませんでした。。。)

#部分をどうしたらいいでしょうか?

また、最終的には#部分で比較する別ファイルからリスト型に取り出してぱーっと比較したいです
その場合のアルゴリズムも(ファイルの読み込み操作とかは不要です)できたらほしいです
0975デフォルトの名無しさん
垢版 |
2020/03/06(金) 03:41:39.25ID:zMfd3B+p
そんなもんお前…
str(i) in ('C', 'D', 'E')
やろ

ところで、最初の
('A' or 'B') in str(i)
は想定通りに動作してないと思われる
'A' in str(i)
相当だから
もう少し演算子について正確に学んだ方がいい
0976デフォルトの名無しさん
垢版 |
2020/03/06(金) 06:32:33.66ID:MUtvLxi6
文字列化すると"A" になるデータってどんなのかな
0978デフォルトの名無しさん
垢版 |
2020/03/06(金) 07:06:27.86ID:Z17kfdKR
>>972
別にifとelifをABCの数だけ並べてもいいでしょ?
スマートな書き方は慣れてからでもいいでしょ

>ぱーっと比較したい
後半は急に雑な説明になって
何がしたいかよく分からん?
0980デフォルトの名無しさん
垢版 |
2020/03/06(金) 09:24:34.72ID:6R/8Uuzj
>>972
リストの内容によってはこういう方法でもいける。
import re
list=["A","B","C","D","E","F"]
sList=",".join(list)
list2=list2+re.findall("[AB]",sList)
0981972
垢版 |
2020/03/06(金) 15:01:17.68ID:yez0RtUo
>>979
これで#部分でやりたかったことが出来ました。
ありがとうございます
AとかBは簡略化のためで血液型とかじゃないです

比較する値(list1の各要素)には"ACC"みたいなものが来るようになっていて
Cが含まれていても”CX"みたいになっていたらelseに分岐させる感じの処理です

最初の部分の
if ('A' or 'B') in str(i):
も左をリストにして簡潔にしちゃいたいのですが
さっきのやり方(例えばif str(i) in ['A','B']:)だと"AA"とかがstr(i)に来たときに漏れてしまいます
str(i)にAかBが含まれているとき(例えばAB,AF,AA,BE)に分岐させる処理はどう書いたらいいでしょうか?
最初の
0982デフォルトの名無しさん
垢版 |
2020/03/06(金) 15:10:11.91ID:6R/8Uuzj
なかなかの後出しだな。

単にA,Bが含まれるという条件なのか、A,Bから始まるのか、
C〜の文字列は絶対A,Bは含まないのかなど、細かい条件で全然違うぞ
0983デフォルトの名無しさん
垢版 |
2020/03/06(金) 16:29:59.27ID:Z17kfdKR
>>981
一言でいうと処理対象の複雑さによって処理が異なる
もし文法構造を有しているならパース処理が必要になるが
字の配列だけの問題なら分岐だけで処理できる

フローチャート的なif文の分岐が基本中の基本だから
短く書くやり方は基本が分かってからにしよう
具体的には先頭から一字ずつ判断して行けばいい

先頭の文字がAの場合、Bの場合、
それぞれについて次の文字がAの場合、Bの場合……
ってif文をネストしていけば書けるはず
0984デフォルトの名無しさん
垢版 |
2020/03/06(金) 18:02:59.48ID:MP/8tjp8
pandasで以下のようなcsvファイルを読み込み、

burgers,meatballs,eggs
chutney
turkey,avocado

以下のような2次元配列に変換したいです。

[['burgers', 'meatballs', 'eggs'], ['chutney'], ['turkey', 'avocado']]

pandas.read_csv(..., heade=None).to_numpy().tolist()だとnanが含まれてしまいます。
for文でnan削除するよりスマートな方法はないでしょうか?
0985972
垢版 |
2020/03/06(金) 20:16:06.38ID:9EOp8vfg
>>982
A,Bが含まれるという条件です
例えばAjsやskBfです
Cの文字列は絶対に含みません

後出しになっちゃって本当にすみません。。。

set()とか使って出来ないかなと思ってさっきも色々試したんですけどだめしでした。。。
0987984
垢版 |
2020/03/06(金) 20:56:23.32ID:MhiZvrbz
それでいいです。ありがとうございました。
0988デフォルトの名無しさん
垢版 |
2020/03/06(金) 20:57:39.83ID:n2xpzai7
>>981
any(x in str(i) for x in ['A', ‘B’])
pythonの場合このケースは正規表現のほうがわかりやすいかもね
0990デフォルトの名無しさん
垢版 |
2020/03/06(金) 21:49:10.87ID:gkPkCuAw
perlみたく安直には出来ないようになってるからね
if (/C|D|E/)
ショウガナイね

そもそも最近のワカモンは正規表現の存在自体知らないんだよ
本当に、聞いたことすらないんだよ
0991デフォルトの名無しさん
垢版 |
2020/03/06(金) 21:52:24.21ID:gp44GQTA
正規表現はもう古すぎだよなあ
あんな暗号みたいなの覚えられんし方言もあるし
しかもデバッグが非常に難しい
0994デフォルトの名無しさん
垢版 |
2020/03/06(金) 23:07:37.81ID:MUtvLxi6
>>972
プログラムで処理できる
完全なサンプルデータを示してほしい
0995972
垢版 |
2020/03/06(金) 23:29:13.41ID:9EOp8vfg
>>988
すごいです。。。できました。。。

正規表現は一応貪欲なんとかとかかるーく使ったことある程度です
今回はうまくいけたのでヨシ!とします。。

any使ったことなかったので精進します
0997デフォルトの名無しさん
垢版 |
2020/03/07(土) 00:50:58.92ID:CmL9X7tL
>>991
俺は自分が書いた正規表現ですら、後で見ると何にマッチするのかわからんってのが
あるからコメントが必須だからな。
すごい奴のすごい正規表現はもう何にマッチするのか文章の説明がないとさっぱりわからん
0999デフォルトの名無しさん
垢版 |
2020/03/07(土) 01:04:17.34ID:k4ffI6Av
うまな
1000デフォルトの名無しさん
垢版 |
2020/03/07(土) 01:04:29.33ID:k4ffI6Av
うめ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 9時間 7分 36秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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