くだすれPython(超初心者用) その46【Ruby禁止】
レス数が1000を超えています。これ以上書き込みはできません。
当スレに★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/ >>> 0 ** 0
1
>>> 0 / 0
ZeroDivisionError: division by zero 北海道のグラサンスーパーハゲザーはここにはこないのー? 久しぶりに貼っとくか
日本語の扱いで戸惑ったらこちらをどうぞ
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 スマートに長さが決まってる配列に交互に数値をいれていくにはどうしたら良いですか?
自分でつくるとどうも長くなってしまいます
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] np.array([1,4]*3).flatten()[:5] >>9
一行だけとは超スマートです!!
ありがとうございます!! >>7
from itertools import islice, cycle
def take(n, iterable):
____return list(islice(iterable, 0, n))
take(5, cycle([1,4])) コマンドプロンプトを起動
pipでPyInstallerをインストール
$ pip install pyinstaller
って書いてあるけど、windowsのコマンドプロンプトっていうことでしょうか?
やってみたけどエラーが出てインストールできません。 >>17
エラーの内容をそのままでいいので貼り付けてください win10, Python3.7では
pip install pyinstallerでエラーはでなかったです すいません。
C:\WINDOWS\system32>pip install pyinstaller
'pip' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
というメッセージが出ています。 >>20
%PATH%にpip.exeの場所を追加できればとりあえずは解決できると思います >>21
ファイルのある場所にパスを通すということでしょうか?
調べてみたのですが、やり方がよく分からずすいません。 >>22
もう一度インストーラーを起動して、
関連付けのチェックを入れればいい キーボードの左下にある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 プログラム技術(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 https://duckduckgo.com/bang?q=google
!yt python
!papers python
!gn python
!gnuk python
!gnnl Guido van Rossum >>7
[4 ** (x % 2) for x in range(5)] >>7
[[1, 4][x % 2] for x in range(5)] windows のコマンドプロンプトで python を動かすのは
あまりお勧めできないけどな
苦労が多すぎて、得るものが少ない そのココロは?
- windowsでpythonやるならコマンドプロンプトよりも××
- windowsでやるならpythonよりも××
- pythonやるならwindowsよりもlinux >>30
ちょっとひねらないと嬉しい結果にならんな
>>> list(zip([1,1,1],[4,4,4]))
[(1, 4), (1, 4), (1, 4)] >>33-34
横からだが
WSL使ってる人 → そのままWSLで
WSL使ってない人 → git for windows 入れてそれと一緒に入る git bash お薦め >>35
>>> from functools import reduce
>>> from operator import add
>>> reduce(add, zip([1,1,1],[4,4,4]))[:5]
(1, 4, 1, 4, 1) >>33 >>36
tdm-gcc (x64) 入れると
MinGW Command Prompt っていうのが付いてくるのでそっち使ってる 自分の場合、ふだんnodeとかはgit bashで使ってるけどpythonだけはコマンドプロンプト使ってた。
venv使ってるのとエクスプローラからパスをdrag&dropする使い方が多いんで。
コマンドプロンプト自体がお勧めできないというのは置いておいて、特にpython使うのに
向いていないとは感じないがな。 10年位前のpython2.7の頃に比べれば windows10 python3.8はものすごく使い
やすくなっている wsl出てからpythonはwslだったけど、個人的にちょっと開発するなら
windows10で十分 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) >>43
hoが何でどういう風にデータが入ってるのか教えてくれ >>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))] 超初心者です。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を書いて、上から順に実行していくという方法に
なるのでしょうか。
わかりづらくて申し訳ないです。ご教示よろしくお願いいたします。 Ruby なら、`〜` でコマンドを実行できる
`コマンド 1`
`コマンド 2`
`コマンド 3`
scrapy はコマンド名か?
それなら、下のようにできる
`scrapy 〜`
`scrapy 〜`
`scrapy 〜`
コマンドを呼ぶぐらいなら、Ruby以外にも、シェルスクリプト・PowerShell でも出来る >>43
要は2つの隣接する単位ベクトルho[i]とho[i+1]の演算を行いたいが、iが末尾の時はi+1の代わりに0番目を使いたいということか?
それならまずi+1または0を変数jに入れて、ho[i]とho[j]の処理だけを書けば良さそう。 >>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])] >>50
びっくりするほど短くなるんですね
ありがとうございます
助かりました >>51
そもそも命名規則とか意識した方がいい
自分でコード読めなくなるぞ 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'))
これなにが間違ってるのでしょう? >>53
>Python keyword not valid identifier in numexpr query
Pythonのキーワードはnumexprクエリにおいて有効な識別子ではありません
“class”はPythonのキーワード >>52
はい、命名規則つけるようにします。
ほとんど後でメンテナンス不可能になって投げ捨てる事になってしまうので
ちゃんとやることにします >>55
あああ〜、、、
ありがとうございます。
結構悩んだんだけど、予約語でしたか、、、 seleniumのwebdriverwaitが100%タイムアウト返してくるんですけど、これ考えられる原因あります?
waitの時間伸ばすしか対策ないんでしょうか? >>58
ImplicitWaitしてて
検索条件が間違ってる可能性がある
デバッガでブレイクポイント設定してステップ実行で試せば
本当にタイムアウトしてるのか条件が間違ってるのか切り分けられる >>59
具体的には
https://colab.research.google.com/drive/1wT6ZpKLNr24R5qEfH-0jotifhBVrfA9S
の57行目でタイムアウト返ってくるんですよね…
この場合だとec.element_to_be_clickableの中身が間違ってるんでしょうか… データフレームに含まれるNoneデータの個数を数えようとしています
df_bool = (df_combine == None) @
number_of_outliers = df_bool.sum() A
でいけるかと思ったんですが、dfにNoneデータに対して@はFalseの判定でした。
どうやって数えればいいんでしょうか? >>60
エラーが返される57行目の前に
Python3.7以降ならbreakpoint()と書けばブレイクポイントが設定されて
標準のデバッガが起動されるのでnとかsでステップ実行したり任意のコードを実行したりできる
IPythonのデバッガを使いたければimport ipdbして
ブレイクポイント設定したいところでipdb.set_trace(context=10)
人の書いたコードを丸っとコピペするのは別にいいけど
間違ってるかどうかを自分で確かめられないようなら潔く使うのは諦めたほうがいい すいません…結局わかりませんでした…
とりあえずelement_to_be_clickableの中身でエラー起こしてるみたいですが…
構文は間違ってないですし、IDの名前も間違ってないんですよね… >>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秒ぐらいにすれば? >>66
runtime-menu-buttonが存在するところは確認済です
一応昨日180秒でやりましたが結果は変わりませんでした 600 〜 1,800秒で、やってみれば?
自分が待てる限界時間まで、やってみれば? 俺も以前開発ツールで見えているのにクリック出来なくてドハマりした
一度そのエレメントが見えるところまでまでスクロールすればイケルと思う
理由は分からないw
面倒だから全スクロール
execute_script("window.scrollTo(0, document.body.scrollHeight);") headlessじゃなくブラウザを画面表示してデバッガでステップ実行すれば
本当にタイムアウト時間内に要素が求める状態になってないのか
それとも求める状態になってるにもかかわらず取得できないのか一発で分かるやろ
後者ならステップ実行時にto_be_clickableじゃなく
単にfindで要素取得できるかどうかとか
取得できるならそれをclick()できるかどうかとか
正攻法で切り分けしていけばいい 他の要素の下になってクリックできないってこともある。 pandasのread_excelでシート読むときに、セル内の関数を読み書きするのはどうしたらいいんでしょうか
具体的には=いまセルにtext(today()+1,"mmdd")が入ってて、read_excelすると1008が取得中できるのですが
today()+nと操作したいです OpenPyXLなら式操作できるかな
xlrdでもいいのかも知れないが
"Please use openpyxl where you can..."
なんてわざわざ書いてあるライブラリ使わんでもえやろ >>73
1. xlwingsやCOM使ってExcelを開いて再計算させてからpandas使う
2. Excelの計算式は捨ててpython側で計算式を定義する
3. openpyxlで計算式をパースしてpythonで計算し直す (茨の道) seabornでlmplot使っているのですが、DFのラベルでlatency(msec)や[msec]として単位をグラフの軸ラベルを記載しようとするとエラーになります。 多分[]や()が予約後だからかとおもいますが、DFのラベル名に単位を記載しようとするときはどのようにするべきなのでしょうか? >>77
角括弧や括弧があってもクウォートして文字列として扱われてれば問題無いはずなので
エラー内容とそのエラーが再現する最小限のコードを公開したほうがいい latency_msec
1700
0
0
0
0
0
0
0
0
for i, latency in enumerate(df['latency_msec']):
print(i, latency) 結果
0 1700
1 0
2 0
3 0
4 0
0 0
1 0
2 0
3 0
なんでインデックスが4まで行くと0になってしまうのでしょう?
アホみたいですが、教えて下さい。 >>81
すいません。
自己解決しました。
関数の呼び出し先の問題でした。
疲れ切ってます。 org 連投すいません
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よくわからない・・・。 >>83
すいません。
無視してください、また変なこと聞きました。
もう無理だ・・・寝ます・・・。 q75, q25 = np.percentile(col, [75 ,25])
colが整数だけのときは正しい値が入るのですが、colに少数が入ると0.0になってしまいます
np.percentileって少数には使えないのでしょうか? >>86
a = np.array([[10.4, 7.8, 4.5], [3, 2, 1]])
np.percentile(a, [72,25])
#=> array([6.48, 2.25])
問題なさそうだけど? >>87
あれ、本当ですね
ここが原因と思ってたら何が原因か分からなくなってきた 四分位範囲で外れ値の値だったばあいフラグを立てる関数を作ったのですが、
なぜかデータが整数では正常動作するのに、少数が含まれているとフラグで1を立てても0になります。
かれこれ数時間悪戦苦闘しているのですが、原因わからず・・・。
どこかにコードを書き込んで質問できればいいのですが、そのような掲示板ありませんでしょうか?
本当に初心者ですいません。 https://ideone.com/Fl1R9z
40行目の
df.iloc[i][output_column] = 1
が怪しいとおもうのですが、取り込んだdfが整数だけのときは1が書き込めているのですが、
dfに小数が含まれているときは書き込めていないようです。
なぜなのでしょう・・・・・。 >>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) df['price_edited'] = df['price'].apply(lambda a: int(a[1:]) if a.startswith('$') else 0) >>67
クリックできるようになるまで待つのをやめて、ボタンが現れるのに十分と思われる時間待った後で普通にクリックしてみる。
そうするとなんでクリックできないのか分かるかもしれない。 map, filter, reduceとか色々あるけど、pythonでこの辺って使う機会ある? ほとんどない
リスト内包表記の方が可読性高いし、複雑な処理にはどうせpandasとか使うし pythonに限らずどの言語でも用意されてるがどの言語でも使わない mapは、リスト中の数字と数値を数字に統一して、ソートできるように再マッピングするときに使うことはある >>96
mapは内包表記を使うほどでもないとき
競技プログラミングとかで入力を全部int型のリストに置き換えるときとかに使うぞ
a,b,c = map(int,input().split())って感じで なるほどlambda書かなくていいケースなら短いんだな 競プロで使うといえば、sys.stdinとcollections.dequeも >>96
個人用のコードの場合はcurryやpipeと合わせてそこそこ使うけど
他人が読み書きするコードの場合は基本的に内包表記に揃えてる
他の言語と違ってpythonの場合は
そのままだと処理つなげないからmap/filter/reduceだと簡潔に書けない 昔はシュワルツ変換とかあったが今のpythonじゃそんなの聞かないだろ? >>101
mapってこれa,b,cに直で突っ込めるん? >>106
競プロのことは知らないけど、内包表記の方が基本短くならない?なにか違う理由で使わないの? バイト列に関して質問です。
文字タイプのバイト列情報の文字を、日本語に復元したいです。
例えば、
\x12\x34\x56\x78
という文字列があります。
これを
あいう
のような意味のわかる日本語にしたいです。
その場合、
print(b'\x12\x34\x56\x78'.decode('cp932'))
で復元できます。
そこで、復元したい文字列は複数あるので、
\x12\x34\x56\x78 を変数に代入してから、
for文で復元しようとしています。
しかし、変数に代入したら b をつけられません。
どうすればバイト列にしてから復元できるのでしょうか? b'\x12\x34\x56\x78'を入れちゃだめなの? データフレームのラベルにlatency[msec]と単位をいれたいのですが、
lm_model = smf.ols(formula="latency[msec]~x", data=df).fit()
とすると
latency is not define
となります。
latency_msecとするとokなのですが[]や()を使うとダメ
[]、()をラベルに使ってはいけないのでしょうか? >>112
レスありがとうございます。
変数にb'\x12\x34\x56\x78'を入れるということでしょうか?
bと文字列 \x12\x34\x56\x78 を合体させる方法が分からないんですよね・・・ numpy とか pandas 使うとそっちで解決しちゃう >>110
それ答えてもいいけど、過去何度も何度も繰り返された議論が始まるだけだぞ >>114
s = '\x12\x34\x56\x78'
b = s.encode('latin-1') >>111
string = '¥x82¥xa0¥x82¥xa2¥x82¥xa4'
hexstr = string.encode('unicode_escape').decode('utf-8').replace('¥¥x', '')
print(bytes.fromhex(hexstr).decode('cp932'))
https://www.onlinegdb.com/ByuRArNxI l = [[1,2,3],[4,5]]
から
[1,2,3,4,5]
に変形したいのですが、リスト内包表記だけでできますか? >>117
すみません、
出来ませんでした
>>118
すみません、出来ませんでした >>119
できるけどやめれ
foo = [[1,2,3],[4,5]]
[x for inner in foo for x in inner]
#=> [1, 2, 3, 4, 5] >>122
全部見てませんでしたすみません
そちらは動きました。
自分のでも動くか試してみます >>124
はえ〜シンプル
一階層だけならこれでいいな >>121 のやり方が3次元以上でも対応できるのでいいですね。
おっさんありがとう。 map, reduce, filterと来れば次はflatten
でもpython標準にはない >>> 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)
めんどいな >>> 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]
めんどい df.query("tag.str.contains('log')")
だと、'LOG'や'Log'にマッチしないですが、queryを使った何か方法あります? df.query("tag.str.contains('log') or tag.str.contains('LOG') or tag.str.contains('Log')") df.query("tag.str.contains('log', case=False)")
または
df.query("tag.str.contains('[lL][oO][gG]')") case=Falseでいいです。
おっさんありがとう。 散布図書いて
凡例1:回帰直線あり
凡例2:回帰直線なし
としたいんですが
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, legend=False, fit_reg=False)
とfit_regを使うと凡例1、2とも回帰直線あり、なしで統一されますよね。
凡例ごとに回帰直線あり、なしを設定する方法ないでしょうか? もしくはlmplotで凡例1の回帰直線を書いて、
その後に凡例にの散布図を重ねるとかできるといいのですが・・・。 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.
>>>
何かご存じの方いらっしゃいませんか? >>139
pywin32 221はインストールしてあります。
import win32api
と入力しても何も言われないので、インポートできてると思われます。 >>141
python3.7.4に下げたところ、うまく動きました!!
大変助かりました。ありがとうございました! Webサイトの動的なパラメータを取得し、
PythonでCSVに保存したいのですが、
requestsでのJSの動的なパラメーターの操作・取得方法が分かりません。
どのようにしたらいいでしょうか?
具体的には"https://fast.com/ja/"で通信速度を定期的に
測りたいです。 api直で叩けるならrequestsでいいけど、
普通はseleniumの出番じゃないかな。
結果表示のelementが表示されるまで待って、そのあとselectorを使って読み取る。 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に反映させたいのですが、うまくいきません >>146
>>147
ありがとうございます。
理解できるようがんばります。 全体の質問スレがなかったのでここに質問します
私はWebサービス作れたら面白いな程度に考えています。そこで質問があります。いきなりPythonで大丈夫でしょうか?基盤となる他の言語があるのでしょうか?また、Webサービスを作れるものなのでしょうか?具体例ではTwitterなど超有名なものが出されるので… 型ヒントつけまくったら速度って向上すんのかな
あくまで可読性の問題? これくだすれってコードすれですかね?
でしたら上のやつ無視してくださいすみません >>150
type hintは基本的に3rd partyのtype checker用なので
何もせずに速度が向上したりはしない
型をチェックして適切な実装を選択することで実行速度が変わるようなロジックを自分で作ったり
そういうライブラリを使えばhint無しよりは速度が向上する可能性はなきにしもあらず
3.7より前のバージョンはtype hintをコードの読み込み時に評価するので
評価コストの分だけtype hintがあると読み込みが遅い(らしいが、気にしたことはない) >>149
WebサービスはWebの知識があればPythonとPythonのフレームワークで構築できます >>154
ありがとうございます!Webの知識もないプログラム初心者なのでHTML・CSSを学んでから、または学びつつPythonを勉強しようと思います! Webの知識にはHTML/CSSだでなく
HTTP, JavaScript(初級)/DOM, 各種ブラウザの開発ツール使い方
くらいは含まれてると思われる
サーバーサイドはパフォーマンス気にしなければPythonだけでほぼなんでもできるが
モバイルアプリやリッチなWebクライアントはPythonだけでは作れない >>156
私にはまだ早い領域のようですね…
教えて下さった言語含めもうちょっと調べてみます
ありがとうございます! >>153
やっぱそうなんだ
コンパイルしてるわけじゃないしな >>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 >>159
capybara使えよ
implicit_wait=60とかsleep 45とかありえんてぃ
先週のWebDriverWaitを10回くらい繰り返してるクソコードよりもひどいぞ
>>143
fast.com cliでググれ 次のプロジェクトを何の言語でやるか、検討した結果PHP派とPython派に分かれた。
Rubyはみんな嫌がった。 >>143
ありがとうございます。
Python通ってないので参考になります。
>>159
>>160
cliあったんですね!
Macのcrontabだとスリープ時に実行できないので
サーバー化してるRaspberryでcrontab回そうと思います。
助かりました。
ありがとうございます。 データフレームで
target shape
1 0
0 1
1 1
としたときtarget==shapeのデータをスライスとして取り出したいのですが、
同一データフレーム内のデータを比較してスライスするにはどうすれば良いのでしょう? df[df[‘target’]==df[‘shape’]]
または
df.query(‘target==shape’) >>164
ありがとうございます。
Pandasのスライスの表記難しい・・・。
使いこなせる自身がないんですが、やってるうちになれてくるものなのか・・・。 a=Fale, b=True
だけをスライスしたいのですが、
df_correct = df[df['a'] == False & (df['b']==True)]
とすると
a==False
の条件でスライスされ
b==True
が無視されます。
なぜなんでしょう? >>166
失礼しました。
自分の投稿みて気づきました。
前の条件を()でくくっていなかったですね。
orz >>164
queryなんてあったんですね
昔accessやってたものとしてはquery使ったほうが可読性高いな。 >>164
python的には内包表記とqueryではどちらが推奨なんでしょうか? python 3 で16進数文字列をutf-8文字列に変えたいんですが、簡単な方法ないですか? >>170
>>111と同じなのか違うのか?
違うのなら簡単な方法じゃなくめんどくさい方法でどうやってるのかをまず書いて いつのまにかインデントが崩れて正常に動作しなくなってた
でも中括弧がないので元の状態が分からない
元に戻せない import binascii
print('あ'.encode('utf-8'))
print(binascii.a2b_hex('e38182'))
print(binascii.a2b_hex('e38182').decode('utf-8')) >>160
<div class="speed-results-container succeeded" id="speed-value">0</div>
この要素は、sleep 45 が無いと、すぐに、0 が取得されてしまう!
つまり、このdiv が、最初から存在していて、0になっているのだろう
このサイトを1分ぐらい見てると、数値が動くだろ
たぶん、1分ぐらい掛けて、何回も非同期処理で、この値を書き換えている。
だから、1分近く待たないと、速度が安定しない お金を計算するわけでもないのですが
小数点の計算に全部decimalつけるの面倒なんですけど
何とかならないですか? >>175
「0 が取得されてしまう!」じゃねーよ
もうちょっと頭つかってくれ
速度が安定するまで待ちたいなら
「wait until 速度が安定?」みたいなコードを書けばいいだけだろ
測定完了を示す状態変化があるのに
わざわざ速度が安定したかどうかで判定する必要もないんだけどさ 他人のサイトをデバッグ・解析して、測定完了を示す状態を見つけるとか、それは大変!
仕様書もないのに、できない。
そういう解析を仕事としては色々やってきたけど、面倒 こんにちは質問させてください。
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後、コミット 少なくともSELECT文はfor文で回す必要がないように見える
ウィンドウ関数とか使って、1回のSELECT文けで、その後のUPDATE文の条件として使いたいscoreListAve, date, nameを抽出出来るはず >181
ウインドウ関数を知らないので調べてみます。
ありがとうございます。 where の条件に、日付・名前があって、
それらに索引インデックスが付いていないのなら、絞り込めず、全探索になるから!
例えば、100万レコードあれば、それらをすべて検索してから、チェックするから!
基本的には、検索条件に索引インデックスが付いていないものは、全探索になるから検索しない!
情報処理資格のデータベーススペシャリストの教科書で、
データベースの設計を勉強すべし! >183
助言ありがとうございます。
書き忘れましたがname, dateのIndexはすでに作ってます。
cur.execute('create index dateIndex on table(date)')
Indexでだいぶましになったのですが、それでも現状、
forが100進むのに1秒くらいなので、20万レコードで30分くらいかかります。 歯抜け無しなら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; 相関サブクエリのほうはブロックされたからここに貼っとく
https://ideone.com/73jaTZ >185
大変ありがとうございます。
歯抜け有りなので相関サブクエリの方をまず試してみます。
ここまで見本のコードを書いていただければ自分のレベルでも
なんとか取り入れられそうです。 >>187
歯抜けありでもwidow関数で書けるぞ。
相関サブクエリなんて過去の技術を使うな。 >>180のコードでメモリが足りているならsqlをどうこうする必要はないと思うが。 1回のクエリで行けるところを、わざわざループでクエリ投げまくる意味はないでしょ クエリが苦手でPythoに慣れているなら意味はある
クエリは言語としては非常に特殊だからね
常用しない人にはとっつきづらい >>189
遅いから困ってるって明記されてるのにメモリーとか何言ってるんだよw
>>191
書捨てならそれでいいけどよく使うならSQLは覚えていて損はないと思うぞ
考え方に慣れればそれほど難しくないし 距離を計算したいのですが、
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()に渡せばいいのかと思ったのですが・・・
お教えいただけると助かります valuesで取ってから二乗して和をとってしないと行けないんじゃないの https://pastebin.com/dLSjsvev
このコメントアウトしているコードを実行するとエラーが出るのですが、何が悪いのでしょうか? >>194
math.sqrtはpythonの標準関数でスカラーにしか対応していない
np.sqrtにすればたぶん動く Python学びたいんだけどどっから手を付けていいかわからん。
取り敢えず、クジラ本 「実践力を身につける Pythonの教科書」(4839960240)は買ってきた。 >>197
できました。
ありがとうございます。
m(._.)m 教えて下さい。
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
よろしくお願いします。 >>201
「WebSite_List」って名前のファイルが参照場所にない。
探せ。
あと拡張子とかついちゃってて名前がかわってないかもチェック。 2Dカードゲームでユーザの行動特性を調査する
研究用アプリを開発しようと思ってます
開発環境をPygameにするか、Unityにするかで悩み中
Unityのほうが色々ゲーム用の機能揃ってて見栄えの良いUI作れそうなんだけど、
ユーザの行動データを数値解析したり、将来的には機械学習も取り入れようかと思ってるので、
その点ではPythonのほうが親和性高そう
どちらが、おすすめとかありますか? ちなみにUnity、c#のほうが少しは得意
Pythonは最近sklearnとか使い始めたくらいの超初心者です それは
※ただし、選択できるプログラミング言語は一つだけとする
というような縛りプレイルールが暗黙的に存在すると考えていいのかしら?
でなかったら俺はゲームをUntiyで書いて機械学習をPythonでやるかな だから、親和性を最優先にするならそれぞれ得意分野に使うのが最善に決まってるだろw
はぁーガイジは人間に進化するまでママと遊んでてくれないかね >>202
ありがとうございます。自分で見る限りは異常ないと思うのですが・・・
IDLEでRunModuleできるのにコマンドプロンプトでエラーがでるってことありますか? >>211
コマンドプロンプトのカレントディレクトリがIDLEのカレントディレクトリと違ってるんだろ >>203
それ前も聞いてたけど公開して広くデータを取得する可能性考えたらJavaScript一択だと思うぞ
それにカードゲームというのがいわゆるソシャゲ系で
アクションや派手なエフェクトを多用するやつならともかく
トランプ系の動きの少ないやつならHTML/CSS使ったほうがはるかに簡単
研究室にテスター呼んでやってもらうだけなら
自分が作りやすさだけ考えればいいんだろうけど
その場合でもデータ連携で十分なんだから
得意分野の違う言語を無理やり一つにする意味あんまりない >>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 >>213
ごめんなさい
今やってることの次の研究なので、定期的に頭の中に湧いてくるみたいです。
Unityで行こうと思ってたんだけど、Pythonで機械学習の初歩も学び始めたら、
Pythonでやったほうがいいのかまた悩みはじめました
前は
Unityカードゲーム
↓
データCSVで吐き出し
↓
Pythonで解析
と考えていたけど、カードゲーム中にもデータを機械学習させて、カードゲームの設定をいじるとかしたくなってきました。
そうするとPygameでやったほうがいいのかなと思うんだけど、Pygameの評判があまり良くないようなので、グルグル思案中・・・。 180ですが、教えてもらった相関サブクエリによるselectのやり方で
20万レコード30分くらいかかってたのが2分くらいまで短縮できました。
助かりました。
select後、sqlに保存は依然としてfor文ですが、それも込みで2分です。
保存部分もまとめて、
update table t1 set (select avg(score) …
というやり方ができないかと思って試しましたが、うまくできませんでした。
たぶん、最初にコメントされた方はそこもわかった上で
「少なくともselect文は」と言われたのでしょう。
ウインドウ関数、コンポジットインデックスも教えてくださりありがとうございます。
また試してみます。 >>216
出来ると思うんだが、内容がすでにPythonから離れているので
データベース板のSQL質疑応答スレで聞いてみると良いかも >217
たしかに!
意識できていなかったのですが、ちょっとスレ違いでした。すみません。
みなさんクエリがなんとかとか言って争ってる?ので
5ちゃんねるは教えてくれる人々がいつもなんか争ってるなぁとw >>218
DBへのクエリの出し方はジッサイトテモダイジだ。
おなじことをしたいときでも
書き順によって
30分かかったり
2分くらいで終わったりだ。
イイネ? >>215
↓実装方法を選択する一般的な思考プロセスを経てないので目移りするんじゃないのかな
1. 自分が求める機能/非機能要求を整理する
2. 評価軸を決める
3. 実装方法の選択肢を考えられる限り出す
4. 選択肢のPros/Consを把握する
5. 評価軸とPros/Consからトレードオフを見極めて実装方法を選択する
UnityとかPyGameとか特定のソリューション名で考えずに
もう少し抽象度あげて選択肢を考えたほうがいいと思う
Pythonで全部やる、C#で全部やる、Python+C#のハイブリッドと大枠の選択肢があって
ハイブリッドの場合はファイル連携、DB連携、プロセス連携、API連携といろんなレベルがある
どれがいいかは上に書いた1や2が整理されてないと選びようがない 北海道のグラサンスーパーハゲザーはここにはこないのー? >>211
WebSite_Listの読み込みやってるあたりで外部ファイル参照してない?
ファイル読み込みしてたら、ファイル名をフルパスにするか、 import osして
os.path.dirname(os.path.abspath(__file__)) + '/'+filenameにしてみたら(実行ファイルと同ディレクトリの場合)? >>215
Pythonが機械学習部分を担当し、Unityがゲーム部分を担当し、
両者が通信を行えば言ってるようなことはできる。
(そして正直それがおすすめ)
出来ないうちに色々こんな機能も欲しいって言って考えていくと、要求ばかり大きくなって
結局何も完成しないから、まずは最小限使えるものを作ってしまうべき。
最悪のケースでも、書いたコードは無駄となるかもしれないけど、
設計手法や要素技術は身に着くのだから別のプラットフォームに移植するのに始めのときより時間がかからなくなる。 ここが起源っぽい
https://www.log ;soku.com/r/2ch.net/tech/1023766485/ >>228
なんでそんな略称にしようと思ったんだろうな くそスレ
くそが出そう半分出かかってるがトイレ遠くて困ってる
くだらないスレ >>229
お前が何がしたいのか次第だろう
Webアプリ作ろうとしてるんだったらいくらSQLiteの扱いが簡単とはいえ選択肢に入らないし、
データ分析なんかで大きなデータセットを扱うんだったらBigQueryになるかもしれない 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 超初心者な質問で申し訳ないのですが
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] numpyが楽
import numpy as np
m=np.array(m)
p=np.array(p)
m[:,3]=p >>242
ありがとうございます
p=[5,6,7]でmの縦より一個少なくて
ブロードキャストエラーって出てしまいます
これはどうしたらいいですか? >>244
縦方向の範囲も決める
m[0:3,3]=p か m[1:4,3]=p sklearnで機械学習のモデルに使えるクラスの一覧取得したいんですけどできますか? 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 ちょっとスレ違いかもしれませんが何かヒントがあれば教えてください
今はやりのDeepFaceLabをちょこっと体験してみようと思って、ローエンドのグラボ買いました
CUDA9.2版をDLして使ってみたのですが、あきらかにGPUが使われておらず、
CPUの負荷が100%になり、RAMもかなり食っています
解説サイト等を見るとCUDA9.2やcudnnのインストール必須と書いてあるのですが、
DeepFaceLabの中にCUDAやcudnnのdllがあるので要らないのでは?と思っています
(一応インストールしてからも試してみましたが、変わらず…)
CPU:i5 4590 3.3GHz
GPU:GT710
RAM:12GB >>248
先人の知恵を踏み倒しておいてなにをいっているんだおまえは Anaconda環境ってやつは
みんな普通に使ってるものなの?
open cv をインストールしようとしてるんだけど
そっちのほうがいいのか
別のやり方があるのか知りたいのですが Anaconda3 使ってるが conda じゃなくて pip で OpenCV 入れて何の問題も無いよ Anaconda3一応いれたけどVSCodeのターミナルでpipしても反映されなくなって
Anacondaコンソールからpipするようになったな 開発環境がオフラインなんですが、ライブラリを追加するにはどういった方法がありますか?
別環境でネットはつながり、ファイルの移動は可能です。 普通にpip install C:\xxx.whlとか >>254
つながるヤツでライブラリの配布場所へ逝って一式zipで落としてくる
その後つながってない方へ移動させて
インスコ元指定オプション付けたpipでおk >>255
およそケコ━━━━(・∀・)人(・∀・)━━━━ン!! 日本語表記のある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の設定だけではいけないのでしょうか? 日本語ファイルを読み込むにはまずは文字コードについて精通している必要がある
UTF-8のBOMとかは特に
テキストファイルの文字コードが何かも >>260
CP932
もダメでした。
pythonで日本語取扱うのってかなりハードル高いんでしょうか?
想定ユーザーは英語識字能力高くないので、日本語でいきたいのですが・・・。 >>262
だめでした。
テストのため
Excelで
あ
の一文字だけ入力してcsvで保存しているのですが、ファイルの保存方法の設定を変えるべきなのかな。 >>258
pandas read_csv can't decode
でググれば、エラーを無視してread_table使えとかencoding='cp932'にしろとか色々書いてある >>264
ignoreとかいろいろ設定ためしてみたのですが、全て同じエラー
考えてみるとshift-jisって指定しているのにutf-8でエラーってなんかへんですよね >>258 >>265
3系でなってるの?
2系でなってるの?
DO (●´ー`〇)CCHI? >>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)
↑で どうよ >>268
ありがとうございます。
ためしてみたのですが、
例外が発生しました: UnicodeDecodeError
'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
でした・・・。 >>269
263でひとりごとしてる通り、
> ファイルの保存方法の設定を変えるべきなのかな。
↑を試してみてけれけれ 具体的には
(BOMなし)UTF-8で中身「い」とかにしてかぶんない名前で保存、
268のコードのShift-JISんとこをUTF-8に書き換えて
ファイル名も適宜設定した場合
うまくいくかどうか。 >>270
c#でcsv書き出してるけど、そこでなにか設定するべきなんですかね
excelでcsvファイル作って268のコード使ってみたら、もじバケしてるけど動作はしました >>272
263でテストのためエクセルで(ry とか言ってたのに
なんで突然C#が出てくるんだよwww
改行コード問題(0x0D派/0x0A派/両方必要だYO派)が
根底にありそうだとエスパーしてみる。 >>272追記
「文字化けしてるけど動作はした」とやらの端末、OSは何使ってる?
非Windows、おそらくはマカーと予想しているんだが。 先頭にBOMがついていて、encode指定を無視してUTF8と見なし、
許されないSJISコードにぶつかりエラーになっていると妄想してみる C#で出力ということは単純にUTF-8になってる気がしないでもない
読み込みおかしい時は対象ファイルをバイナリエディタで眺めてみるくらいはしようよ すみません、どなたかご教授願います。
Pythonでseleniumを使いchromeを任意のページで起動させようとしています。
しかし、起動するはするものの
driver.get("URL")でページを指定しても、Googleのトップページしか開かない状況です。
どうにか、任意のページで開きたいのですが
何か心当たりある方はいらっしゃいませんでしょうか。 >>277
まずスクリプトの中身をここに書いてけば?
プログラムは書いた通りにしか動かないから君の書き方がミスってるだけな気がするし >>277
278 + >>1 よめ
OSとPythonの種類・バージョンは最低限書け >>278
>>279
OSはwindows 10
python3.8.1です
vs code で記述しています。
ソースコード
from selenium import webdriver
driver = webdriver.Chrome('ファイル場所')
driver.get('URL')
です。 >>280
お前が1すら読んで理解できない池沼だということはよくわかった
ほごしゃの ひとと いっしょに みてね! >>281
初めて質問したもので、勝手がわからず申し訳ない。
http://dpaste.com/0WEPW80
エラーは出てないです。
OS : windouws10 home
Python3.8.1
Editer: VScode
IDEは使ってないです。
https://tanuhack.com/selenium/#h3-1
このサイトを参考にしました。
質問の形はこれで大丈夫でしょうか? webdrive.Chromeに指定するのはgoogle chrome自体ではなくchromedriverのパス >>282
283がいう通り。
Chromedriver.exeをまず入手してこい。
はなしはそれからだ。 >>283
>>284
教えていただき本当にありがとうございます。
chromedriverのパスを設定したら上手くいきました。
最初のほうで失礼な質問をしてしまい、すみませんでした。 >>270
c#側のコードを確認したらshift-jisになっていたので、
utf-8に変更したら読み込み可能になりました。
いろいろとありがとうございました。 でも、shift-jisのファイルをshift-jisとして読み込もうとしても
うまくいかないものなんですね
難しい・・・ >>287
テキストエディタで確実にShift-Jisになっているファイルを作り、読ませてみて >>288
これはできますね。
間にエクセルを入れるとどうもおかしなことになるみたいです。
エクセルって書き出し時のコード指定できないみたいだし。 >>287 >>289
書き出し時の文字コード指定 > 分かりづらいところにあるが、なんとかできたと思うけど・・・
尚、エクセル経由のCSVは基本BOM付きUTF-8になるらしい。
おかしいときはnotepad(メモ帳)あたり使って、なんとかしる。
ANSIとかUnicodeみたいなのが選ばれてるかもわからんね。 df_descr.to_csv('summary_data.csv', mode='a', header=False)
header=Falseなのに、データに日本語があると毎回ヘッダーが書き込まれる
pythonはutf-8で自分で書き込んでいるのに、自分で読めてないってことですよね
pythonで日本語のデータ書き込み諦めたほうがいいのかなぁ
一日本質とは違うところで悪戦苦闘して疲れ果ててきました >>291
間違えました
df_descr.to_csv('summary_data.csv', mode='a', header=False)
header=False
でデータに日本語が含まれているとヘッダーが一度も書き込まれない。
なんででしょう・・・。 >>291の引数のケツに「encoding='cp932'」でも足して味噌
あと、
mode='a'は追記モードで!って意味だから、
最初に何か書かれてたら、ケツに付け足すだけだぞ念のため。 >>292もちつけあふぉたんwww
> header=False
> でデータに日本語が含まれているとヘッダーが一度も書き込まれない
「ヘッダはなしで!」って引数で指示してるんだから
ヘッダーが出てきちゃったらおかしいだろwwwww
>>293
thx
で、BOMの有無はどうなんだ? >>290
notepad上書きで解決というのも読んだのですが、バケバケ状態解決せずです。 >>295
あああ〜
header=False
は常にヘッダー書き込まないんでしたっけ。
csvファイルにヘッダーがなければ書き込む、ヘッダーがあれば書き込まないって設定ありませんでしたっけ?
なんかもうだんだん自分が壊れてきました。 >>296
単純上書きではだめだ
ファイル名を指定して保存 からやらないとだめだ
>>297
一旦休め
めしを食え >>295
> で、BOMの有無はどうなんだ?
試してないけど有りだろ
さすがに自分で保存したcsvが読めないとかないと思うし ちょっとしらべてみた。
>>299のいう通り(?)
ExcelはBOMがないともげしく文字化け起こすから、むしろ必須なようだな。 通知しますか?のポップアップうざいけど
↓の説明あたりはなかなか良いとおもた
ttps://alaki.co.jp/blog/?p=1236 >>301
いろいろありがとうございます。
頭冷やしに散歩してきて、じっくり読んだら解決しました。
これ一人だったら絶対解決できなかった。
Python数値計算とかバシバシできてるときはすごく作業効率いいんだけど、
こういうところで躓くと大量に時間を消費してしまう。
C#と勝手が違うところが多いよね。
使い続ければいいつか立派なPython使いになれるんだろうか・・・。 Software Design 2月号は、Python 特集
Python.jp の手順通りに、Python 3.7 を入れる
VSCode で、Microsoft 製のPythonの拡張機能を入れる!
仮想環境は、venv
pip install jupyter pandas lxml plotly-express
で、使うものを入れる plt.text(0,0,'hello')
と座標を指定するのでなく、グラフの左上、右上などを指定してテキストを表示させることってできますか? >>272
漏れは、Windows 10 のVSCode で、Ruby を使っているけど、
ファイルは、BOM なしUTF-8 しか使わない!
ただし、BOM が無いと、WindowsがCP932 と区別できないから、
エクスプローラーでの文字列検索ができなくなる
そのため、WSL に、Ubutu 18.04 を入れて、
Linux 側から、Windows 内のファイルを、grep している >>296
VSCode で、BOM なしUTF-8 で、保存し直せば? >>302
> 躓くと大量に時間を消費してしまう
これな
どの言語でもだいたいいっしょや
C系とは基本思想が違うからね
文字の扱いは特に違うね
C(無印)の頃からC使ってたおれも
いまではそこそこのPython2系使いです
3系はまだ途中です
>>304
matplotlibの扱い方のことけ? 返信がないから勝手にmatplotlibの扱い方のことだとエスパーしておく
>>304
左上に寄せたいなら
plt.text(0, 0, 'hello' ,horizontalalignment='left', verticalalignment='top, transform=ax.transAxes)
> グラフ座標で位置を指定(transform)
> 基準位置は左上で指定(〜alaignment='left'/'top')
ttps://teratail.com/questions/108513 より >>302
>>307 にも書かれてるが
単に経験不足知識不足
python関係ない 質問です。
IpadのPythonistaでWebページの作成にチャレンジしています。
Projectフォルダにあるurls.py内で
Pathをincludeでアプリケーションフォルダにある
myprofile.urlsを指定しているのですが
No Module named myprofileとなってしまいます。
アプリケーションフォルダはmyprofileで
その中にあるurls.pyもスペルに間違いはないのですが
他に登録する作業か何か必要なのでしょうか? >>310
>>1読んでどこかにurls.pyとやらのソース貼れ >>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のブラウザの設定とか関係してるのでしょうか・・・ こっちはプロジェクトフォルダ内の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,),
] >>308
昨日、突然の救出で読むのおそくなりすいません。
このページのコード実行してみたけど、エラー出るんですよね。
多分自分はplt.plotとax.plotがごっちゃになってて、
対話式のplt.plotはある程度使えるようになってきたんだけど、
ax.pltがまだわかってないんだろうなぁ。
いまのところpltの方でできる範囲なんですが、axの方も使えたほうがいいですよね。 初歩的な質問ですが、
一つのdfとdfデータフレームからスライスした
df_correct
df_incorrect
というデータフレームをあちこちの関数で使い回す場合
1. mainでスライスしてdf、df_correct、df_incorrectを関数に引数として渡す
2. 各関数にはdfだけを渡して各関数の中でスライスしてdf_correct、df_incorrectを生成する
のどちらが正しいのでしょう?
mainでスライスして渡していたのですが、dfだけ渡せばあとは関数内で処理してくれるほうが、関数の独立性が高まっていいのかと悩み始めました 1 コードの冗長性 低い 各関数の独立性 低い
2 コードの冗長性 高い 各関数の独立性 高い
となりますよね。
複雑なステップを踏んだ作業なら1だと思うのですが、
スライスのように一行で書けるコードだと2のほうがいいのかなぁ >>314
そう単純な話ではないが今回に限って言えば
plt.plot のグラフ内なら plt.text
ax.plot のグラフ内なら ax.text
じゃね >>315
>どちらが正しいのでしょう?
この考え方が間違ってる
プログラミングにおける意思決定は常に唯一正しい解があるわけではない
二元思考は捨てて状況に応じて「より適切な」方法を選ぶという考えをすべき
どちらがより適切なのかは主に「各関数にどういう責務/役割を持たしたいのか?」による
correct/incorrectの判別を含む役割を持たしたいのかどうか
どういう風に処理を関数に分解してそれぞれに役割分担させたいのか
行数はあまり関係ない >>312-313
おまえが1を理解できない程度の軽度池沼だということがわかった。
しょしんしゃを かくれみのに する
じしょうしょしんしゃ は しょしんしゃいた いがいの 5ちゃんは みないでね!
おうちの ひとと いっしょに いんたーねっとを していってね! >>319
精神障害等級2級なんで分かるように教えてください・・^_^ seleniumでchrome動かしています
ページ内のラジオボタンをidで拾ってオンにしたいのですが、
画面表示ありだと問題なく進むのに、headlessだとなぜか失敗してしまいます
何か考えられる原因ありますか?
↓の部分でheadlessだとコケます
driver.find_element_by_id("該当ラジオボタンのid").send_keys(Keys.SPACE)
ちなみに月イチで動かしていたコードだったのですが、先月までは問題なく動いてました
chromeが79.0.3945.130にアップデートされたことは関係ありますかね… >>322
chromedriverのアプデは間に合ってるか?
なんかエラー出てないか? バージョンがあってないように思えるのですが、
一応79系では最新のchromedriver使ってます 自己解決で済みません
chromeダウングレードしたら動いたので、やはりchromeのバージョンのせいでした
ちょっとこのまま様子見てみます >>324-325
chromedriverがあわせてくるまでの辛抱ってことけ…
まあ、なんだ、その、がんがれ
そういえば
Chromeはそのへんがしょっちゅう問題になるから
Firefoxに乗り換えたんだったな自分 1, 2, 3, 5, 7, 12, 13, 14
みたいなランダムな数字の列があるのですが、
これらのなかから連続値のみを取り出してそれらの平均を計算し元の配列に戻したいのですがどうすればいいですか?
上記の物だと
2, 5, 7, 13
といった感じです 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)) >>321
フハハハハ!
よろしい、では私の正体をお見せしましょう。
そこのスレに行けば質問に答えて頂けるのですね? >>328
ありがとうございます
最後の行で0除算エラーになるんですが、この行は何に使われるコードなんですか? 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)))
これで合ってますかね? binary classificationだと以下の2つは同じという認識であってます?
predict(test)
predict_proba(test)[:, 1] すみません、リストに[12,54,67,89,22,・・・・]とランダムな数字が2000個くらい並んでる状態で、
200個区切りでtxtファイルに出力したいのですが、その時の参考になるようなfor文を教えて頂けないでしょうか・・ >>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,) >>333
ある言語では
write(dat,"data.txt",200) rubyかと思ってググったけど第3引数はオフセットだったから違うな 文字列内の制御文字をそのまま表示する方法を教えて下さい。
"123¥t456"なら
'123¥t456'
と表示する方法です。Python3系でお願いします。 >>337
print(repr("123¥t456")) cおじさんが今更pythonの入門書読んでるんだけど
リストやタプルを比較できるってどういう意味?
>>> (10, 2) > (9, 4)
True
>>> [3, 9, 5] > [4, 3, 1]
False
これって、リストやタプルの何をどう比較して結果を出してるの? >>338
ありがとうございました!
repr()という関数をはじめて知りました。 自分で冷静に見返してみたんだけど
リストやタプルの先頭の数値だけを見て比較して結果を出してるのかしら? 実験したらやっぱり先頭の数値を比較してるだけらしい事が解りました
お騒がせしました >>342
文字列の比較と同じで、先頭が同じだったら次の要素を比較するんじゃないかな。
1,2 < 1,3みたいな感じで。今試せないから推測だけど。 >>343
ご指摘の通りでした
>>> (1,2) < (1,3)
True
>>> (1,4) < (1,3)
False
でした
ありがとうございました dict = {a:10,b:15,c:20,d:30,e:100}
みたいな辞書型があった場合に
これをそのまんま
string_dict = "[a:10,b:15,c:20,d:30,e:100]"
こんな感じの文字列に簡単に変換する方法ってないですか? >>345
すみません、自己解決しました
jsonで >>345
str(dict)
これで不満だったらdict.items()をリスト内包処理して文字列を作るのがいい
‘[‘+’, ‘.join([str(k)+’: ’+str(v) for k,v in dict.items()]) +’]’
みたいな 仕事で使用している上に特定のソフトのスクリプトなので詳しいことが書けないのですが、
以下のようにクラス変数をチェックするコードを書くと何故か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と正しく表示されるのですが、これに似たスクリプトでおかしなことになって困っています。
何か思い当たる節のある方がいたら教えてください。。。 def set_test(self,a,b,c):
self.testt = a+b+c
print("check1:"+str(self.testt))
みたいになっててもエラーは出ない >>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() >>334
ありがとうございます。解決できました;; try exceptでエラーが出ないようになってて
それが原因でした class testClass():
(略)
self.test = a+b+c
(略)
testClass = testClass()
同じ名前でtestClassを上書きしているので
self.testがインスタンス変数の.testだったりクラス変数の.testだったりなってそう MacでUDP送信できるバイト数は9216バイトまでらしいんですが
どうしても、もっと長い文字列を送りたい場合、何も対処方法はないですか?
以下の回答には、sudoで指定すればいいとありますが、ユーザーに配布するプログラムでは9216バイト以上の
UDP通信は不可能ということでしょうか?
https://stackoverflow.com/questions/22819214/udp-message-too-long packet分割して順番通りに届かなくても良かったり一部lostしても良いものはUDPで送れ
そうじゃなければTCPで送れ
もちろん敢えてUDPで送って受信側が自分で管理しても良い 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/
対処方法わかる方いますか? ヤギさん問題で、パケが届いてないというパケを出してそれも届かない時はどうすんの なんのデータを通信するのか知らないけど
そもそも何故UDPなのか? >>367
1. ネットで拾ったコードがUDPだったものを改良・増築していったからTCPを使うという頭がなかった
2. リアルタイム性の高いものなので何となくUDPかな〜と思ってUDPにしていた
3. TCPの書き方が単純に分からなかったので後回しにした
の3点です。ゲームっぽいものの通信です。 >>369
なぜそうしたのかと尋ねているのだから、本人がそう思ったと言うならそれが正しい理由だろう。
その理解や判断が正しくないならそれを指摘してあげればいいだろう。 print(1)
print(2)
print(3)
と書くのと、
def printTestFunction(one,two,three):
print(one)
print(two)
print(three)
printTestFunction(1,2,3)
と書くのだと、
当然といえば当然なのかもしれませんが、関数を作ってる下の方が処理が遅くなります。
関数を使いながら、処理速度を関数なしの場合と同程度にする方法はありませんか? evalってすごいね
デリゲートみたいにごちゃごちゃ書かなくても動的に関数を実行できるのね 世界を司る陰陽の片方なので
むしろevalからプログラミングが始まった testDict = {"aaa",4}
print(testDict["aaa"])
とすると、TypeError: 'set' object is not subscriptable
とエラーになります
何故ですか? testDict = {"aaa":4}
print(testDict["aaa"])
これで治りました カンマで区切ったらsetになるから「setをの中身をdictのように参照はできんぞ」となるわな もう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}
というように、辞書の中の辞書に要素を追加するにはどうしたらよいですか? >>386
testDict["b"]["b-3"] = 2.3
でいける 完成したプログラムをExeファイル化して配布しようと思うのですが、
pyinstallerで
pyinstaller set_data_ver25.py --onefile
としたところ
maximum recursion depth exceeded while calling a Python object
となります。 再帰関数で処理が膨れ上がるようなことはしてないと思うのですが・・・。 >>389-390
set_data_ver25.pyとやらの中身をみないことにはなんともはや
>>1嫁 maximum recursion depth exceeded while calling a Python object
でググれ floatのunixtimeをdatetime.timeの時分秒の文字列(日にちなし)に変換するメソッドはありますでしょうか?
今はdivmod()で順次割ってformat()で文字列変換し':'で結合しております。 ああ、クラスの方か
クラスも文字列ではないから辻褄が合わないけど
print(datetime.fromtimestamp(unixtime).time())
でいい話のような気もするな
まあ、知らね >>389
https://qiita.com/tobesan/items/12189abc5adbda4a49bd
ここで解決したのですが、今度は
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 139: invalid start byte
が・・・。 おそらく
https://stackoverflow.com/questions/47692960/error-when-using-pyinstaller-unicodedecodeerror-utf-8-codec-cant-decode-byt
でpyinstallerの設定変えろってことなんだとおもうんですが、anaconda使用してターミナルからpipでインストールしたpyinstallerがどこのフォルダにあるのかわからない・・・
アナコンダでインストールしたPyhotnのフォルダってそもそもどこにあるんでしたっけ? >>398
ソースコードをBOMなしで保存してみましたが、同じエラーで・・・。 >>399
じゃあ文字コードあってるかどうかというか、
そもそも、ちゃんと、指定してるんか? >>397
だから>>1嫁ってば
OSくらい書かないとわからん >>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すると
読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力
となるはずが、読み込みファイルを聞いてこず、なにか謎処理をしてグラフは出さずに計算結果だけ出力します。
なんだこりゃ。 Anaconda信者はちゃんとサポートしてやれ
俺はあんなゴミ使わないから知らねー 配列で
0番目の値を1番目の値に足す
1番目の値を2番目の値に足す
というのを繰り返して
最後は
n番目の値を0番目に足す
こういうループを作るのってどうすればいいですか?
a=[]
for i ,h in enumerate(haireru):
___a.append(hairetu[i]+hairetu[1+1])
にすると最後ゼロ番目と計算できないです すみません
aは配列じゃなくてループ内ですぐに使いたいので
iはゼロはじまりでお願いします
for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[i+1])
__b=c*a >>404
foo = [1,2,3,4,5]
[ x + y for x, y in zip(foo, foo[1:] + [0])]
#=> [3, 5, 7, 9, 5]
このパターンこのスレだけでもう3回目くらいだと思うんだけどなんで頻出なのか謎 >>402
だから文字コード(encodingの中身)をちゃんと指定汁とさっきから言ってるだろうがよ
Anacondaの詳しいことはおれもよーしらんわ >>403 >>406
どこかの私大の追試レポートで出てると予想 >>403
Anaconda信者とかより、コミュとれない奴の相手はエスパー・高脳でないと相手できないからな。
>読み込みファイルを聞いてくる→計算処理→グラフ出力→計算処理結果ファイルに出力
以下略
は、エスパー・高脳でないとポカーンになる感じだからな [ x + y for x, y in zip(foo, foo[1:] + foo[0:1])]
#=>[3, 5, 7, 9, 6] >>406
>>410
ありがとうございます
配列って[:]どうしだと合体できるんですね
助かりました 401ですけど、
すいません。
コード上げてきちんと質問するべきですよね。
期限迫ってたのであせってたのですが、寝落ちして少し頭冷めました。
あきらめて現在のところまででまとめることにしました。
今の仕事終えてから、ご指摘頂いたこともう一度確認してみます。 >>404,405
n=len(hairetu)
for i ,h in enumerate(hairetu):
___a=(hairetu[i]+hairetu[(i+1)%n])
__b=c*a どこまでdefでまとめるのが良いのかアドバイスお願いします
一定の距離ごとに物体の置いてその場所や向きや大きさを決めています
距離ごとに計算すべきなのか
最初から物体の位置、向き、大きさをすべて計算して
置けばよいのでしょうか?
↓距離ごとの計算
for km in 距離:
__物体の位置()に物体を置く処理
__向きの計算()に物体の向きを変える処理
__大きさ()に物体の大きさを変える処理
def 物体の位置:
___計算式
def 物体の向き:
__計算式
def 大きさ():
__計算式 続きです
↓まとめて計算した場合
for x in 物体の位置():
__物体を指定の位置に置く処理
for y in 物体の向き():
__物体を指定の向きに置く処理
for z in 物体の大きさ():
__物体を指定の大きさにする処理
def 物体の位置():
位置 = []
__for km in 距離:
___位置.append()
__return 位置
def 向きの計算():
向き=[]
__for km in 距離:
___向き.append()
__return 向き >>414
その2つなら後者を選ぶケースは考えにくいかな
俺の読解力の問題かもしれんが、「for km in 距離:」がよく理解できん
距離はどういうイテレータ?
例えば、距離 = [1, 2, 3, 4, 5] みたいなものと考えればいいの?
で各距離の値によって各物体の位置、向き、大きさが決まる? >>416
ありがとうございます
一個目みたいにまとめることにします
for km in 距離:は
各距離から置く場所や向きや大きさを決めてます >>417
各物体の位置・向き・大きさを計算する部分と
それを使ってI/O的な処理をする部分は分けておいたほうがいいと思う
それぞれ違う理由で変更したくなるから混ざってると後で面倒
きれいに分かれてれば計算しつつ出来た順にI/Oするよう変更するのも簡単
↓関数/データに分けた場合とオブジェクトにまとめた場合のイメージ
https://techiedelight.com/compiler/?n7t7
https://techiedelight.com/compiler/?qDa4 >>418
解説をつけてもらってありがとうございます
入力・出力もどうしようか悩んでいたので
助かります!! raspbian上でwebviewを使用しています。
公式ページのサンプルをコピペしたのですが、そんなattributeは無いとエラーになります。
オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。 >>420
>>1読んでから端末投げ捨てるか、レンチンしろ >>422
煽りが返ってくるってことはだいたい質問が悪い
公式ページのサンプルってどこの公式だよURLくらい貼れ
何を実行してるかわからないのに答えられるわけないだろ オブジェクトが持っているattributeの一覧を表示させることは出来ないのでしょうか。
これに答えろってことだろ
なにをぶつぶつ言ってるんだよw >>420
import inspect
inspect.gemembers(your_object)
かな? >>427
>inspect.gemembers(your_object)
getmembers()の間違い
dir() や help() でも可 >>428
教えていただいた方法で表示できました。ありがとうございます。 (´n`).o(429の端末が初期不良期限翌日に壊れますように) hoge = "わたしの名前は{0}です"
こういう変数hogeは、f-stringで値埋め込むのは無理だよね?
hoge.format()するしかないよね >>432
ムリジャナーイ Python!
hoge = "わたしの名前は{{0}}です"
hoge
↑この2行をこのままコピペ実行してみよう!
(3.6.5以降なら確実におk) >>432
template = lambda: f"わたしの名前は{name}です"
name = "foo"
f"{template()}"
#=> ’わたしの名前はfooです'
f-stringのlazy evaluation版はi-stringってので提案されてるらしい
https://www.python.org/dev/peps/pep-0501/ >>435
なるほどぉ…
出来ることは理解したけど、微妙に読みづらい感があるな
ありがとうございました デバックについての質問なのですが
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分つけて無理やりインデント合わせてコピペして
デバッグしてますが
そういうループの途中だけ動きを見る方法でもっといい方法ありませんか? MATLABでいうsimulinkの代用になりそうな物ってありませんか?環境移行したいんですがこれだけどうしても見つからなくて。 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 >>439
for の中にifコンテニューですか
ありがとうございます
>>440
そんなものあったなんて知らなかったです
ありがとうございます >>437
デバッガでconditional breakpointを設定して
変数が特定の値になった時だけbreakさせる $ 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 forやdefで使う変数が多くなったときはどうしてますか?
7個ぐらいになってくると
行が長くなって何とかしたほうが良いのか
悩みます
色々ありがとうございます
>>442
blenderというソフト内のpython使ってて
本格的なデバッグ機能があまりないのです
その辺りは専用スレで聞いてみます >>445
型にまとめられるものはまとめる
単に行が長いのが困るだけなら改行すればいいだけ
あとは*args, **kwargs >>446
ありがとうございます
なんでも改行可能なんですね
中身を変数にまとめれるんですね
助かります!! >>447
なんでもは改行できないよ。
改行できるとこだけ。 >>445
おすすめはせんけど行減らすだけなら
a=1
b=2
c=3
のかわりに
a,b,c=1,2,3
意味のあるまとまったデータなら別クラスにして
hoge=Hoge(1,2,3) ああそういう意味じゃないのか
制御変数の話なら適当に改行汁
あと blender は漏れも使ってるけど
癖があるので普通の python だと思わない方が良い
(普通の python で慣れてる人が使う分には問題無いが)
考え無しにあれを使い続けると糞プログラマになるだけだと思う plt.subplot使ってグラフを2つ表示しています
plt.subplot(1, 2, 1)
plt.title('attention')
plt.subplot(1, 2, 2)
plt.title('Non attention')
2つのグラフの下中央に大きなタイトルを表示したいのですが、
なにか良い方法ありますでしょうか? def test():
def test_test():
print("test")
があったときに、test_test()を呼び出すにはどうしたらいいですか? ARM64でビルドしたPythonってどっか落ちてませんか >>454
すみません、インデントが反映されていなくて分かりづらい感じになってしまいました。
↓のように、クラス内にメソッドがあって、メソッドの中に関数がある場合
どうやって関数を外部から呼び出せばいいのでしょうか?
def test():
def test_test():
print("test")
外部ではなく、内部から呼び出すには
def test():
def test_test():
print("test")
test_test()
とすれば呼び出せますが、test()の外から呼び出す方法を知りたいです。 ローカル変数みたいなものだから外部からアクセスはできない def test(str):
・def closure():
・・print(str)
・return closure
c = test("closure test");
c() class testclass:
def test(self):
def test_test(str):
print(str)
return test_test
f = testclass().test()
f("aaaaaaa")
へぇこんな事できるんだ、何に使えるもの? >>458
>>459
ありがとうございます。
今までメソッドは全部selfで書いてたんですが
毎秒何百回も処理するような処理を書くとやたら遅くて
試しにメソッド内部に関数を書いたら処理速度が速くなりました。
selfでメソッドを呼び出すと遅くなるので、処理速度を早くしたいときはローカル関数として定義した方が良いみたいです。 csvの例えば5列目が2,3,5,7,3,5,7,,,,,といろんな数字で並んでるとき、
その列の特定の数字を一括して別の数字に変換して、csv保存したいのですが、サンプルコードを頂けないでしょうか >>452
figureの任意の位置にテキスト表示出来る 毎秒何百回程度でやたら遅くなる
とか言うのは嘘と言い切ってもいいと思う >>468
いやこれもホントに
処理内容次第なので、処理負荷の低いものなら気づかないですけど
timeitとか使わなくても目で見て明らかに遅いレベルまで遅くなったんです
信じてもらえなくても別にいいですけど、僕に得も何もないんで cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
パイソンでDLバリバリになるには何の書籍から始めるのが良い?
やっぱ統計学はやんなきゃ話にならない? >>471
統計がわからない機械学習エンジニアはただの占い師
ビジネスがわからない機械学習エンジニアはただのベンチマーク厨 >>472
俺、機械学習さっぱりわからんが、なんか核心をついているような言葉だが
基礎となる統計がわからない自称機械学習エンジニアはただの占い師
ターゲットのビジネスがわからない自称機械学習エンジニアはただのベンチマーク厨
が正しいんじゃないのか
>>471
>cとPHPとシェルとストアドプロシージャ位しか書けないんだけど
こんな自己紹介からして、お前はソフトエンジニアではなくプログラムかける土方
ってかんじだろ。
そんな奴が目指しているのは機械学習"エンジニア"ではなく
機械学習を用いる占い師 や機械学習のベンチマークができる厨 じゃないのか?
なら、統計学なんてやる必要ないんじゃないか。
エンジニアになりたいなら基礎理論の統計学はしっかりやらんとだめだろうが。
どの分野でもめざせエンジニアなら基礎はしっかりやらないと駄目だろ。
例えばソフトエンジニアなら大学・大学院の情報工学科でやるようなことは
学んでないとな。
と偉そうなこと言っている俺は趣味でプログラミングなんだがな。 >>469
そこまで言うなら比較用のコードでも出してくれ 長さの割に中身ゼロの長文には参るな
>>477は今ではチョロっとライブラリインストールするだけで
どんな素人でも始めることのできる機械学習についてまったく分からず
おまけにプロでもないアマチュアなのでエンジニアの求人にも必要資格にも全く詳しくないけど
「エンジニアの資格」にだけは一家言ある変な人ってわけだ >>475
ほかにもあるから教科書買ってきて嫁
>>476
きゃつは万能ではないし、
昔はデータ数制限がきつくって、今も(高額な専用ソフトはもちろんだが)Rに劣っている 簡単なことなんだけどな
データがあって、目的が決まっている
この二点をクリアできないと機械学習をする意味がない
二点がクリアされたとしても性能がでるという保証はないが BeautifulSoupとかいうのを使ってGoogle画像検索結果をスクレイピングしてたけど
多分Google検索結果あたりが変わってとれなくなりました。
html.select('.rg_meta.notranslate')
このあたりの仕様が多分変更になったと思うんですが
うまく取得できる方法を教えて頂けたら有難いです…。よろしくお願い致します;。 今後検索結果が変更になる度にここで聞くのかな?(笑) >>484
申し訳ありません…
でしたら、クラスの指定と思うのですがそのあたりのコツと言いますか
間違いなく出来る方法あたりをお教頂けましたら…
現在 .rg_i というクラスはあるのですが
これをもう、 .rg_i. src img href a そのた思いつくものを
やれるだけ順番を前後させても、半日以上経過しても進めず
本当に苦しくなってきてしまっておりまして、すみません…。 BeautifulSoup使ったことないがググったら答え即でたw >>486
すみません…。自分は前後を変えたり何度やっても
空といいますか画像が取得できないので、
お教頂けたら、ありがたいです…。 >>486
すみませんです…どうやって検索したらよいかお教え頂けましたら… 教えてやるからどこかにパースしてるHTMLを全部置け
そしてどの要素が欲しいかHTMLの中に <!--この要素が欲しい--> と書け JavaScriptで動的になったからSelenium使えって書いてた 有難うございます。
すみません、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 のあたりで目的の画像を一つ一つ取り出せなくなっていると分析しています。 一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
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でなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します; >>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ… >>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね
あとfirefox10でも47でもないいい加減なUAはやめとけ 要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか
スクレイピングは、相手のサイトを分析するのが難しいのと、
適切に限定される、セレクターを作るのが難しい
API が公開されているなら、APIを使った方がよい
漏れは、Ruby で、Selenium WebDriver, Nokogiri などで、
Chrome, Edge などのブラウザーを自動操作して、スクレイピングするけど
ここに書いておいた
【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27 >>492
Base64 は、HTML でもよく使う
Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める
<img src="data:image/png;base64,xxxxx..." /> >>492
適切に、1つに限定される、セレクターを作るのが難しい!
以下で、特定できないのか?
class="rg_i Q4LuWd tx8vtf"
data-iid="0"
jsname="Q4LuWd"
それか、img 要素の外側で、id など、限定される要素を探すか。
基本的には、idを探さないと特定できない
idを振っていない場合は、そのサイト特有のルールを発見しないといけない!
例えば、5ch のスレ内では、id が無いから、
data-id に投稿番号が入っているので、それを使うとか
このように、相手のサイトを分析するのが難しい! >>495
firefoxのUA、修正します。すみませんでした;
そして、以下でやってみましたが
elems = html.select('img[data-iurl]')
なぜか出来ずに、うむむ…と申し訳ありません、さらに研究してみますが… >>496
にも書いたけど、
要素をAjax で非同期処理に読み込むから、またimg 要素が存在しないとか?
Ruby で、Selenium WebDriver を使えば、要素が出現するまで、自動的にwait する。
await みたいに、非同期処理を同期的に書ける もっと簡単に、10〜20 秒ぐらい、sleep したら、img 要素が出現しないのか? 一応成功致しました!
>>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枚づつ取ることができたようでした。
有難うございました! 知ってるよ(どの程度を期待してるのか知らないけどな) thread
threading
multiprocessing
concurrent.futures
asyncio
この辺の違いがよく分からない >>506
それらはOSやCPUを自力で作れる神クラスの技術者でないと理解できないし、使いこなせないと思う
一般人である自分もドキュメントを読んでみたが、チンプンカンプン(死語)だった
さっさと忘れてPythonを楽しみましょう GUIやるなら、threadかasyncioのどちらかは必須。 GUIやるならC#+VisualStudioが一番 Mac持ってないからわからん
俺は自分用ツールしか作ったことない なんで情弱しか使わないMacに対応しなきゃいけないんですか!(半ギレ シェア一割のくせに態度だけ見てると九割くらいありそうだよなw Windows/Mac/iOS/androidに対応したGUIを作ることができます
そう、pythonならね React Native + Expo
アシアルのMonaca(Cordova/PhoneGap) + Onsen UI もある 普通にWindowsで作ったC#はLinuxでもMacでもMonoで動くぞ C# では、Microsoft が、
>>519
や、Unity などに対抗するために、Xamarin/Mono を買収した Ruby禁止だけじゃなくMono/C#も禁止するか >>515
開発者のMacのシェアは約30%、Windowsは約45%、Linuxが25%
Windowsはシェア半分もない 世代交代しか訴えられないんじゃぁ、ぶてぃじぇっじもたいした候補じゃねーなぁ >>506、>>507
良くわかるけど
Pythonやるにはあまり関係ないよ? >>506
ソフトエンジニアならわからないと馬鹿にされるんだろうが
でも、この底辺スレに来る連中はエンジニアではなく低レベルのサンデープログラマが
ほとんどで分からない奴が大多数だろ(もちろん俺もわからん) >>506
プロセス(OSから見えてる単位)→スッドレ(プロセスの下にわさわさ増殖可能)→コア(CPUの部品)
1プロセス=1CPU
プロセスとプロセスの間の情報やり取りはゲキムズ&低速。
スッドレとスッドレの間はやり取りOKだけど、
メモリを奪い合わったり書き換えっこになったりしないように要注意。
あと、旧来は1スッドレ1コアが普通だったけど、
今は2スッドレ1コアが普通になりつつあり、
多スッドレ→1コアする場合はメモリ領域の扱いに注意が必要。
(どのスッドレも同時にみんな手をつないでゴール!を強要されない計算の場合は)
1つのプロセスからいっぱいスッドレわかせて計算するより、
いっぱいプロセス湧かせて順次まとめあげる方が、高速&効率が良いはずである。
だが、
多プロセス化するとメモリはもっさり消費される傾向なので、
ほんとのところは、
やりたいことが同期を強く求めてるかどうかと、マシンスペックによるのである。 (つづき)
さきにあげた並行処理を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 ココハ ゴジャースナ(・∀・)スッドレ ダヨ!!! >>534
ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解してるようだな。
勉強してからもう一度書き込むように。 >>> (10).to_bytes(2,'big')
b'\x00\n'
期待している結果となりません。
b'\x00\x0a' にならないのは何故? >>540
ドキュメントのbyteオブジェクト関連の項目を読むと書いてあるが
文字として見せた方がわかりやすいと思われるバイト値は
16進ではなく文字で表示する方針なのだそうだ
だから値としては正しく格納されているので気にしなくてよろしい >>541
納得しました
誰得の方針なのか、モヤモヤは残りましたが… >>542
ところで、この(値).to_bytes()っていう書き方は初見なんだが
いつからある機能なんだろうか(自分の知識はver.3.3で止まっている)
JavaっぽくてPythonらしくないと感じるのだが >>543
int.to_bytes(length, byteorder, *, signed=False)
New in version 3.2.
だそうです flaskでsms認証つけたいんですけど何がおすすめでしょうか?
アカウントにユーザーのメルアド、氏名、住所もつけておきたいです。 >>547
人の会話に茶々入れるんじゃないよ
即NGだ 会話に茶々入れたくなければ公開掲示板なんかで聞かなきゃいいじゃん
つまりいくらでも茶々入れていいのが2ch5chでしょ
その基本を無視して俺ルールをいきなり押し付けられても困る
で、賢さってのは知識量のことなワケ? だって「超初心者」が知識と賢さを混同してるらしいからね
ほっとけないね >>539
>ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解
そのようだ…
ありがとう
そしてありがとう
Pythonのライブラリでやれるのは
ソフトウェア的マルチスッドレだな というわけで
>>506よ、
536のことはうっちゃっておいて
>>537の先頭2行も脳内から消して、詳しくはケツに貼ったQiitaの人の記事を読んでクレクレ list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか? 一般的には想定される普通の使い方をする時に一番早くなるように言語を作る
それに間に一枚噛んでると遅くなる、と思うのが人間
あとは長さ10万くらいのリストを数千回試して時間を計る お前ら木偶の坊なんだから俺の疑問に答えて少しは世の中の役に立てよ
という意識があのような質問を生むのだ >>555
sum(for x in range(10))
sum([for x in range(10)])
これの違い。 sum(x for x in range(10))
sum([x for x in range(10)])
だった。 >>553
listをsetに変換するコストを無視してもsetをイテレートするほうが遅いよ
hash tableをイテレートする時に必要な処理とlistをイテレートする時に必要な処理の違い
といってもその差は微々たるものだから
その差が重要なプログラムを書こうとしてるなら言語を変えたほうがいいかも >>554-562
ありがとうございます
あまり大きくは変わらないのですね
参考にします >>561
上: generator (リストは造らない)
下: 内包表記 (リストが造られる) for i in set(list):
listのイテレートとsetのイテレートが発生するのと、一旦setのためのメモリが確保されるから、
setの重複排除機能が必要でない限り、100%無駄だと断言できる。 >>563
複数のやり方でどれが速いのか気になったら%timeitしよう むしろforの中身を見直すか
numpyとか使うべき
ループはクソ遅い 質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが >>568
>そっちは遅くて当たり前なんだが
その当たり前を教えてくれ >>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す >>568
リストをfor文を回してsetより速くする方法が他にあるってことですか? >>570
リストって、毎回全要素をリニアサーチしているって事ですか? >>571
>>568で
>forでsetより遅くなる道理はないと思うが
と言っている。で、これから
>リストをfor文を回してsetより速くする方法が他にあるってことですか?
がなぜ出てくるんだ?
>>568の前の部分はfor~inについてではなく、
list/setの要素にこれ(x)ある?を調べるin演算(x in list/set)についての
ことを言っている。 >>572
570はサーチとイテレートをごっちゃにしてるわな。
listは動的配列だから、オブジェクトへのポインタのポインタをインクリメントしてるだけだわな。
サーチはその後の話だろ。 >>575
いや君がごっちゃにしてるだけでイテレートの話なんてしてないだろ
570はin演算子使った時にどうやって探すかの話だろ 色々脱線はしているのかもしれないが、最初の質問は >>553 で
リストを処理するのに、そのままよりも、
setを噛ませた方が速くなるかどうか、ということであって
リストの内容は全件処理しているようだし 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 がちゃんとすれば良いんだと思う 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に変更しても元々がリストなので早くならないですか?
これが最初の質問 この質問で想定される回答は
for i in set(list):の方が高速
どちらも変わらない
set 使わない方が高速
この三通りじゃないかと思うが >>580
俺も何がわからないのかわからん
in演算子が何かわかってないから
>>568や>>570に書いてることが理解できないんじゃないかな
と想像してみる >>583
それはもう回答が出てるでしょ
んで普通に考えたらsetにしたほうがが速いという考えにはならないのに
setのほうが高速かもしれないと思ってしまってるのは
for loopのfor x in fooの`in`と
contains(foo, x)を演算子にしたin演算子の`in`とを勘違いしてるんじゃない?
ってコメントが>>568 回答までにしか興味は無いです
後は、妄想も含めた雑談なわけだし >>584
そういうことかね
>>585
前にQiitaでリストにin演算子使うと遅いっていう記事がバズってたからね
そういうの見て質問者が漠然とリストはsetより遅いって思い込んでしまった可能性はあるね >>584
質問者ですがそうです
setのforループの方が早いのかと思い込んでいました
>>574で自分の勘違いに気づいたところです >>583
ケースバイケース
っていう可能性もあるかと >>589
ハッシュキーが衝突したレコードが大量にあるとか、かな? ちっちゃい質問かもなんですが
かっこ閉じ際の位置って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
) >>591
pythonの思想は1行で処理だから改行すな kakko(
____1+2+3+4,
____5+4+6+7)
または
kakko(1+2+3+4,
____5+4+6+7) >>592
ですよね・・・
そうなると式が長くなる時は
かっこの前に分かり易い名前をつけて
さきに計算しておいたほうが良いですか?
kakko_a = 1+2+3+4
kakko_b = 5+4+6+7
kakko(kakko_a,kakko_b)
>>593
ありがとうございます
かっこ閉じは改行で分離しない方が良いんですね 実運用としてはblackとかyapfにフォーマットさせてそれに従っとく >>595
これ使えば悩まなくて済みそうです。
ありがとうございます!! pythonの流儀・作法に従うのが一番いい
もしもどうしてもやりたいなら他のメジャーな流儀を真似る
WINAPI とは何か? - C/C++ 入門
https://c.keicode.com/windows/windows-programming-11.php
int WINAPI WinMain (
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow ) { >>597
>pythonの流儀・作法に従うのが一番いい
そのpythonの流儀・作法を聞いてるのになぜそれに答えずC++のそれもWIN32API持ってくんの? Pythonの初級を受けた人いますか?
どのような勉強されたか教えてください
m(__)m 継承クラスのinitの引数が増える場合はどうしたらいいですか?
class person():
def __init__(self, age):
this.age = age
class student(person):
def__init__(self, age, number)
this.age = age
this.number = number
こんな感じにしたいのですが。 >>599
ぱいそんのしかくしけんはひとつだけじゃないんだ
きみがいっているのはどのしけんのしょきゅうかな? >>599
何にも勉強せずに一度受けてみるとよい
試験の雰囲気と問題の内容と自分の実力がわかる
それを踏まえて備えれば二回目は受かる >>600
Student側でsuper().__init__(age)するだけじゃねーの
ああ、基底クラスの__init__を呼ぶ方法が分からんのかな? それにしても、金になると思うとすぐ資格ビジネス屋が群がりやがって a1 = 0, a2 = 0, a3・・・・が続く
for i in range(1, 2):
i = i +1
a[i] = 5
a+数字に値を入れたいのですがa[i]のような使い方はできないのでしょうか pythonってインターフェースって概念はあるんだっけ? >>601
有難うございます。
Python3エンジニア認定基礎試験です >>605
(インデント崩壊してるからか?)
質問がイミフ
+
投稿前に1見ろ これはスゴイ
やりたい事はなんとなく分かるが、
何をやりたいのかが分からない >>605
a1 = 0, a2 = 0
for i in range(1, 2):
i = i +1
exec(' "a"+str(i) + "= 5" ') 初心者のうちはそういうことやりたくなるのわからなくもないけど素直にlist使いましょう >>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 >>605は
a1 = 0, a2 = 0, a3・・・・が続く
があり、それらに、オブジェクトaを通して
a[1]でa1に,a[2]でa2に....([]を使って)アクセスしたいってことだろ。
(a[1]のaはaでなくても、名前みたいなものだから好きなのにしていい。
aシリーズにアクセスするらわかりやすくaにしている)
こんなことを実現するクラスの作り方を教えて?という質問になるよな。
と、言っても俺は低脳で出来ない。
>>612
俺もそれで間に合うならそれが良いがと思う >>614
絶対違うと思うがそういう解釈ができなくもないなw
subscriptingは__getitem__, __setitem__を使えば可能
https://ideone.com/7WR8yJ あー
for i in range(1000):
__try:
____a[i]=5
__except
的な? 605です
レスありがとうございました
>>610さんのアドバイスで私のやりたかったことが出来ました。ありがとうございます。
execを初めて知りましたが、初心者的には便利な使い方ができそうですね
hoge = "aaaa"
exec('hoge = "ほげ"')
print(hoge)
>>616
それです dtreevizで決定木を可視化したのですが棒グラフの下の閾値が謎の数値と被ってとても見にくい状態です
閾値だけ表示させることはできますか? a1=0,0
はタプルになるから
a1=0,a2=0
もそうかと思ったらこっちはエラーだな >>617
こいつとは仕事したくない
うちの会社にいたら首切る 別にええやん
学生かもしれないしプログラマーじゃない可能性も高いし
簡易的なツール作るだけならそんな高いレベル求められないし
execを覚えたというだけでも成長したのにそんな言い草あるか? >>620
初心者が間違った判断をしたならそれを指摘してやればいいだろう。
おれはお前のような奴の方が一緒に仕事したくないよw 環境は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に表示されない原因に思い当たる方がいたらどうかよろしくお願いします。 >>624
パス通す順番はジッサイトテモダイジ
MacにしみこんでいるPython(2系)の存在を忘れてはいけない。 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まで読み終わった復習として作りました >>625
ありがとうございます、それ聞いて試しに
aliasのpython="python3"
を外したら動きました、linuxだとpython2で認識するんですけど
macだと効かないんですね……悩んでた問題が一つ解決しました、本当にありがとうございます。
ただ今インストールされてるnumpyやtensorflowなどがpipで出ない方は解決できてません
上記のこともありpip listとpip3 list両方試したんですが全く同じ結果でした…… 申し訳ありません、自己解決しました
何故かPATHで/usr/PATH/pypy3が先頭に立っててpypyが一番最初に呼び出される設定になってた為
pypy3のpipが表示されてたんだと思います……PATHのpypy3外したら直りました。
長文と勘違いで迷惑を書けてしまい申し訳ありませんでした。 >>626
どうしてa1とかa2の変数名が必要なのかわからないな pythonでオブジェクト指向やれば
selfだらけになってシグナルノイズ比が高い事は自覚しておくべき
明示的にselfを渡してる言語としてGoやRustと同列に語るのはぶっちゃけ頭おかしい
Goはどの型のメソッドが識別するためにselfを渡してる
Goの場合はそれ以外で識別する方法がないから
Rustはselfの使い方が3種類があるから
関数がどの種類なのかをシグニチャで指定するために明示的にselfを渡してる >>626
何を参考にコーディングしたらそれが生まれたのか純粋に知りたいw 条件分岐の分かり易い書き方について教えてください
通常では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が最後に来るのはわかりにくい気がするんですが
どうしてますか? >>636
別に気にならないけど、前に持ってきたいなら
最初に無条件でa=bを記述
その後条件文を記述
にするかな ちなみにそんなことよりも、自分がレビューするとしたら
cが0でbが1の時は本当にa=zでいいのかとかが不安になるわ >>636
通常ケースと通常でないケースという認識なんであれば
3つを並列に書くんじゃなくガード節を使ったりして通常ケースとそれ以外のケースを分離する
def evaluate(b, c):
____if c == 0:
________return z
____if b == 1:
________return y
____return b まあ変数の真名と役割をコメントしてくれないと可読性の議論は出来ないよね
順番とか記述方法云々よりそっちが先 >>638
条件が変わったら上書きしていくのもアリなんですね
ありがとうございます
説明へtsくそですいません・・・
>>640
ありがとうございます
こんな方法あるんですね
>>641
コメントでの説明がへたくそすぎて
後で過去の自分を殴りたくなることが多いですorz 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
上のスクリプトはターミナルからも実行できます。
(リストの文字列の数のみの違いです)
以前はこんな感じのエラーは起きなかったのですが
原因がわかる方おられますか? 自己レスです。
# coding: UTF-8を入れたらターミナルからも実行できましたが、
なぜリストの内容数とVScodeからだと問題無いのかがわかりません。 「python non-utf-8 code starting with ' xe6'」で検索!
どうせ、文字コードが異なるとか?
BOM 無しUTF-8 で保存すれば?
漏れは、Windows 10, VSCode で、Ruby, JavaScript などを使うけど、
すべてのファイルを、BOM 無しUTF-8 だけにしている! >>650
上下とも同じエンコーディング(BOM 無しUTF-8 )で保存しています。
リスト内の文字列は全て同じ文字列の繰り返しで、2種類のスクリプトは要素数のみの違いです。 # coding: UTF-8 書いてなかったんだろ >>652
>>648で書いたように、# coding: UTF-8は入れてなかったのですが、
知りたいのは、以下の2点の理由です。
1.VScodeだと問題なく実行できる
2.リスト要素数の違いによるエラーの有無 sys.getdefaultencoding() みろ >>> sys.getdefaultencoding()
'utf-8' >>657
単にマウント取りたいだけなら返信不要です >>654
VSCode では、Microsoft がPython の拡張機能も作っているし、
設定ファイルにでも、UTF-8 で起動するように書いてあるのだろう
一般的には、IDE などの統合開発環境は、親切 >>654
原因はバグ
対処は改行して1行のバイト数を減らすか
明示的にencoding指定をファイルの先頭に記述するか
https://bugs.python.org/issue34979
VSCodeで実行できるのは>>659の書いてる通り何か設定してるからだと思われる
俺の環境ではVSCodeでも同じエラーが出る >>659
>>660
ありがとうございます。すっきりしました。
バグですか。確かに配列内容を分割しただけでエラーが消えたりしてたので悩みました。 要領悪いやつ
大人しくutf8宣言しときゃ動くんだからそうしろよ
お前なんかがvscodeのバグ発見したからって何になるんだ
時間のムダ 単に知的好奇心だろ
おまえみたいなIT土方にはわからんか 全く知的ではない
ただの"何でvscodeだと上手くいかないのムキー"でしかない
その証拠にバグと分かったらもう投げ出してる それがなんで証拠なんやろうか
バクについてまでは興味ないってだけやろうに
土方が偉そうに評価するな バグだったら仕方ない、
自分のせいじゃない、
よかったよかったあースッキリ。
どこに知的要素が存在するのか 知的好奇心のない奴は動けばいいやでuft8宣言して終わりだろうな プログラマーが日本語のバグで時間を使うのは、馬鹿らしい。
Python は、日本語対応をやってない
Ruby なら、Cookpad・マネーフォワード・Ruby 開発とか、
日本人のメンテナーが、一杯いる >>667
だからそれで終わりでよい
知的な意味もなく自己満足のためにムダな時間費やす無能よりも幾らか使えると言っているのだ True=1,False=0じゃなくて
IFで何行も書かなくても
Trueの時は1をかけて、Falseの時はマイナス1を掛ける方法ってありますか? 普通は
*(1 if hoge else 0)
だろうな
hoge*1でもできるっぽいけど >>672
*(1 if hoge else -1)
で行けるんですね
ありがとうございます! >>675
Basicは三項演算子なかったからその手のコードよく見かけたな
Trueが-1だから-2*hoge-1とかにしないと駄目だけど >>670
その通り
コマはコマらしく動いていればよい みなさん色々ありがとうございます
>>677
*[-1,1][hoge]なら短いし
1か−1を掛けてるのが一目でわかっていいですね。 >>679
横からですまんが
この*は何?掛け算記号じゃないよな >>680
>>671で-1か1を掛けたいと質問したので
*マークをつけてくれたんだと思います 糞みたいな小手先のテクニック使うくらいなら潔く if else で書けや x * [-1, 1][hoge]ってことだと思うが
流石にこれはない
評価する変数にboolしか入らない状況なら
x * (hoge or -1) でいいんじゃないかと思うが
これだと何のためにやってるかわかりにくいので
通常のif else使って関数化したほうがいい気もする >>684-685
俺もそう思う。
元質問をしたPythonでの三項演算の表記を知らないレベルの人は
x * [-1, 1][hoge]やx * (hoge or -1) を嬉々として・どや顔して
使いそうだが [-1, 1][hoge]は0,1以外弾くから結構間違いが入り込みにくい実装なんだけどね。
まぁ、普通は三項演算子使うだろうな。 質問ですが
def内で使う変数名を考えるのが面倒だし
後でどれがどれか分かるように
引数と同じ変数名にしてますが
問題ないですか???
グローバル変数はほぼ使ってないです。 def addnumbers(a, b):
return a+b
a=10
b=5
print(addnumbers(a, b))
みたいな話?
なら別に問題はないけど。
引数じゃなくて関数内で宣言するローカル変数の話なら、頭に_をつけたりして外の環境をマスクしないようにしたほうがお行儀がいいけど。 >>689
そんな感じです
ありがとうございます
解説とかだと大抵名前変えてあるので
変えた方がいいのかと思い込んでいました >>690
動くか動かないという意味では動くから、同じであっても問題はない、というだけだぞ。
意味的に分かりやすく適切な名前をつけるべき。 >>690
> 変数名を考えるのが面倒
これは2年後にタイムマシンで過去の自分をブン殴りたくなるまでなおらんとおもうが
なおせるものなら早めになおしとけ
> 後でどれがどれか分かるように
この発想はただしい。
で、どうしたらいいのかについては>>691が書いてくれてる
つまり
考えるのが面倒だから、って理由で
引数の名前をaだのbだのにしておくのはやめておけ 名前を考える時間がもったいない
スクリプト言語はいかに早く作り早く動かすかが命
一度動けば後は野となれ山となれ どうしても名前を考えるのがめんどくさいならば
注釈で変数の意味を書いておくという方法もある
典型的な変数の値も書いておくとなおよい 関数の分割と命名が適切ならローカル変数なんて全部一文字でいいよ
そんなことで読めなくなるような長い関数を書くな >>695
2行目には禿同
>ローカル変数なんて全部一文字でいい
ここまでがんばる必要はない >>693
そう思っていた時期もありました
まだならこれからなるか、或いはクビになるでせう Goはむしろ一文字変数と引数を推奨してるね
コードが十分に構造化されていれば、長い変数名はノイズになって逆に読みにくいってのは一理ある 689だけど無次元数を扱う場合はa,bとかm,nとかを使うな
ファイルディスクリプタならfd
ループインデックスはi,j,kとかix,iy
それ以外は英単語2〜3個を繋いで変数名にして
PandasのDataFrameやNumpy Arrayみたいに実質型のないものはアプリケーションハンガリアン
ローカル変数だと頭にアンダースコアをつける感じだな 雑魚はせめてリーダブルコードでも読んでからコメントして 「最善の名前とは読み手が誤解を招かないこと」って書いてないか? ローカル変数名ですけど
例えば名古屋から広島の距離を計算するとして
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とか??? >>704
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ >>704
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる >>704
そのdefのはっそうは、正直よろしくないとおもう。
使いまわせないだろw
def kyori(from, to):
にすれば、使いまわせるだろw
でもって、
引数のあとの「:」を忘れるな
+
(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。 >>707修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか 関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?
>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。 namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます? >>709
pythonスレならまあわかるでしょ
ってレベルかと >>709
なるほど
函数定義って言えばいいのか
なるほどなっとく
口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。 >>710
綴りちがっとる
×tupple
〇tuple
from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当) >>705
趣味でやってるんですが
ほぼほぼ作ったのが後々改造できなくて
投げ捨てるはめになってるので
何とかしたくてって感じです
>>706
趣味なので自然と身につかないのです・・・
>>707
具体例ありがとうございます
気を付けます >>714
> ほぼほぼ作ったのが後々改造できなくて
> 投げ捨てるはめになってる
www
わかるwwwww始めたばっかりの頃のあるあるwwwwwわかるwwwww
オライリーの
リーダブルコード
ISBN-10: 4873115655
ISBN-13: 978-4873115658
(あるいは
ビューティフルコード
ISBN-10: 4873113636
ISBN-13: 978-4873113630 )
を
買って読んでみたらー
中古でも安くなってないだけのことはあるでよー オブジェクトがコピーなのか現物なのか、調べるにはどうすればよいですか。または全て現物で渡すには?
1. クラスの初期化時に引数として渡してselfに格納
2.クラスのgetterメソッド返り値としてselfの値を返却する
3.手順2で得られた値を演算したものをクラスのsetterメソッド引数として渡してselfに再格納
1〜3まで全て現物でいてほしいのですが、どこかでコピーになってしまうようで同期しません。 716、自分でも分かりにくいので追記です、
e = 1
a = Class1(e)
b = Class2(e)
tmp = a.getE()
tmp += 1
a.setE(tmp)
b.print()
このprintの結果が、2となって欲しいのです。 >>716-717
書き込む前に>>1嫁
>オブジェクトがコピーなのか現物なのか、調べるには
id(オブジェクト)
↑これがオリジナルとコピーでは異なるので確認汁 >>718
ありがとうございます。
原因わかりました。
716で書いてるeが実際はイミュータブルだったので、書き換える際にreplace呼んでid変わってたみたいです。
eを自作クラスに変えたら動きました。ありがとう リーダブルコードでググったら英語版はタダで見れるのか
苦Cみたいなもんか? このクラスの########から########の間を
書き換えて別の子クラスを作る方法を教えてもらえませんか?
リターンはなくて条件によってどんどん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 class tijimi(coner)作ってsuperのinit呼んだ後にif文羅列じゃ駄目なの? >>722
>書き換えて別の子クラスを作る方法
継承してオーバーライドすること言ってるのかな?
それと
条件によってpをどんどん書き換えていくような仕様は
一般的にはものすごく悪い設計
バグりやすいしテストもしにくいので避けたほうがいい >>720
>英語版はタダで見れる
なん・・・だと・・・・
まあいいや
日本語版書籍には訳者によるおまけがついてるらしいから・・・ >>724
たぶん、継承オーバーライドの事だと思います
よくわかってなくてすいません
pを書き換えていくのを直します
ありがとうございます
>>723
ありがとうございます
やってみます 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 リーダブルコードもコードコンプリートも読んだ上で700書いてるけどねえ
PEP8とかもそうだけど、知恵とルールを混同してしまう人が結構いる アンカも打てないのかよ
いちいち自分で辿らせるとかどんだけ構って欲しいんだ >>727
endとか90年代かよダッサ無駄な記述乙 裏表紙のない本
ドアのないトイレ
キャップのないペットボトル Macなんですが元々入ってるPython2系をpython2で呼び出して
Python3系をpythonコマンドで呼び出す方法ってありませんか?
alias python="python3"
を設定してもpython2が使えなくなる代替案を探してる最中です >>735
エイリアスで置き換えすることばかり考えてました、ありがとうございます
m(_ _)m >>731
トイレを使って水を流さない犯人を見つけた >>733
pipだったり他のプログラムが使ってるpythonの依存ぶっ壊れるようなやり方すぎる。
dockeで隔離するか、pyenv, anaconda 使うなりする方が問題起きたときに復帰しやすいと思われる。 >>733
ln -s /usr/bin/python /usr/local/bin/python2
ln -s /usr/local/bin/python3 /usr/local/bin/python デフォルトの設定を変えたら、それを使っている無数のアプリがバグルw
OS の仕組みを学べ! 呼ぶときはPython2ならpythonで、Python3はpyで呼べるようになってるだろ
方針としてpythonで呼ばれるのはPython2のままにするっていうのがあるし $ pip3 --version
bash: /home/xxx/.local/bin/pip3: そのようなファイルやディレクトリはありません
$ which pip3
/usr/bin/pip3
以下のページ通りにやったら直った
パッケージ更新インストール後にコマンドが実行できない場合の対処
https://qiita.com/vmmhypervisor/items/e846338b204061040957 import numpy as np
a = np.array([1,2,3])
print(a.shape)
こうやると、
(3,)
と表示されますけど
この3の後ろにあるカンマは
どゆ意味なんでしょう?
不必要としか思えないのですが? tuple
同じ型が返されることに意味がある
(3,)と(3)で型を比べてみればいい >>747
ありがとうございます。
型を比べると(3)はint、(3,)はtupleですね。
np.arrayのshapeをtuple型の同じ型にする、
ということですね? >np.arrayのshapeをtuple型の同じ型にする、
>ということですね?
日本語がおかしい、もしくは理解の仕方がおかしい。
「np.array の shape を print で確認したら、tuple 型で (3,) だった。」
くらいは書いてほしい。 >>748
何が言いたいのかよくわからない
何と何が同じなの? 新しいノートパソコン買ったけど使ってるやつpipして入れていくの面倒だな >>752
現行このスレの上の方か、前スレで
pipで既に入ってるものを全部txtに吐かせて
それを新しいPCにコピーして
新しいPCのコマンドプロンプトからpipに食べさせる方法レスした記憶 >>752
コマンドをバッチファイルに記録しておくのおすすめ
何を入れたのかの備忘録にもなるし、クリーンインストール後にも一気に復帰可能 あーそういやエクセルにpip一覧作ってコピペって入れてたな
あれバッチにすればよかったのか! >>753で書いてた過去のレスの、要約したったど
てきとうな階層でコマンドプロンプト起動して
pip freeze > requirements.txt
できたtxtを次のPCの
これまたてきとうな階層に入れ、
そこからコマンドプロンプト起動して
pip install -r requirements.txt このコードについて質問です
https://github.com/TestStudio/usbmuxd/blob/master/python-client/usbmux.py
class MuxError(Exception):
pass
raise MuxError("socket connection broken")
みたいな書き方がされていますが、なぜ何もしない(passだけする)クラスを作って使用しているのでしょうか? Ruby なら、StandardError を継承して、カスタム例外クラスを作るだけ!
class MyError < StandardError
def initialize( msg="引数なし" )
super
end
end
raise MyError #=> 引数なし (MyError)
raise MyError, "引数あり" #=> 引数あり (MyError) Exceptionを継承してるのだから何もしてないわけではない
既存の例外クラスをそのまま使わず新たな例外クラスを作ればexcept節で場合分けしやすくなる 質問が大雑把すぎて答えてもらえない気がするんですが…
>>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 >>763
いくつもエラーが出てるんじゃなくて
エラー内容と呼び出し履歴が表示されてるだけ
101行目ので
「TypeError: can't concat str to bytes」ってエラーが発生してる
python2用のコード よく見たら11年以上前のコードやん
個人的にどういう経緯で辿り着いたのか気になる >>764
ありがとうございます…!!
101行目のエラーさえ潰せれば解決なんですね…!!
>>765
iOSデバイスとPC上のPythonをUSB/lightningケーブルで接続して通信をしようと思ったのですが
それらしき情報がコレしか見つからなかったので辿り着きました インスタンス変数についての質問です
他言語(c/c++/c#)から入った人間の例に漏れずself/clsって何なの…となりました
で色々見ているのですが1番大きな疑問はインスタンス変数です
サンプル見ると大体コンストラクタでself.x=とかやってますがこのxはどこで定義されているのですか?
仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
それに関数で新しく定義出来てしまうならインスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
この辺りの解説を探しても見つけられませんでした
ご教授頂ければ幸いです コンストラクタでself.x=とやればそこで定義される >>768
>インスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
オブジェクトがどういうメンバを持つかは静的じゃなく動的
インスタンス化後にインスタンス変数やメソッドを追加できる
クラスはディクショナリみたいなものだと思っておけばいいよ
https://ideone.com/aAGA0y
>仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
メソッドの第1引数にレシーバのオブジェクトが渡されるので
それを`self`という名前の引数で受けてメソッド内では渡されたレシーバを使って
`self.x`とかでインスタンス変数を参照してるのでスコープ外ではない
ちなみにselfは慣習として使われてる変数名であってhogeとかに変えても問題なく動く あとCの経験があるならPyObjectについて調べたら理解が進むはず 仮想通貨のbotを作りたいんだけど、
AWSのCloud9で、
pythonのプログラムかいて動かす場合、
ブラウザー閉じたり、PCの電源切ったりしても、
プログラムはずっと動くの? >>768
Ruby では、デフォルトでインスタンス変数は、private だから、
アクセサー(attr_accessor)で宣言しないと、クラス外部からアクセスできない
class A
attr_accessor :x
def initialize
@x = 1
end
end
p A.new.x #=> 1 >>775
そうですかぁ
停電とかPCの故障で停止して、
大損したらまずいと思ってたから、
AWSでずっと動かしてみる、
クラウドなら停止しないで安心ですね。 >クラウドなら停止しないで安心
ヒソ( ´д)ヒソ(´д`)ヒソ(д` )ヒソ >>776
そのレベルなら停電の心配するより自分のプログラムのバグで損失出す可能性の方がはるかに高いだろう。 Cloud9にPyCarmで書いてたプログラムを移して、
AWSで動かしてみました、
ブラウザー閉じても、無事に自動で動いてるみたい、
もう、20円くらい稼げた、
これで、寝ているだけで朝起きたらお金が増えてるかな、
AWSは750時間分無料で使えるみたいなので、
しばらくこのまま動かしてみます。 ◎バグで損失
〇アルゴリズムがクソで損失
△利用料の請求でしぬ >>770
参考になりました
https://stackoverflow.com/questions/12569018/why-is-adding-attributes-to-an-already-instantiated-object-allowed
検索して見つけたんですがここでもクラスはディクショナリの糖衣構文なんて書いてますね
いやしかしそうすると同じ型のオブジェクトなのにその後の操作によって違うメンバを持ってたりするわけですか
えぇ……型適当すぎませんかpython……
selfに関しては自分自身を参照型なりポインタなりで関数内に渡していじくってると考えればいいんですかね
なぜthisにしない……そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ…… >>782
言語が異なれば用語や概念は異なるのだから、自分の母国語に無理に当てはめて考えようとすると行き詰まるぞ。それぞれの言語で意図やポリシーがあってその言語の仕様が作られているのだから、違う考えに基づくものだとして違いを受け入れ、理解しようとしてみなよ。 動かしたまま寝て朝見たら、
無事に動き続けてました、
45円くらい利益出たから、
半日もしないのに資金の1.2%程増えた、
ほんとに、寝ているだけで朝起きたらお金が増えてるw
クラウド便利ですね、ありがとうございます。 >>782
嫌なら使わなくていいよ
世界で2番目に使われてる言語は諦めて田舎で畑でも耕してな >>782
selfに関してはC++やっている奴なら、非明示でC++のメンバ関数にもPythonのself
のようなもの(this ポンタ)が渡されると知っているんじゃないのか?
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
>メンバ関数には this ポンタが隠し引数として渡されるので、普通の関数と同じようには扱えないのです >>782
Python開発した当時にthisを使ってたのはC++くらいだしね。
SmalltalkやObjective-CはselfだしJavaやJavaScriptはまだ出てなかった。 レシーバーは、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 なぜthisにしない……って
そりゃCやC++で開発するんだから被るthisは回避するじゃん
C++で使ってないselfになるのは順当
Cで作る→C++に移行 との可能性はわずかながらあり プログラム未経験のまったくのど素人です
以下のコードを実行しても何も起こりません
なぜか逆スラッシュが\になってしまい、それが原因でしょうか?
長いので二つにわけます
def hangman(word):
wrong = 0
stages = ["",
"_______ ",
"| ",
"| | ",
"| 0 ",
"| / | | ",
"| / | ",
"| "
]
rletters = list(word)
board = ["_"] * len(word)
win = False
print("ハングマンへようこそ !") 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
如何でしょう? >>790
まず>>1を読んでその通りにする。話はそれからだ。 hangman関数を定義したけど呼び出してないからでは? >>782
>えぇ……型適当すぎませんかpython……
Pythonに限らずJSやRubyなんかのOOをサポートしてる動的言語はだいたい同じ
クラスやオブジェクトのベースはディクショナリ
>そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
Cやシェルスクリプトと同じでレガシーな言語だからイケてない部分もたくさんある
そういうものだと思って受け止めるしかない
開発者が使いやすいように積極的に機能追加していくような言語ではないからね
Stackoverflowとか見てもわかるけど
Pythonコミュニティは割と言語機能に対するコンプレックス強いから
イケてないところ指摘すると逆ギレされやすいから気をつけて >>910-911
>win = true
win = True
それと、break の前に、何かの文字が入っているとか? >>910-911
ちゃんと動く
Python は、スペースでインデントしないといけないのか。
タブでは動かない スペースとタブが混在したからかな?
漏れは、動かなかったけど 混在は別に問題ないぞ?linterで警告されるかもしれんが。
インデントに一貫性がない場合はエラーになる。 言語機能に対するコンプレックスというか、
「○○の言語にある◽︎◽︎がないなんて…」と思うなら、
○○を使えばいいじゃん、としか思わないなあ。
日常的に7言語ぐらい使ってるし、経験としてはもう3言語ぐらい使えるけれど、
Pythonで書くとメリットがあるものしかPythonで書かないから、他の言語の構文がどうとかかなりどうでもいいな。
ブロックスコープがあるといいなと思うことはあるけど。 >>790
これ、関数定義だけのように見えるんだけど
それなら実行しても何も起きないのは当然だよね そのスクリプトの下の方に、こう書いておいて、
「python3 script.py abc」みたいに実行すればよい
全角空白で、インデントしたけど
if __name__ == "__main__":
args = sys.argv
hangman( args[ 1 ] ) >>804
のスクリプトの冒頭に、import sys
も必要 >>801
> 混在は別に問題ないぞ?
あるだろ
なんのためにインデントでブロック表現するようにしたと思ってるんだよ インデントにスペースとタブを混在しても問題ないと言っているんだが話理解してるか? 皆さんスレのルールを守らなかったにも関わらずレスして戴きありがとうございます
今後はルールを厳守しますのでよろしくお願いします
早速ご忠告どおりに試してみたいと思います
厚かまいついでにもう一つ、逆スラッシュが\に変換されてしまう理由も教えて戴ければ幸いです 独学でpythonをマスターしたというコーリー・アルソフなる御仁の「独学プログラマー」って本で勉強しているんですが、
これは、とても初心者向けとはいえない入門者なので、「超初心者が初心者になるためのpython入門」という本を買い直し
ました 逆スラッシュが、\ に割り当てられているのは、
日本語キーボードだからじゃないの?
Ruby では、改行は、\n。
\ で問題ない 仰るとおり日本語キーボードを使っています
\で問題ないんですね >>807
理解してないのはお前
念の為に言っとくけど動けばいいという話じゃないぞ >>813
円記号とバックスラッシュに同じ文字コード0x5Cが割り当てられているせいで、フォントによってどちらで表示されるかが異なるがデータ上は同じ文字として扱われているから気にしなくてよい。
>>812が言ってる日本語キーボードは無関係。ついでに言うと、>>812はこのスレのタイトルに【Ruby禁止】と付けられる原因になった有名な荒しだからスルー推奨。コテはつけてないけど書き方に癖があるからすぐに見分けられるようになるよ。 >>814
流れ読めよ。エラーにならないという意味で問題ないと書いた。
推奨されない書き方だから警告されるとも書いた。 解決しました!
ちゃんと動きます
最後に関数を呼び出していませんでした
お騒がせしました >>816
流れを読めてないのはお前な
コンパイルが通ればOKとか言い出すタイプか?w >>818
面倒くさい奴だな。エラーにならないという意味で問題ないと書いたし警告が出るとも書いた。
それに何か反論するならお前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。 >>819
> お前の考える問題のあるなし・OK/NGの基準をきちんと定義してからにしろよな。
それを書かずに問題ないとか言ったのはお前な だから流れ読めと言ったんだが。>>797-801は動く動かないの話しかしてないだろ。 面倒くさいからケリつけて。
>>806
どういう意味でどう問題があると言いたいのか。
>>814
動けばいいという話じゃなくてどういう話なのか。
>>818
コンパイルが通ればOKじゃなくてどうだと言いたいのか。
ケチつけるだけで内容が無いから話が進まない。 TabError: inconsistent use of tabs and spaces in indentation
https://ideone.com/3EhNsh
インデントに一貫性がない場合ってのが「混在してる」場合の一つ
結論 =>「混在は別に問題ない」わけがない Tab、スペースインデント混在は
tabを何個のスペースにするのかわからんからエラーにしているんだろ。
Tab、スペースインデント混在の場合
スペースインデントが4スペースでtabが4スペースになるエディタでかきかきして、
で、別な人がtabを2スペースにしているエディタみたら怒るからな >>822
動く動かないの話に前提なしに「問題ない」と言うお前がおかしいだけ
ケリは元々ついてるぞw >>823
>インデントに一貫性がない場合ってのが「混在してる」場合の一つ
つまり、混在していても一貫性が保たれる限りは問題ないということなんだが。
既に>>801に書いたこと。 まだ言ってるのかよ
お前の問題ないの定義がぬるすぎるだけ >>830
そのコードを何の補足説明も無しに「タブとスペースが混在してるが、一貫性は保たれてる」と言うのは君だけだぞ 結局>>801がすべてなんだが、言葉の定義にこだわっていつまでもゴネている奴は何が言いたいんだろう。
「>>806のツッコミは的外れじゃなくて>>801の書き方が悪かったからだぞこのやろう」とかかね? >>831
タブとスペースが混在しているのは明らかだろう。インデントの一貫性を破っていないからエラーにはなっていない。
補足説明要るか? # マンチカン なら、833の顔面偏差値でも「動きがぐうかわ!」で済ませられるんだけどな。 [A,B,C]と、[E,F,G]の配列を
[[A,E],[B,F],[C,G]]とするにはどうすればいいですか? >>836
前提として必要
・[A,B,C]と、[E,F,G]は常に同じ長さでくるのか?
・Noなら、数があわないときはどうしろなのか? >>835 >>838
(1)の、Pythonらしいやり方については
おれ苦手でとっさに出てこないわ。
誰かよろしく。
(2)Cっぽい考え方
カラのリストを1個用意する。
カウンターを用意する。初期値は0。
forループで、どっちかのリストの長さまで
もしエラーがおきるようなら、breakさせちまえ。
各リストからカウンタのところの値を取り出して、テンポラリなリストをつくる。
予め用意してあるカラのリストに、テンポラリなリストを足す >>839の(2)補足
「カラのリストを1個用意する。」のところで、
どっちかのリストの長さ分をもってる、中身は全部カラのリスト を作った方が、
おれ的には、なんでかしらんがうまくいきやすいと感じている。 list(map(list, zip([A,B,C], [E,F,G]))) >>801の書き方が悪かったごめんなさい
で済む話をいつまでやってるんだよw >>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さんの方法でやってみましたが、うまくいきませんでした… >>844
>(n,n,n,1)の形をしています。(全て数値です)
↑タプルじゃないの?座標かなんかなの??? >>845
3次元の画像のようなものだと思ってます。
分かりづらくてすみません。 Ruby では、Enumerable#zip を使うけど
p [ 1, 2, 3 ].zip( [ "a", "b", "c" ] ).to_a
出力
[[1, "a"], [2, "b"], [3, "c"]] >>846
なおさらわからんw
座標とRGB値かなんかが入ってる
タプル的なもんなの? おれがしんのえすぱーだ
list_c = [ list(i) for i in zip(list_a,list_b)] 無理やりエスパーすると、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]]]],...]
にしたいんじゃなかろうか。 np.array(zip(np.array(list_a).flatten(), np.array(list_b).flatten())).flatten().reshape(hoge,fuga) >>833
そのコードを見てインデントに一貫性があるとは初心者はまず思わない
コードを示した上で「インデントの一貫性」とは何かを
初心者に分かるように説明できなければ君の価値ないよ
何度レスしてもエラーメッセージに書いてる以外の言葉で説明できてないから
コイツわかってなさそうって印象を受ける >>801の「インデントに一貫性がない」というのは
TabError: inconsistent use of tabs and spaces in indentation
このエラーが出る状態のことを言ったつもりだが、他に解釈のしようがあるかね?
「python インデント 一貫性」とかでググればすぐ出てくるが。
いつまで「問題ない」とか「一貫性」とかの言葉だけにこだわるんだか。 Tab SP
Tab Tab
SP SP
Tab Tab
これpythonでは同一レベルになるけどお前的には一貫性があると言うの? >>856
ガイジはガイジの学校で先生とお話ししてろカス >>850
そんなきもする
>>852
[]がいっぱいすぎてワロルwww
>>853
デフォ状態からだと、
numpyをインスコしてから、
importしないとだめじゃねそれ >>844
a = [A,B,C,…]
b = [E,F,G,…]
np.block([a, b]) >>830
さっきまで、デジャヴュがしてすごいひっかかってたんだが
思い出したwww
まだPython2.3あたり最新安定版だった頃のド初心者おれが
まじでこんなクソコード書いてたwwwww
うはwwwwメガナツカシスwwwwww >>862
もともと>>801ではインデントにスペースとタブを問題ないということを説明し、ただし例外として
一貫性のない使い方(とpython処理系が判断した場合)にエラーになると補足した訳だが、
>>856はまさにそれを裏付けてくれたわけだろう。 Pythonで文字を入力させて、計算をさせたりすることは出来ますか?
例えば、
1切ると泣いてしまう食べ物は?(玉ねぎ):5点
2ニュートンと関わり深い果物は?(りんご):5点
というなぞなぞを作る時、
input1=input('切ると泣いてしまう食べ物は?')
input2=input('ニュートンと関わり深い果物は?')
.
.
.
として回答に応じて10点満点のテストを作ることは可能ですか? >>844のように後出しする奴の相手は、エスパー・高脳でないと駄目だよな
並みの奴は本当に求めているもの何か分からんから振り回されるだけ
後出しクレクレは、自分ファーストで他人の手間とかのことをは考えていないからな >>854
コミュ能力がない、相手がなんで理解してくれないのか推察できない奴とのやり取りは
並み脳力以下の奴では超手間がかかる。
こんな奴と普通(スムーズ)にやり取りできるのは高脳・エスパー >>865
どの言語でもプログラミング言語と呼ばれるものであれば
文字を入力させて計算させることはできるぞ >>868
解答入力欄が1とか3の数字ならint()で数値変換出来るんですけど、玉ねぎを数値変換ってどうやってするのですか? >>867
コミュ力の問題じゃない
ID:SvXUu1bl は単に知識がないだけ
ググって見つかったエラーメッセージから知ったかしてみたが
その本質的意味を理解してないからエラーメッセージに書いてる文面以上のことを何も説明できない
言語仕様的に「タブとスペースが混在してもインデントに一貫性がある」と言えるのが
どういう場合か分かってないからロクな説明もできずに苦し紛れの知ったかレスを繰り返してるだけ >>869
なんで玉ねぎを数値に変換したいの?
1問目に「玉ねぎ」って回答を入力したら+5点なんだよね? ID:uUFeESNPが求めているのは辞書なのか?
{"玉ねぎ":5,"りんご":5}みたいな >>871
そうです。玉ねぎ以外は0点。
最後にprint()表記する時に足し算したいからです。 >>870
そりゃあ、>>855のエラーが出る条件の枝葉末節までは知らんよ?
>>801はそういうエラーが出ることもあるということだけで話の本筋には関係ないし。
「一貫性」にこだわるあんたは何がどうだと言いたいわけなんだろう。主張がさっぱり見えない。 >>872
いや、辞書じゃなくて計算ツールです。
理想としては、
回答入力→解答と照合→数値変換→計算なんですけど
解答と照合と数値変換の過程が分からなくて… くだらない争いを止められない精神年齢の低さ
これがpython使いです。 >>875
事前に872が作ってくれたようなかんじの
正解ワード:得点 ってなってる「辞書」を用意しておく。
ほんでもって
「問題文と正解ワードが1対1対応のリスト」のリストにでもして、これまた予め集めてておく(問題集)
適当なカウンタ変数を用意する(iみたいな1文字名でおk)初期値は0
おまいの得点=0
for i < len(問題集):
出題文=問題集[i][0]
正解=問題集[i][1]
hoge=input(出題文) # 回答入力
if hoge==正解: # 回答と照合
加点=辞書[正解] # 数値変換
おまいの得点+=加点 # 計算
さいごに
print(おまいの得点)とでもやれば、何点とれたか出る。 >>873
input1=input('切ると泣いてしまう食べ物は? ')
input2=input('ニュートンと関わり深い果物は? ')
score = 0
if input1 == "玉ねぎ":
____score += 5
if input2 == "りんご":
____score += 5
print(score)
一番最初はこのレベルから。
何かしら超入門のチュートリアルをやりながら学んだほうがいい
チュートリアルを終えれば繰り返し処理を抽出して1つにまとめたり
問題文・回答・得点をファイルから読むようにしたりできるようになる >>873
玉ねぎ以外、例えば、たまねぎ、タマネギ、玉葱などは駄目(0点)なのか
りんごも同様にりんご以外は駄目なのか >>864
お前的には「>>856は一貫性がある」と言うことでいいのね
それって人とはかなり違う感性だから会話するのは難しいと思うぞw >>879 横レスだが・・・
( ゚o゚)ハッ!!!
そういえば、そうだwww
ニホンゴハトテモムズカシイネー >>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]]]] f文字で改行する場合はどうしたら良いのでしょうか?
> f'hello \n{hoge}'
上記のようにすると\nがそのまま出力されてしまうのですが >>885
すみません
f文字にrを追加した場合、改行コードがそのまま出力されてしまうの間違いでした
> fr'hello \n{hoge}' print(r'''>>886 \nそれぐらい
ググれ カス''') 修正しました
pint('''>>886 \nそれぐらいググれ カス''') 標準モジュールのreってなんでマッチした文字列を返すメソッドがgroup()なの?
どういう意味? >>892
言語を作ったやつらに聞け
俺らはただのユーザーだ 「if分が多いと見難いです
三項演算子を使うといいです」
https://techacademy.jp/magazine/28098
みたいな記事を読んでたんだけど三項演算子ってわかりやすいのかな?
適切な場面とそうでない場面がありそうだけどよくわからん 目を動かす量が減るから簡単な分岐なら参考演算しでいいよな 中身が3,4文字なら見やすくなるがめちゃくちゃ長いのに3項演算とか馬鹿としか言いようがない。 基本的に読みにくい
Python以外でも 条件 ? 真 : 偽 って書く言語のも読みにくい
普通にif 条件 then 真 else 偽 が式になる関数型言語のは読みやすい
分岐はifが頭にある方が圧倒的に読みやすい >>892
capture groupのgroupだよ
match全体を結果配列の最初の要素に格納するのは多くの言語で行われてる
group(0)という命名センスは・・・まあ・・ね? pythonだから >>899
pythonの三項式が読みにくいのは当然だけど
Cの記法が読みにくいかどうかは命名と慣れと抽象化次第
foo = if is_hage then hoge else fuga
foo = is_hage ? hoge : fuga
pythonに三項式が取り入れられる際の投票結果を見ても
今の記法はもちろんif 条件 then 真 else 偽の記法よりも
条件 ? 真 : 偽 のほうが支持されてたことが分かる >>894
s///gのgもgrepのgもpythonのgroupとは無関係 >>901
pythonの三項演算子は表記は違うけど書く順はCと一緒だし困らない
慣れだけの問題 >>904
一緒じゃなくない?
flag ? "true" : "false"
'True’ if flag else ‘False’ >>895
三項演算子うんぬん以前に、文字列と予約語(if)との間や二項演算子の前後に
空白を置かないという、初心者にありがちな可読性を低下させる誤りがある
この田島悠介という現役エンジニアの技術レベルがその程度であり、
おそらくTechAcademyマガジンというサイトもそんなレベルの記事で
溢れているであろうことは、容易に予測できる
もし自分がPythonで三項演算子を使うなら、以下のように書く
https://www.ideone.com/gOE9K0
後置if節とでも言えばいいのか、Haskellのガード式をイメージしている
>>899
関数型言語ではないが、スレタイの某言語だと以下のように書ける
https://www.ideone.com/uy4Baa
>>895
条件によって値を返すだけなら
Excelのワークシート関数のif関数みたいなのが
個人的には1番わかりやすい ループでぐるぐるまわしてて
4の倍数の時は3をたすってのはどうしたらいいですか
それ以外のときはそれぞれ別々にやる計算あります
あとpythonの質問するところってここしか知らないですが
他にもありますか? >>911
非コミュ障害、知能が低くないなら、ここよりTeratailにしたほうが良いが
でも、お前はコミュ障害もち、知能低い感じで一般の奴らからは相手にされないだろう。
結局、基地外、ゆとり、低脳の掲示板である5chぐらいしかお前の相手をしてくれないよ >>911
しゅくだいの わからないところは
だすひがくるより だいぶさきに
せんせいに きいてね! pandasで2つのキーを指定してcsvファイルを結合したいのですが、可能でしょうか?
列Aが一致する範囲内で列Bを軸に2つのファイルを結合
pd.merge(df1, df2, on=['列A', '列B'], how='outer') としたところ、シャッフルして変になりました >>914
なにがどう「変に」と感じたのかしらんが
↓あたりのhowについてのところ + joinについてのところでもよんでみればー
ttps://note.nkmk.me/python-pandas-merge-join/ 4の倍数でっていうのは
if n%4 == 0:
____b=a+3
else:
____b=a
みたいなのじゃなくて
if使わなくてもa+3に
なにか足すと四の倍数の時にだけ3を足すような
のがあるかどうか知りたかったのです
説明不足ですいませんでした pythonの環境構築が難しすぎる
3系で動かそうとしたら、デフォで入ってる2系が動いてる
vagrantでsyncフォルダにScrapyのプロジェクト作ろうとしたらエラー吐くし
諦めてdjangoで糞アプリ作ってる
pythonはライブラリが豊富だから魅力的なんだけど、今の活かせてない >>911
その日本語をそのままコードに翻訳するだけ >>907
>関数型言語ではないが、スレタイの某言語だと以下のように書ける
そのケースは普通case文使うやろ
https://www.ideone.com/7jQ3Tb
>>909
ぱっと見わかりやすそうに見えるけど
自然な思考順序に反してるからすごく可読性が低いんよね >>917
やらんほうがいいけど
a + 3 * (n % 4 == 0)
みたいなのは書けるが >>901
なんでそれが通ったか逆に不思議だよな。
後置ifとも他の三項演算子とも似てるようで違うキモい文法。 >>921
ありがとうございます
a+3*[1,0,0,0][n%4]というのも考えましたが
やらない方が良いですか?
ifが来た方がやっぱり良いんでしょうか? >>923
自分だけが見るんなら何やってもいいけど人が見る可能性あるなら正直読みにくいし
無駄なハックは自分がやるならいいけど他人がやってるの見るとイラッとする
人ってそういうもんだし
ただそうやってコードで遊ぶのは勉強としてはとてもいい >>924
ありがとうございます
よっぽどの事情がない限り
無理やりifを無くす事はやめときます >>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 >>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 pyenv導入したいんですがいくつか疑問があります
まず、既にエイリアスに
python="/usr/local/bin/python3"
python2="/usr/bin/python"
という風に設定してるんですが、pyenv導入する場合はこれは外さないとまずいですかね?
そして既に入れてるpipのライブラリはpyenvの方のPythonでも使えるんでしょうか。
最初の導入ばかりでこの辺りの説明してるサイトが全然見つかりませんでした
もし良ければ回答お願いします。 とりあえずは外したほうがよい。
というか二重三重の設定をメンテするなんて大変だろ?
pyenv自体はそこらへんのエイリアスをいい感じにやるだけだから
pipも普通に使えるし変わらんよ。
ただ、いろいろ環境がわからなくなることはよくある。
個人的にanacondaにパス通す方がよっぽど事故が少ないんだが、
公式原理主義者はどうも納得しないぽい。 もうPythonの環境周りは滅茶苦茶だね
初心者は環境構築だけで丸一日費やして嫌になってやめていく
普及したことが皮肉にも普及の妨げになっている 仮想環境が当たり前みたいな記事ばっか書いてるアホどものせいだろ
全員電ノコで4ツ切りにして海に捨てたい venvもつかえんザコとかおるの?
無視しても良いんじゃね 困ってる奴が何のos使ってるのか知らんが、windowsならpathを弄れば何とかなる
俺も勉強のために最新入れてインタラクティブモードでpython起動したら2.7(?)とかだった
cドライブをpython.exeで検索したら20件ぐらい出てきて色んなアプリでpythonが使われていた
仕方がないので自分が意図してインストールしたpythonのpathを一番先頭に持っていったら
自分が意図してインストールしたpython.exeを起動できた >>931
ありがとうございます!
2系と3系を同時に使いたいんですがそれはもう毎回切り替えるしか手がないんですかね? >>934
**envというプロダクトが多すぎて検索しただけで萎える
しかも廃れた古いものもヒットするので、全くの新規さんが独学でやるには二重の苦難だろう
こんなんじゃPythonの未来は暗いと感じる >>937
切り替えるんじゃなくて
どっちの設定もしない
コンソールを開いてから
どっちを使うか選択(コマンド実行) ちょっと判りにくかったかもしれんが
要するに混ぜるなってこと
両方入ってるのは問題無い
環境を混ぜるのが問題 >>937
Win系なら、両方入ってる場合は
pythonとうったら2系
pyとうったら3系
がデフォやぞ
.pyをダブルクリックで実行したい ってのはかなわぬ願い
バッチかませろ winもpyに.py関連付けてたらshebang書けば使い分け出来るで >>941
ありがとうございます、とりあえず言われた通りコマンドで選択してみます。
後言い忘れてましたがOSはMacです…エイリアスで色々やってるのはpythonコマンド
だと2系が自動で選択されるからです。環境描き忘れててすみません。 >>935
パスの順番を変えたら、他のアプリが動かなくなるけど、それは良いのか?
>>944
Mac は最初から、Python, Ruby が入っているから、その環境に影響を与えるとまずい。
それらを使っているアプリがあるから
だから、仮想を使う
Docker も良いかも seleniumにてfirefoxの既存のプロファイルを使用する方法はありませんでしょうか?
どうにも既存のプロファイルを読み込まなく難儀しています... コードはたったコレだけなんですが全くといいほど読み込みません
from selenium import webdriver
fp = webdriver.FirefoxProfile('/home/user1/.mozilla/firefox/zaxxxxxt.default')
browser = webdriver.Firefox(fp) >>947-948
https://techiedelight.com/compiler/?ScFS
↑ここにかんすうはってきたので
fp = get_profile_path("default")
こうやってさがさせてみそ
それでも、なんでかうまく読まないことあるけど。。。
あと、基本的なところだが、
geckodriverのバージョンが古いと失敗すること多い。 >>949
ありがとうございます
fp = get_profile_path("default")
browser = webdriver.Firefox(fp,executable_path=’場所')
作って頂いた関数を使用したのですが、やはり新規プロファイルを読み込まれ既存のプロファイルが読み込まれません
Chromeでは既存のプロファイルが読み込まれるのですが、如何せんChromeではmeta refreshをdisable出来ないため
firefoxを利用したいのです
プロファイルの場所は初期値 geckodriverは0.26.0なので問題ないと思うのですが… >>950
プロファイルの場所探すところを改造せんといかんのかもしらん
泥臭いやりかただと、
ターゲットフォルダの中身全部をリストにして
.defaultで終わってるものをとる。みつかったらbreak
みたいなー >>932
アナコンダインストール一発ではだめなの? 駄目に決まってんだろアホ
お前だろ「Anacondaをインストールする2020最新」とかいうアマゾンの中華製品みたいな信用度の記事Qiitaに書きまくってるゴミは Anaconda は、Python が入っていない、Windows 限定
Mac, Linux など、最初から、Pythonが入っているものについては、
初心者には無理なので、プロに聞いてくださいと、
「みんなのPython 第4版、2017」にも、書いてある
つまり、最初から入っている、Pythonと両立させるのは、仮想が必要だから、難しい つまりPythonを使うならWindowsという時代が来たということだな
最初からPythonを入れてシステム的に依存する仕組みにしたLinux系は下手打ったよなあ システムとは別にPythonいれてそっち使えばいいやん
仮想可は実行環境だからまた別の話 仮想環境は、Ruby のrbenv・RVM とか、Python のvenv とか、
これが素人には難しすぎるから、入門書には書いていない!
Mac・Linux では、仮想環境になる 超初心者です
100回動作を繰り返すとします
繰り返しn回目でn回〇〇するといった場合どう記述すればいいんですかね?
たとえば30回目の動作で30回ボタンを押す、55回目で55回ボタンを押すというような感じです それ、pythonの質問じゃなくてどうプログラムしたら良いのかの
プログラミング自体の質問だから
自分で考えなさい >>959
for n in range(100):
for i in range(n):
doSomething() >>960
すいません気をつけます
>>961
理想通りできました
ありがとうございました! pythonはメジャーになって逆に環境構築に関してはひどい状況になったかもな。。
今正確にやるならdockerで閉じ込めろって話になるが、それ初心者には言えんわ。 dockerは厳しいわ
流行っているから本買って来て読んでみたけど
そもそも何をするソフトなのか、何の役に立つのかすら理解できなかった やっぱり最低限は環境変数とPATHは理解してもらってanaconda入れてPATH通すってやり方かなと思う。
最悪問題起きても環境変数とPATHがわかってればデバッグできるでしょ。 google も動かすまでが結構大変なんだよな
初心者には難しいかな >>966
おまえのぐっぐるとはなんのことやらエスパーする余地がある
さすが、自然言語が不自由なスッドレだなw (200, 200) のnumpy配列を(1, 80, 80)にしたいです
お願いします 間違えました
(200, 200) のnumpy配列を(1, 200, 200)にしたいです
お願いします 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しか比較されませんでした。。。)
#部分をどうしたらいいでしょうか?
また、最終的には#部分で比較する別ファイルからリスト型に取り出してぱーっと比較したいです
その場合のアルゴリズムも(ファイルの読み込み操作とかは不要です)できたらほしいです >>972
in演算子でいいじゃん
if 比較したい値 in 値の入ったリスト そんなもんお前…
str(i) in ('C', 'D', 'E')
やろ
ところで、最初の
('A' or 'B') in str(i)
は想定通りに動作してないと思われる
'A' in str(i)
相当だから
もう少し演算子について正確に学んだ方がいい 文字列化すると"A" になるデータってどんなのかな >>976
ABO式血液型とカー?(ちょうてきとう) >>972
別にifとelifをABCの数だけ並べてもいいでしょ?
スマートな書き方は慣れてからでもいいでしょ
>ぱーっと比較したい
後半は急に雑な説明になって
何がしたいかよく分からん? >>978
>ぱーっと比較したい
俺、思うに、それが str(i) in ['C', 'D', 'E'....] のことじゃないのか >>972
リストの内容によってはこういう方法でもいける。
import re
list=["A","B","C","D","E","F"]
sList=",".join(list)
list2=list2+re.findall("[AB]",sList) >>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)に分岐させる処理はどう書いたらいいでしょうか?
最初の なかなかの後出しだな。
単にA,Bが含まれるという条件なのか、A,Bから始まるのか、
C〜の文字列は絶対A,Bは含まないのかなど、細かい条件で全然違うぞ >>981
一言でいうと処理対象の複雑さによって処理が異なる
もし文法構造を有しているならパース処理が必要になるが
字の配列だけの問題なら分岐だけで処理できる
フローチャート的なif文の分岐が基本中の基本だから
短く書くやり方は基本が分かってからにしよう
具体的には先頭から一字ずつ判断して行けばいい
先頭の文字がAの場合、Bの場合、
それぞれについて次の文字がAの場合、Bの場合……
ってif文をネストしていけば書けるはず 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削除するよりスマートな方法はないでしょうか? >>982
A,Bが含まれるという条件です
例えばAjsやskBfです
Cの文字列は絶対に含みません
後出しになっちゃって本当にすみません。。。
set()とか使って出来ないかなと思ってさっきも色々試したんですけどだめしでした。。。 >>984
pandasじゃなくcsv.reader使ったのでよくない?
list(csv.reader(file))で意図した配列にできるよ >>981
any(x in str(i) for x in ['A', ‘B’])
pythonの場合このケースは正規表現のほうがわかりやすいかもね perlみたく安直には出来ないようになってるからね
if (/C|D|E/)
ショウガナイね
そもそも最近のワカモンは正規表現の存在自体知らないんだよ
本当に、聞いたことすらないんだよ 正規表現はもう古すぎだよなあ
あんな暗号みたいなの覚えられんし方言もあるし
しかもデバッグが非常に難しい 正規表現使わずにプログラムするとかそっちのが苦痛だわ >>972
プログラムで処理できる
完全なサンプルデータを示してほしい >>988
すごいです。。。できました。。。
正規表現は一応貪欲なんとかとかかるーく使ったことある程度です
今回はうまくいけたのでヨシ!とします。。
any使ったことなかったので精進します >>991
俺は自分が書いた正規表現ですら、後で見ると何にマッチするのかわからんってのが
あるからコメントが必須だからな。
すごい奴のすごい正規表現はもう何にマッチするのか文章の説明がないとさっぱりわからん このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 9時間 7分 36秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。