X



【まず1嫁】くだすれPython(超初心者用) その53
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2021/03/16(火) 07:19:44.36ID:PfTIXkDh
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★
5chの仕様【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】のため、どうにもなりましぇん。
↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 くだすれPython(超初心者用) その52【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1610137345/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
0007デフォルトの名無しさん
垢版 |
2021/03/17(水) 14:14:35.31ID:TpdTO3YL
>>6途中で送っちゃってた
(わざわざスレ立てするほどでもない)
くだらない質問を書いてくスレ
の略。 >>5
0010デフォルトの名無しさん
垢版 |
2021/03/18(木) 01:44:53.32ID:A6mO37qQ
requestsのpostしても空っぽで返ってくるのにハマりまくったけど
post(url,data=data)
のdataのところを
json.dumps({"name":"tarou","age":20})
みたいに文字列化したらなぜかうまくいった・・・
他のところは辞書型のままでもいけたのに
0011デフォルトの名無しさん
垢版 |
2021/03/18(木) 05:24:55.18ID:E6K6GX2p
>>10
たまたまそこに至るまではうまくいいようにはからってくれてたか
こころのひろい鯖さんだったのだろう

解決よかったね+理由記載乙
なにかだれかのたしにもなるといいね
0012デフォルトの名無しさん
垢版 |
2021/03/18(木) 15:10:11.71ID:HfXxQmPX
そこは json.dumps より urllib.urlencode 汁
0013デフォルトの名無しさん
垢版 |
2021/03/18(木) 15:15:49.51ID:HfXxQmPX
前スレ
>>983
Erlang と OTP は良くやってる
0014デフォルトの名無しさん
垢版 |
2021/03/18(木) 16:07:41.59ID:k/Cp5d5i
導入で詰んだ
minicondaをインストールしたがpipを実行しようとするとpython38.dllが見つからないとしはじかれる
python38.dllはpython38.exeと同一フォルダにあるのに
0016デフォルトの名無しさん
垢版 |
2021/03/18(木) 16:50:30.37ID:VjRMlHUp
Ruby on Rails 6 の本も書いている人が、新刊を出した

Elixir実践ガイド、黒田努、2021/2/5

Ubuntu 20.04, Docker CE 19.03, Elixir 1.11

Erlang/OTP か、片方向リストは、先頭の要素だけが速いとか、
実行環境の内部構造の話が多くて、辛い
0017デフォルトの名無しさん
垢版 |
2021/03/18(木) 17:27:24.11ID:7Uj1c/fU
推奨NGワード: Ruby
推奨NGワード: Rails
推奨NGワード: 書いている人
0019デフォルトの名無しさん
垢版 |
2021/03/18(木) 17:44:58.89ID:k/Cp5d5i
はいどうも、書いてみるもんですな、原因はセキュリティソフトでした、どうも失礼しました
0020デフォルトの名無しさん
垢版 |
2021/03/19(金) 12:46:20.22ID:bQkGR5Qu
質問スレって結構解決率高くて役に立つよね
なぜか投稿した直後に自己解決する
0028デフォルトの名無しさん
垢版 |
2021/03/19(金) 22:45:14.97ID:X0y0iVpq
「it is assumed that your working directory is the root folder of the library.」

以下の文章中にある↑の文の意味が分かりません。
作業ディレクトリがライブラリのルートフォルダであることを仮定するというのはどういうことですか?
ライブラリのルートフォルダって何ですか?

The functionality for sound in this chapter can be found in the module sound in the
library, and the code examples assume that this module has been imported without a
prefix:

from sound import *

Moreover, it is assumed that your working directory is the root folder of the library.
Since the Python code in the library is located in the python folder, a simple way to
ensure that the library modules will be found is to add

import sys, os
sys.path.append(os.path.join(os.getcwd(), ’python’))
at the top of your program.
0029デフォルトの名無しさん
垢版 |
2021/03/19(金) 23:15:47.95ID:RMQx/osX
pythonはまず起動されたディレクトリからモジュールを探す
sound.pyか、sound/__init__.py
それが無ければリストsys.pathに入ってるパスを見に行く
親切なインストーラは勝手にsys.pathにリストされたディレクトリに入りに行く
親切過ぎて勝手にsys.pathを改変する逆に迷惑なライブラリもある
何もしないライブラリ/インストーラも当然あるので、自分で追加しよう

しかしコード内からsys.pathを直接弄るのは薦めない
pythonは起動時にsys.pathに加えるパスを環境変数PYTHONPATHから調べるので、そこにsoundのパスを加えるべき

もし直接弄ると、その特定のコードの実行時にしか見えないバグを産みかねない、ユーザーとしては非常に厄介
python -i script.pyで実行後に対話モードに移れるけど、特に他人の書いたコードでそんなことやる気起きないでしょ?
0030デフォルトの名無しさん
垢版 |
2021/03/19(金) 23:23:26.41ID:RMQx/osX
PYTHONPATHが長くなり過ぎるのも見にくいので、ホームディレクトリ直下にpylib3.10みたいなディレクトリ作って、それだけPYTHONPATHに加え、そこにパッケージシステム管理外のライブラリを全部ブチ込むのもあり
0032デフォルトの名無しさん
垢版 |
2021/03/20(土) 21:03:20.71ID:cHAvtLAs
print(range(3))
と一行書いて実行すると、
0 1 2
と表示されるはずなのに
range(0, 3)
としか表示されない。どうしてでしょうか。
0036デフォルトの名無しさん
垢版 |
2021/03/21(日) 00:41:47.55ID:c1Fm1qtl
>>32
もしrange(5000兆)とかがその場で展開されたらメモリが足りなくなるから
必要になってから都度計算するrangeオブジェクトっていうオブジェクトになる
0039デフォルトの名無しさん
垢版 |
2021/03/21(日) 07:55:22.35ID:Xyvra8tZ
「じゃあ」ってか

>>37
自己解決のさいは
なにしたら解決できたか書いて毛なのに
むしろ質問者は書いていかないし
0040デフォルトの名無しさん
垢版 |
2021/03/21(日) 08:02:45.18ID:rOmbGrT+
このくらいは質問する前に気づいて欲しいな
そしたら蘊蓄披露したがりクンも沸いてこなかった
つまり質問者が悪い
0041デフォルトの名無しさん
垢版 |
2021/03/21(日) 09:50:58.07ID:c1Fm1qtl
>>37
Rubyでは、・・・
とか言い出すよりマシだろ?
0043デフォルトの名無しさん
垢版 |
2021/03/21(日) 10:56:39.10ID:eocPnEKi
「オブジェクトだから」だと思ってる人達は文字列(str)はオブジェクトじゃないと思ってるのかな?

range(0, 3)と表示される仕組みを理解してるとは思えないんだが
0044デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:10:46.35ID:dweFEPRe
inとか調べるのがノーコストになるというのはインフォマティブだよ
コンテナ実装するときにふと思い出してくれればよい
0045デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:17:17.80ID:dweFEPRe
俺もついでにくだを巻いていくけどrangeだけなら整数2つ持ってるのと大差ない(lo<=i <hiと等価)が
rangeが生きるのはもっと複雑なテスト、rangeはchainsで数珠繋ぎにして生きる
0046デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:21:05.88ID:GVEcec50
Juliaというプログラミング言語がいいという話ですが、Pythonに詳しい人はPythonと比較してJuliaについてどう思いますか?
0047デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:31:49.59ID:ECrDs+gQ
ブーム前はFortran/Matlab(&Octave)と同じ感覚で配列を自在に扱える代替環境ってのがPython/numpyの需要だったのよ
numpy/scipyはFortranライブラリのラッパ集として始まったわけで
今はもうPythonは手軽なスクリプト言語はじめ色んな用途が開けてるから、古い感覚だけどね

C風のPythonし、結局Fortran民はJuliaを作ったわけだけど
まあPythonでいい
0048デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:42:30.17ID:ECrDs+gQ
文書がバグってた…
Pythonは配列0始まり/メモリ配置行メジャーのC系の慣習を引きずってる
線形代数記法、つまり配列1始まり/メモリ配置列メジャーの数値計算の慣習と逆ってことね
新興で後者採用のFortran系の言語はJuliaくらいしかないのでそっちに慣れてるオッサンならjuliaの方が受け入れやすいと想う
0049デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:51:31.81ID:ECrDs+gQ
Pythonも不便ということはないよ
生Pythonで配列扱うmemoryviewやctvpesにちゃんと'F'フラグ容易されてるし
numpyももちろんそうで、FortranコードをPython関数として簡便コンパイルするf2py.pyもある
自身をコンパイルする為だけど、もちろんユーザーも使える
0050デフォルトの名無しさん
垢版 |
2021/03/21(日) 11:59:02.49ID:Duyg5pmm
numpy入れるとコマンドラインからf2py直接呼べるようになってるね
比較的小さいスクリプトだけど、これこそがnumpyの本体
0053デフォルトの名無しさん
垢版 |
2021/03/21(日) 13:20:42.89ID:M5Jy6lC/
pandasで時系列データを集計やソートしたりするのですが
df = pd.DataFrame([{'p':1,'at':日付オブジェクト1},{'p':3,'at':日付オブジェクト2},,,])
時系列データフレームとして扱うためにインデックスを設定
df2 = df.set_index['at']
df2.resample('H').sum()
で無事、時系列であれこれできました

で、これをsqlite3にappendしようとしたとき
このインデックスが時系列のままsqliteにappendすればいいのか
時系列は'at'カラムに移動させてからsqliteにappendすればいいのか迷っています
ぶっちゃけどちらでもいいとは思いますが
公開されている統計データなどをみていると大抵は、(インデックスは無しか連番で)カラムに日付データが入っているので
そういう慣習でもあるのかが気になります
0054デフォルトの名無しさん
垢版 |
2021/03/21(日) 13:38:24.45ID:11DwdO6F
>>41
メモリアロケーションされてるかどうかなんて全く関係ない理由をあげて間違った理解を植え付けるくらいなら
Rubyでは・・・のほうがまだマシだわ
0055デフォルトの名無しさん
垢版 |
2021/03/21(日) 13:49:42.36ID:c1Fm1qtl
質問者はrangeをlistかtupleと同一視していると思われたから、どちらでも無い別種のオブジェクトだと教えたまでだが問題あったか?
(メモリアロケーション云々は何故rangeがlistを返さないかの説明に過ぎない)

いきなり__repr__の実装に言及しても訳分からんだろ
0057デフォルトの名無しさん
垢版 |
2021/03/21(日) 14:24:12.67ID:HtK2VIhJ
>>55
見苦しい言い訳だね〜
それなら「rangeはlistとは違うから」とでも答えておけばいいだけだろ

必死に調べて__repr__見つけたのかなw
でも間違ってるしreprの実装に言及しないと説明できないと思ってる時点で分かってないから

超初心者にドヤ顔で間違った答えを教えたりRubyキチをバカにする前に公式チュートリアルくらいは読めよな
0058デフォルトの名無しさん
垢版 |
2021/03/21(日) 14:33:51.63ID:c1Fm1qtl
>>57
そうだね、ケチ付けてばかりじゃなくて「分かってる」あなたも説明してみてよ
初心者スレだからみんなの為になるよ
0061デフォルトの名無しさん
垢版 |
2021/03/21(日) 17:19:57.60ID:LD2dmgE2
>>58
print関数は引数のオブジェクトの文字列表現を出力する関数で
range(3)の文字列表現は'0 1 2'じゃなく'range(0, 3)'
なのでprint(range(3))を実行するとrange(0, 3)と表示される

ちなみにlistなら'[0, 1, 2]'みたいな表現になるから'0 1 2'と表示したいなら自分で加工する必要がある
例えばprint(' '.join(str(x) for x in range(3)))
0062デフォルトの名無しさん
垢版 |
2021/03/21(日) 17:51:46.12ID:sFWHtMDC
>>> print(*range(3))
0 1 2
0064デフォルトの名無しさん
垢版 |
2021/03/21(日) 19:14:50.12
処理Aが同じで
無限ループしたいときと、任意回数ループしたいときを分けたいんだけど

n = 10 if 条件 else 99999999
i=0
while i < n:
_print('処理A')
_time.sleep(1)
_i += 1

無限ではないにしろこれでいいんだけど
n=99999999がなんかかっこ悪い・・
別の書き方ありませんか
006564
垢版 |
2021/03/21(日) 19:22:48.42
自己解決・・かどうかわからないけど
でいけた
でも
for i in range(float('inf')):
は無理だった・・
0068デフォルトの名無しさん
垢版 |
2021/03/21(日) 20:27:26.58ID:c1Fm1qtl
>>61
その「文字列表現」を決定するのが__repr__では?
__repr__の実装に言及せずとも説明できると言うのは?
単に名前を出さないだけで言及していないことにはなってないな
0071デフォルトの名無しさん
垢版 |
2021/03/21(日) 22:32:14.97ID:OQZaxlrU
よろしくお願いいたします。
aList = [[1,2]for j in range(3)]
aList = [[1,2]]*3

2つとも[[1, 2], [1, 2], [1, 2]]の多重リストが作られたのですが、なぜ下の文で多重リストができるのか教えてほしいです。
0072デフォルトの名無しさん
垢版 |
2021/03/21(日) 22:53:21.54ID:mInw6BRh
>>68
>いきなり__repr__の実装に言及しても訳分からんだろ

__repr__の実装に言及する必要なんてない
__repr__が果たしてる役割を超初心者にも分かる言葉で説明すればいいだけ

それができないと感じるのは自分がその事柄を理解してないから
理解してれば「オブジェクトだから」とか「アロケーションされてないから」みたいな嘘を教えたりしない
0073デフォルトの名無しさん
垢版 |
2021/03/21(日) 22:56:09.50ID:mInw6BRh
文字列表現がどう決まるのか、どういうついでに言っておくとprint()で使われるのは__repr__じゃなくまず__str__な
__str__が定義されてない場合だけfallbackして__repr__が使われる

公式チュートリアルに書いてるので勉強してね
0074デフォルトの名無しさん
垢版 |
2021/03/21(日) 23:00:23.62ID:mqfsmAhv
>>71
クラスの操作だからクラスをそういうふうに
作ればそうなる
何故とか本質がどうとかは設計した人の考え
便利だなと思えば使えばいい
0075デフォルトの名無しさん
垢版 |
2021/03/21(日) 23:09:36.59ID:OQZaxlrU
>>74
ありがとうございました!
気にせず使っていきます
0076デフォルトの名無しさん
垢版 |
2021/03/21(日) 23:22:30.25ID:ztnIU7M3
>>71
listやtupleやstrなどのシーケンスと呼ばれる型に対する*演算子は
シーケンスの中身の要素を指定した回数分繰り返した新しいシーケンスを返すように定義されてる
0077デフォルトの名無しさん
垢版 |
2021/03/22(月) 04:49:29.76ID:FrFq7CFg
>>71
FAQ中のFAQだから余計な世話かもしれんが、見た目が同じでも同じリストでは無いことに気をつけてね

リストの中身は要素への参照だから、それを複製した後者は同じオブジェクトを3回参照してる(cでいえば、同じポインタx3)
見た目が同じオブジェクトを判別するためにid関数が用意されているから試してみて
前者をl1, 後者をl2として
map(id, l1), map(id, l2)
前者のidは全て同じ、後者は新たに作った[1,2]を3つ並べてるので3つとも違うはず

参照の概念をややこしいと思いlistを避けたいと思うのなら、型の同じ要素を入れる場合は常にarrayを使う事を推奨する(標準型の範囲では)
具体的な値の配列なので、型チェックも入り、効率もよい
0078デフォルトの名無しさん
垢版 |
2021/03/22(月) 05:17:24.56ID:FrFq7CFg
i for rangeイディオムは不要な添字iが気持ち悪いよな…
ロジック通りに、ビルトイン関数のみでミニマルにやるには
memoryview([1, 2]).cast('b', shape=(3, 2)).tolist()
[[1, 2]
[1, 2]
[1, 2]]
でいいだろう
tolistはリスト表示するためなのでお好みで
数字が小さいからbyte配列にしたけど、普段使いならlongにしといた方が気楽かも
0079デフォルトの名無しさん
垢版 |
2021/03/22(月) 05:25:09.41ID:FrFq7CFg
byteって言ってるのにbyte抜けてたごめん
memoryview(bytes([1, 2])).cast('b', shape=(3, 2)).tolist()
[[1, 2]
[1, 2]
[1, 2]]
です、試してないけど多分動くだろ
実用にはbytesはarray('l', seq)へ差し替えてね
0080デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:40:31.58ID:uAAKNqiZ
while True:
_a = 1
_break
print(a)

インデント下がって定義した変数をwhileの外でも使うのは普通なのでしょうか
スコープの判断で可読性が落ちるかなと個人的に思ったのですが慣れですかね
0081デフォルトの名無しさん
垢版 |
2021/03/22(月) 12:53:03.86ID:bzTgC/HJ
>>80
それしきの深さならえんでねーの

それにしてもパイセンいわく
while True:で安易に無限ループ作るのはイクナイ(・A・)らしいが
0082デフォルトの名無しさん
垢版 |
2021/03/22(月) 14:08:43.53ID:Rzf9eLtl
>>80
python的には普通らしい
ただ見通しが悪くなる場合が多いのと
勘違いによる不具合を起こさないために自分は極力避けてる
0089デフォルトの名無しさん
垢版 |
2021/03/22(月) 23:07:52.41ID:g8se3Ggw
Python公式リポジトリ検索してみたらほんと腐るほど見つかって嫌になった。
全部挙げきれないので一例:
https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Tools/ccbench/ccbench.py#L163
https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/test/test_shlex.py#L265
https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/concurrent/futures/thread.py#L74
https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/concurrent/futures/thread.py#L202

それならまだしもwhile 1:とかもある↓
https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/idlelib/hyperparser.py#L240
0090デフォルトの名無しさん
垢版 |
2021/03/22(月) 23:19:25.97ID:xEZrbDTS
>>85
無限ループ自体が処理によってはCPU負荷が上がったりするし
break条件をミスってると不具合があった時にループから抜けずに変な所でエラーになる可能性も出てくる
だから最初から有限回ループして確実に止まるループ設計の方が安全だよね、っていう考えはある
(まあwhile True breakの方が書きやすい場面も多いけどね)
0091デフォルトの名無しさん
垢版 |
2021/03/23(火) 00:43:05.32ID:ch/yi3Wo
無限ループは無限ループが必要だから使うのであって、
有限のイテレータのループで書き換えられるときには当然使わないのでは?
有限と無限を同列に並べて比較すること自体がなんか違和感あるけど。
0092デフォルトの名無しさん
垢版 |
2021/03/23(火) 00:48:20.02ID:BKCKGFNi
while自体の処理が重いから使うなってならわかるけどミスったら困るから使うなって、理由になってなくない
使いどころも無視してとにかく使うなって、先人の下手なトラウマが一人歩きしてるだけじゃねーの
0093デフォルトの名無しさん
垢版 |
2021/03/23(火) 02:55:45.64ID:71b8io/J
まあループの有限性が事前にわかるようならそれを表現するためにwhile 1: 使うのは適切じゃないって話だろ。
実際ループ変数ぽいの使ってなぜか while 1使ってるコードは新人にはよくある。
0094デフォルトの名無しさん
垢版 |
2021/03/23(火) 02:59:15.82ID:QbxOC6mC
>>81
ポンコツかよ
他に無条件ループ作るコンストラクトがあるなら教えてほしいわ
上の方のレスにある9999999決め打ちでもするのか?
他にもハック挙がってるけどどう考えてもwhile True:より筋が悪いよね?
先輩が言ってたから正しい?自分の意見を持とうよ?
0096デフォルトの名無しさん
垢版 |
2021/03/23(火) 03:33:34.75ID:QbxOC6mC
…と偉そうなこと言った手前、俺の習慣を紹介しておく
while True や1は仕様上そうするのが筋なので、確かに冗長と批判できる
truthyならwhile "comment":でも、while ...:でもよい
何の情報も含まないwhile True/1:よりは良い習慣
後者は…それが思いつかなかった時だな、コメントがbreakの傍に付いている方が合理的なケースもあるので

....は1, 2, 3, ...という一般に認知されている表記なので、trueを表現するtruthy(5シンボルとしては、1/Trueより優れている事は明らかだろう
0097デフォルトの名無しさん
垢版 |
2021/03/23(火) 03:49:20.93ID:zpYNNqZr
>>64
if not cond:
__while True:
____print('処理A')
____time.sleep(1)
for i in range(10):
__print('処理A')
__time.sleep(1)

この部分だけ書けていわれたらこうするわ
0098デフォルトの名無しさん
垢版 |
2021/03/23(火) 06:54:35.77ID:ZYJLDniu
>>97
無限ループいつ抜けるの?

それと条件によって無限ループか有限ループかという2つの処理分岐が並列に書かれてないから意図が伝わりにくいよ
0100デフォルトの名無しさん
垢版 |
2021/03/23(火) 10:05:15.95ID:HSGkWRhe
GOTO文のように無限ループ文を作れば解決する
0101デフォルトの名無しさん
垢版 |
2021/03/23(火) 14:54:00.54ID:CY92qFOb
while Trueするのはdo~whileしたい場合
そうじゃないなら書き直したほうがいいかもね
0102デフォルトの名無しさん
垢版 |
2021/03/23(火) 15:46:37.69ID:mu30Ep9P
ちょっとしたデバッグのときに
lst = [
__{"a":0,"b":1}
__'''
__,{
___"a":2,
___"b":3
__}
__'''
]
シンタックスエラー
'''は#の複数版かと思ったら単なる文字列だったんですね。
こういうときは、ショートカットキーで複数行に#入れたり消したりする人の方が多いのかな
0103デフォルトの名無しさん
垢版 |
2021/03/23(火) 16:21:30.22ID:ch/yi3Wo
>>102
さすがにコメントアウトショートカットで出来ないエディタを使うことはないな。
絶対に何も入れちゃいけない環境以外ではVSCodeいれちゃう。

何も入れちゃいけない環境でデバッグしなくちゃいけなくて、
lstに入れるだけいいんだったら、複数バージョンの代入文を作っておいて、if Trueとかでどれを実際に実行するかは決める、ぐらいはやるかなあ。
あとはなるべく改行を入れないで#一つでコメントアウトできるようにするって手も考えるかな。
0104デフォルトの名無しさん
垢版 |
2021/03/23(火) 17:12:08.45ID:q1xbaFi+
Octaveだと正方行列とその逆行列の乗法で単位行列が得られる。
GNU Octave, version 4.4.1
octave:1> a = ([4,5,7;-4,1,5;-10,3,8])
octave:2> b = inv(a)
octave:3> a * b
ans =
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000

でもPython3だと単位行列が得られたのかよく分からない。
これで正しいの?

Python 3.7.3
>>> import numpy as np
>>> a = np.array([[4,6,7],[-4,1,5],[-10,3,8]])
>>> np.linalg.inv(a)
array([[ 0.04666667, 0.18 , -0.15333333],
[ 0.12 , -0.68 , 0.32 ],
[ 0.01333333, 0.48 , -0.18666667]])
>>> b = np.linalg.inv(a)
>>> a @ b
array([[ 1.00000000e+00, -4.44089210e-16, 0.00000000e+00],
[ 2.77555756e-17, 1.00000000e+00, 0.00000000e+00],
[ 1.38777878e-17, 0.00000000e+00, 1.00000000e+00]])
0105デフォルトの名無しさん
垢版 |
2021/03/23(火) 17:43:46.60ID:SeSscUQI
>>101
どうして?
0106デフォルトの名無しさん
垢版 |
2021/03/23(火) 18:30:46.10ID:f4Z9PwYH
>>104
計算誤差でしょ
非対角成分は0にかなり近い
0107デフォルトの名無しさん
垢版 |
2021/03/23(火) 18:47:26.71ID:WuxMgk/9
行列が違うのはおいといてOctaveもnumpyも基本は浮動小数点数の演算だから丸め誤差などによりピッタリゼロになるとは限らない

Octaveで
format long e
を実行した後に確認すると多分ゼロになってないと思うよ

表示形式でゼロに見えてるだけだと思う

うちの環境だと0.00000じゃなくて-0.00000になる成分あるし
0108デフォルトの名無しさん
垢版 |
2021/03/24(水) 19:57:42.51ID:8oiSJv/j
例えば、Pythonを用いたプログラミングの本を読んでいるとします。
その本の著者のサイトにPythonコードが「.pyファイル」としてダウンロードできるようになっているとします。

ある読者は、普段からIDEではなく、Jupyter Notebookを愛用しているとします。

そのため、この読者は、Jupyter Notebookのセルに著者の「.pyファイル」をロードして、コードを読んだり、変更したり、実行したりしたいと考えています。

この読者はどうすればこれを実現できるのでしょうか?
0110デフォルトの名無しさん
垢版 |
2021/03/24(水) 20:04:40.15ID:QbxZqHqJ
>>108
IDE使おうが同じことすると思うのだけど
なぞなぞに思える
jupyter notebookは知らないがセルじゃなくてシェルなのだろうな
0112デフォルトの名無しさん
垢版 |
2021/03/24(水) 20:23:27.54ID:8oiSJv/j
JupyterLab上でグラフを表示するには、

%matplotlib inline

というコマンドをセルに入力して実行しないといけないということで、実際今までそうしてきました。

今日、このコマンドを入れずに、

# %load matplotlibexample.py
import matplotlib.pyplot as plt
import numpy as np
t = np.linspace(-3, 3, 1000)
plt.plot(t, np.exp(-t**2)*np.sin(20*t))
plt.title('sample graph $x(t)=e^{-t^2}\sin(20t)$')
plt.xlabel('t')
plt.ylabel('x')
plt.show()


を実行したところ、ちゃんとノートブック上にグラフが表示されました。

%matplotlib inline

はもう入力しなくてもよくなったのでしょうか?
0113デフォルトの名無しさん
垢版 |
2021/03/24(水) 20:48:55.22ID:SWND22zP
>>110
横からだけどセル。
notebook用語なのでpython以外のカーネルにしてもセル。
実行単位なんだけどあるセルで算出してる結果に依存してる別のセルを実行する際に依存先のセル未実行だとエラーとかいろいろめんどい。

一世を風靡したスライド
I Don't Like Notebooks
https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/mobilepresent?slide=id.g362da58057_0_1
2018年のjupyterconでの発表でした
https://conferences.oreilly.com/jupyter/jup-ny/public/schedule/detail/68282.html
当時の反応(英語)
https://www.reddit.com/r/Python/comments/9aoi35/i_dont_like_notebooks_joel_grus_jupytercon_2018/
0114デフォルトの名無しさん
垢版 |
2021/03/25(木) 01:57:39.05ID:5Yw77v05
もしかして.pyファイルをjupyter notebookで実行する方法聞いてるだけか
何でそんな長々と意味不明なこと書いてるの?
0117デフォルトの名無しさん
垢版 |
2021/03/25(木) 08:02:26.68ID:np4EPf1w
コピペで大体実行できるかな

別にサクラエディタでもVSCodeでもいいから.pyファイルを開きコピペ
ただしsjisとUTF-8とか
あとインデントに気を付ける
コピペでインデントがずれて動かないことがあるので
そこは丹念に直す
0118デフォルトの名無しさん
垢版 |
2021/03/25(木) 08:21:24.72ID:ITDRmOAn
tkinterで
200*100じゃなくて
200x100と小文字のエックスするの何故なのか教えてほしいです……
0119デフォルトの名無しさん
垢版 |
2021/03/25(木) 08:39:22.55ID:3ixfSSYA
乗算じゃなくて
ピクセルで領域指定だからジャネーノ
とエスパーしてみる
0120デフォルトの名無しさん
垢版 |
2021/03/25(木) 14:26:26.89ID:B8lnjfbN
以下のコードを実行すると、グラフがf(x) = 0のグラフになってしまい、意図したものと異なってしまいます。
どう修正すれば意図通りの結果が得られますでしょうか?
ベクトル化についてよく分かっていないので、そのあたりがあやしいと思っています。

import numpy as np
import matplotlib.pyplot as plt

PI = np.pi

def func_x(t):
if 0 <= t:
return np.sin(t)
else:
return 0

npfunc_x = np.vectorize(func_x)

t = np.linspace(-PI, PI, 10000)
x = npfunc_x(t)

plt.plot(t, x)
plt.show()
0125デフォルトの名無しさん
垢版 |
2021/03/25(木) 14:57:17.24ID:8wVz7C90
出力は一番目の値で決定されるから、return 0.0とするかotypeを指定しろ

不等号逆向きにすると動作するけど、そのコードが動作しないのは出力が整数型に固定されて切り捨てでゼロ扱いされるから
0126デフォルトの名無しさん
垢版 |
2021/03/25(木) 15:03:02.76ID:B8lnjfbN
>>125
return 0.0
に変更したら、動作しました。
ありがとうございました。
0127デフォルトの名無しさん
垢版 |
2021/03/25(木) 15:26:22.39ID:vHK7Evso
今まではプログラミングの経験はなく、
教養としてpythonを勉強し始めました。
ただ仕事で使う機会もなく、いまいち勉強に身が入らない感じです。

皆さんはどうされているんですか?
ここのスレだと仕事で使う人が多いんでしょうか。
0129デフォルトの名無しさん
垢版 |
2021/03/25(木) 15:43:34.06ID:3ixfSSYA
>>124
インデントが崩壊していたからてきとーに見てた
正直すまんかった

>>125横じゃが
>return0.0
こんな手があるんだ!


小数まで計算するとコンピュータがついてけないからって
都度都度四捨五入処理をするよう組まれてた
ン十年前のプログラムを
Pythonで書き直すときにハマったのをおもいだした
0130デフォルトの名無しさん
垢版 |
2021/03/25(木) 16:49:02.78ID:Q40pz2EP
>>127
ブラゲーのbot運用
その次がエロサイトのスクレイピングと自動分類
たまに業務データの解析で使うときもある
0133デフォルトの名無しさん
垢版 |
2021/03/25(木) 18:19:37.27ID:3ixfSSYA
>>132
Pythonのノウハウよりだいじなことをおしえてやろう


相場をヲチって
よしんば正確に予想できるアルゴリズムが完成したとしても
自分が混ざった時点でそのぱーふぇくと理論は崩れる

覚えとけよw
0134デフォルトの名無しさん
垢版 |
2021/03/25(木) 18:21:37.93ID:GJzYUDdl
自分もスクレイピングやファイルの分類
ほぼエロ目的
だからそれのために情報を得るしそれに応用できないテクニックや知識は全部無駄
プログラミングを仕事にしてるわけでもないからpython自体の勉強なんかしないしやる気も出るわけない
0135127
垢版 |
2021/03/25(木) 18:43:38.10ID:2VOe+7hV
やっぱり、そうなんですよね。
一通り基礎は理解したものの、その後のモチベーションが…

ヒューマンリソースマシーンのような、
プログラミング的なゲームでもやっておいた方が良い気もしてきました(笑)
0137デフォルトの名無しさん
垢版 |
2021/03/25(木) 20:10:08.44ID:KmpgWBAt
ヒューマンリソースマシンはあれアセンブラだぞ
使える命令とかマシン語まんま
実用的なプログラムの勉強にはならない
頭の体操だね
0138デフォルトの名無しさん
垢版 |
2021/03/25(木) 20:55:15.36ID:2VOe+7hV
>>137
プログラミングの勉強になると思ってプレイしてました(笑)

あんな感じでプログラミングの勉強になるアプリとかゲームはありますかね?
0140デフォルトの名無しさん
垢版 |
2021/03/26(金) 00:00:46.47ID:0ubO4ros
こういうやつか
https://www.gamespark.jp/article/2019/06/08/90338.html
> その後、実際に本作の開発を開始する際、ゲームプレイの面でリサーチをし、2つのシステムがとても気に入りました。
> 『ファイナルファンタジーXII』のガンビットシステムと『カルネージハート』のプログラミングインターフェースです。
> 私の本作における目標は、ガンビットのシンプルさと『カルネージハート』の戦術的奥深さの間の妥協点を見つけることでした。
0143デフォルトの名無しさん
垢版 |
2021/03/27(土) 11:59:14.14ID:tPWOTzAz
以下の辞書内包表記がエラーになります。
どうすればいいでしょうか?

import math
def normalize_coefficients(n, D):
return {(s, i):0.5*math.sqrt(n/s) if s != 0 else (s, i):math.sqrt(n) for (s, i) in D.keys()}
0144デフォルトの名無しさん
垢版 |
2021/03/27(土) 14:43:44.30ID:cpUHfD3R
エラーに間違ってるとこを示す矢印っぽいのが出てるでしょ
elseの後の`(s, i):`を削除して
0145デフォルトの名無しさん
垢版 |
2021/03/27(土) 16:38:19.00ID:56gcLvkb
>>143
この手の質問はエラーメッセージと、本当はどんな動作を期待していたのか書いた方が答えてもらいやすい
0148デフォルトの名無しさん
垢版 |
2021/03/28(日) 02:59:44.68ID:XX3dha92
urllib.parse.urlencode()で辞書を渡す場合、値にリストを含む場合の変換結果について教えてください。

例えば以下のようなリスト値を含む辞書データを与えた場合
{'a': [123,456]}
a=[123, 456]
という風にリスト内の値の区切りに空白が入った文字列としてエンコードされてしまいます。(123, と456の間)
(実際には記号や空白は%xxや+でエンコードされます)

a=[123,456]
のようにリスト内の値の区切りに空白を含めない文字列としてエンコードする方法はありますか?
0149デフォルトの名無しさん
垢版 |
2021/03/28(日) 04:32:58.94ID:3NgZ3Zxf
bytesでないdictのvalueはstrが呼ばれてstrにされる実装だから単純な方法では無理やな
https://github.com/python/cpython/blob/master/Lib/urllib/parse.py#L950

* 文字列化したlistの空白を消すquote_plusを作ってurlencodeのquote_viaに渡す
* dictのvalueにlistでなく文字列を渡す
* dictのvalueに渡すlistを、空白が入らないように文字列化する__str__を実装したクラスでラップする

どれかをどうぞ
0150デフォルトの名無しさん
垢版 |
2021/03/28(日) 06:10:39.39ID:XX3dha92
ありがとうございます。
やはり単純にはいかないんですね。
素直にリストではなく、初めから文字列で格納するようにします。
0151デフォルトの名無しさん
垢版 |
2021/03/28(日) 20:49:47.97ID:JC3QvQ/6
すっごいしょーもない質問なんですけど
0から始めるならおすすめの初心者向けサイトってありますか?
0152デフォルトの名無しさん
垢版 |
2021/03/28(日) 21:02:38.12ID:2n/niDAm
うちProgateでhtmlとかPythonとか自分が使いそうなやつ1ヶ月くらいやってあとはひたすらググって必要なやつだけかいつばんでいった
phpとかもやったけど結局使ってない
0153デフォルトの名無しさん
垢版 |
2021/03/28(日) 21:45:28.92ID:AdvYUXyR
サイト見てやるくらいならオライリーの初めてのpythonでも買って全部読む方がよっぽどマシだぞ
0154デフォルトの名無しさん
垢版 |
2021/03/28(日) 21:58:48.98ID:zZ3ybzIq
いきなり本なんか買ったって続かないよ
サイトから入るのはいいと思うけどね
0155デフォルトの名無しさん
垢版 |
2021/03/28(日) 22:01:08.75ID:Wfs5bmxs
俺はやりたいことが決まってからpythonやりだしたのと
別の言語はできたから一通りfizzbuzzとか書いてから
必要なライブラリ検索して作るっていう工程を繰り返したけど
いきなり無からやり出すんだったら本あったほうがいいと思う
0157デフォルトの名無しさん
垢版 |
2021/03/29(月) 12:17:33.31ID:np5gG6ll
初めてのPythonはGoogleブックスで150ページぐらい読めるから、買う前に目を通してみて解るなら購入したらいいよ
俺にはとてもゼロから始める人に勧めるものとは思えない
0158デフォルトの名無しさん
垢版 |
2021/03/30(火) 16:15:46.49ID:/x/CBTP/
Python で連鎖律を解きたいです。
微分には「SymPy」といったライブラリが適していると、解説サイトにありました。

y = u^3
u = x^3 + 2x^2 + 3x + 4

この y の微分を求めたいです。
上記の答えは、

3(x^3 + 2x^2 + 3x + 4)^2 (3x^2 + 4x + 3)

になるそうなんですが、うまくゆきません。
以下に試したコードを書きます。

diff((x**3 + 2*x**2 + 3*x + 4)**3)
→ ×

a = diff((u**3) * (x**3 + 2*x**2 + 3*x + 4), u, x)
a.subs(u, x**3 + 2*x**2 + 3*x + 4)
→ ×

どなたかお知恵をお貸しください。よろしくお願いします<(_ _)>
0159デフォルトの名無しさん
垢版 |
2021/03/30(火) 17:26:28.39ID:jfNjkEti
以下を順番に実行したら動いたよ
import sympy
x = sympy.Symbol('x')
sympy.diff((x**3 + 2 * ...略) ** 3)
0160デフォルトの名無しさん
垢版 |
2021/03/30(火) 17:32:11.53ID:2VQXF/Ug
u, x, y = sympy.Symbols('u x y')
0161158
垢版 |
2021/03/30(火) 22:28:49.03ID:/x/CBTP/
>>159
>>160
どうもありがとうございます、無事計算できました!
感謝です!<(_ _)>
0162デフォルトの名無しさん
垢版 |
2021/03/31(水) 10:44:14.63ID:TYV185HC
int型のように振る舞う
小数を加減算すると四捨五入した整数を加減算する
足し算して最大値を超える場合最大値になる
引き算してマイナスになる場合0になる

という独自の型を作りたいのですがどうすればいいのでしょうか?
0165デフォルトの名無しさん
垢版 |
2021/03/31(水) 12:28:49.77ID:qt7DVuKB
int継承して四則演算をオーバーライド
0166デフォルトの名無しさん
垢版 |
2021/03/31(水) 12:31:16.92ID:33niRBMd
>>162
>という独自の型を作りたいのですがどうすればいいのでしょうか?

作ればいいじゃない
0168デフォルトの名無しさん
垢版 |
2021/03/31(水) 13:27:07.97ID:TYV185HC
>>165,167
そういうことをやればいいということはなんとなくわかってるんです
「python int 継承」で検索もしました
でも検索でヒットする記事じゃやり方がわからないので
それの具体的なやり方をコードで教えてほしいわけです

あと具体的にやりたいのはこういうことです
a = n(5,100) #実体化のときに初期値と最大値を設定
print(a) #5と表示
a += 5.1
print(a) #10と表示
a += 999
print(a) #100と表示
0169デフォルトの名無しさん
垢版 |
2021/03/31(水) 15:25:15.94ID:Vc5hrOQS
>>168
class Foo(int):
__def __add__(self, other):
____return self.__class__(int(self) + other)

続きは「operator overloading in python」で検索
0170デフォルトの名無しさん
垢版 |
2021/03/31(水) 16:04:49.92ID:qDb8EHC5
>>169
>>168は検索したってわからないって言ってるだろ
ちゃんと全部書いてやれよ
0171デフォルトの名無しさん
垢版 |
2021/03/31(水) 17:40:42.81ID:kvIfnSeV
なんとなくわかってたんだから
>>169見れば後は分かるだろ

逆に何が分からないのかが分からないからそれを教えてくれよ
0172デフォルトの名無しさん
垢版 |
2021/03/31(水) 18:37:46.05ID:TYV185HC
仕様は完璧には理解できなかったけど
とりあえず想定通り動いてくれるものができました
https://pastebin.com/DS9C8zWT
pass:del(削除用パスだと思ったら閲覧用パスだった)

>>169 他回答してくれた皆さん
ありがとうございました
0173デフォルトの名無しさん
垢版 |
2021/03/31(水) 23:49:18.64ID:Vc5hrOQS
>>172
別にいいのかもしれないけど
n(“string”)とかn(10.12)とか比較演算とか
intを継承すれば発生しない問題をたくさん抱えてるよ
0174デフォルトの名無しさん
垢版 |
2021/04/01(木) 15:18:01.88ID:9j9uUZcG
初pythonです。
クラス変数なるものを知り、こりゃすべて__init__の中でインスタンス変数にしないと危険だなと思いました。
しかし世のサンプルを見ると、ほとんどがクラス変数となっています。
Webサービスのジョブのクラスのコードでもクラス変数になっていて、これでちゃんと動くのか不安に思っています。
サンプルは自分で考えてスコープ変えろよって言うのが前提なのでしょうか。
初心者過ぎてばかげた質問かもしれませんが、ご意見いただけたらと思います。
0176デフォルトの名無しさん
垢版 |
2021/04/01(木) 19:17:31.45ID:sxNAMQCC
インスタンス変数によるクラス変数の隠蔽について質問です
以下のコードにおいて、出力が21,19,0となるのは、
21や19の代入時にインスタンス変数ageが生成されて、クラス変数のageが隠蔽されたからという理解であってますか?

class person():
  age = 0

taro = person()
taro.age = 21
jiro = person()
jiro.age = 19

print("{p.age}, ".format(p=taro))
print("{p.age}, ".format(p=jiro))
print("{p.age}, ".format(p=person))
0177デフォルトの名無しさん
垢版 |
2021/04/01(木) 20:11:50.07ID:qWLYbtkQ
>>175
正確にはサンプルと言うよりはチュートリアル系のページです。
個人のページを書くのは気が引けるので、例えば、以下のItemクラスなどです。Webサービスなので同時に呼ばれることは多々あると思うのですが。
https://fastapi.tiangolo.com/ja/tutorial/body/
0183デフォルトの名無しさん
垢版 |
2021/04/01(木) 21:56:15.69ID:6NDtmvbq
実装方法は違うけど考え方はデータクラスと同じで内部的にインスタンス変数として設定される
0184デフォルトの名無しさん
垢版 |
2021/04/01(木) 23:38:19.42ID:9j9uUZcG
>>183
ありがとうございます。
さらには__init__をオーバーライドしないように気をつけなきゃいけないんですかね
pythonチャレンジ二日目でちょっとくじけそうです。
今回のことなんかここで聞かなきゃ回答にいけつけなかったし
0185デフォルトの名無しさん
垢版 |
2021/04/02(金) 01:09:36.62ID:xburNgtP
tkinterでメッセージボックス出すときタイトル引数が長くてメッセージ引数が短いと
タイトルバーが省略表示されてしまうんだけど、全部表示するにはどうしたらいいですか?

tkmb.showinfo(validate_inputs_directorypath, "なし")
みたいな場合です
0187デフォルトの名無しさん
垢版 |
2021/04/02(金) 22:50:57.48ID:kA91Mkww
pythonはクラス変数がありますが、インスタンス参照がない状態のガベージコレクションはどうなっているのでしょうか?
0190デフォルトの名無しさん
垢版 |
2021/04/03(土) 10:00:16.00ID:trgltwrH
今まで仕事で必死こいてやってたあれこれが、全部秒かからんで終わる
大したPC使ってないのにどんだけすごいんよ。この子

本当やろうと思えばなんでもできんね。これ
0192デフォルトの名無しさん
垢版 |
2021/04/03(土) 16:53:33.46ID:47kYGnI+
すみません、
例えばpngの自動文字起こしアプリをPythonで作った場合、そのアプリを別PCでも使いたい場合、そっちでもpipしなきゃいけないんですか?
配布する場合いろんな部署に配布することになるから大変なんですけど
0197デフォルトの名無しさん
垢版 |
2021/04/03(土) 17:52:00.45ID:DP/gaUVz
AWSかGCPだな
Pythonで作ったものを非開発者に配布するのは本当に地獄を見るから絶対にやめたほうがいい
0198デフォルトの名無しさん
垢版 |
2021/04/03(土) 18:59:42.70ID:nkSIG8qO
pipを使えないような人達に配布するならインストーラかインストールスクリプトを書く
特定のユーザーがログイン時にインストールスクリプトを自動実行するような仕組みを使えば配布は簡単
Webアプリに比べれば環境が多様だから台数が増えればサポートコストは増える
0199デフォルトの名無しさん
垢版 |
2021/04/03(土) 19:03:31.16ID:6fy7iE1I
>>198
そのスクリプトなりインストーラ+そのアプデしか走らせられない安全な環境を作るときにチヌわ
0200デフォルトの名無しさん
垢版 |
2021/04/03(土) 19:20:47.90ID:FpevJVBv
最悪pythonディレクトリ丸ごと渡せばいい
python embedというスクラッチがあるから
それに必要なの足していけばいいんじゃ
0201デフォルトの名無しさん
垢版 |
2021/04/03(土) 19:57:20.93ID:I8FEebuy
' aa a '.strip().strip('aaa')
#' '

おそらく'aa a'の中の半角スペースだけ残るのですがなぜですか
'aaa'には当てはまらないから無視して
'aa a'が残るならわかるんですが
0202デフォルトの名無しさん
垢版 |
2021/04/03(土) 20:07:12.42ID:gHKAEbqs
stripのリファレンスをよく読んでごらん
引数に指定するのは「文字列」ではなく「文字の集合」だ
この違いが分かるかね
0208デフォルトの名無しさん
垢版 |
2021/04/04(日) 05:31:24.72ID:DYzzbk5J
>>207
exeもファイルアップローダもどっちも個人的には難しい部類なんだけど、簡単っって言える人が羨ましい
0211デフォルトの名無しさん
垢版 |
2021/04/04(日) 07:41:07.08ID:/F7LAei5
>>209補足
ベン図をかくと
Webアプリの方がはるかにでっかい。

うpろだはWebアプリの中の一点にすぎない。

違いが判らないマジ超初心者のうちは
Pythonよりずっとずっとさきに
つぶしのきくPC用語をもっといっぱいべんきょうしる!
0213デフォルトの名無しさん
垢版 |
2021/04/04(日) 07:52:18.84ID:/F7LAei5
>>212
社内専用かつ中身がexeなzipであっても置いてておkでまともなうpろだ持ってる会社はすげえ少ないぞ。
う○こ味のカレーもたべます!みたいなヤバイ設定のNASがある会社はまずまずあるかもしらんが。。。
んな設定のまま使ってるなやwってーはなしでー

社内Webページに置かせてもらう あたりがまずまず現実的

メール添付で配ろうとするのは、これまたセキュリティにひっかかって地獄をみるだろう。
0216デフォルトの名無しさん
垢版 |
2021/04/04(日) 08:48:55.24ID:DYzzbk5J
>>215
なんでそんな話になるんだ?
exeもwebも簡単→おれには難しい/簡単って言える人は羨ましいって流れだぞ?

あと、興味本位で聞くけど、VBAで画像認識ってできるの?
外部のアプリ叩くとかだと、その外部アプリどうすんのって話にすり替わるだけだと思うけど。
0217デフォルトの名無しさん
垢版 |
2021/04/04(日) 08:53:54.01ID:/F7LAei5
>>216
VBAで画像認識>野良ライブラリ落ちてないから手軽にはできないが、不可能ではない。

個人的には(、ちゅーか個人の事情的には?)(規約とかトラウマ的に)難しい
ってやつね
オトナコトバありがとう
0218デフォルトの名無しさん
垢版 |
2021/04/04(日) 08:59:11.82ID:DYzzbk5J
>>217
「pngの自動文字起こし」をVBAでスクラッチって無理な気がするけど。
ガチガチのアップロード機能作るより難しくね?
0219デフォルトの名無しさん
垢版 |
2021/04/04(日) 09:06:23.43ID:/F7LAei5
>>218
たしかにそこは
まちがいなく、確実に、
「がちがちのろだ」を整備するほうが簡単。

ところで
簡単っって言える(ようなセキュリティぬるぽでゆるされてる)人が羨ましい
の末尾に
見えない芝生生えてるよな?
0220デフォルトの名無しさん
垢版 |
2021/04/04(日) 09:16:30.52ID:DYzzbk5J
>>219
> 見えない芝生生えてるよな?

そんな事ないよ
環境に左右されるケースが大きいから、オレの環境のガイドラインだとハードルが高いってだけだし
ガイドラインが許す範囲で、コスト重視の簡易設計にするのは重要な見切りだと思ってる
0221デフォルトの名無しさん
垢版 |
2021/04/04(日) 09:24:05.66ID:/F7LAei5
>>220
個人的には
そのへんの規定がゆるーい(というか上の意識が低くて未整備まだ存在しないな場合がままある)会社だからって、
抵触しなければおkおkおkって「見切り」して
使うだけなひとびとのexe入りファイルのやりとりへの心のハードルずんどこ下げちゃうのは
すげーあぶないとおもうので
芝生がはえてしまう。

ハードルはすれすれで超えましょう。ってのは無論だいじだけど。
0224デフォルトの名無しさん
垢版 |
2021/04/04(日) 12:31:22.48ID:oZvlJFMv
>>207
exe化するのはリテラシーの低いシステム部門による苦肉の策であって基本ではないよ

基本はパッケージにして配布
0225デフォルトの名無しさん
垢版 |
2021/04/04(日) 12:32:21.42ID:vLoSd5kv
パッと調べただけだけどexe化ってpyinstallerってやつ使えばできるんじゃないです?
Webアプリはしょっちゅう作ってるんで余裕ですね
0226デフォルトの名無しさん
垢版 |
2021/04/04(日) 12:34:04.19ID:vLoSd5kv
>>224
なるほど
一部の部署以外は令和とは思えないほどネットリテラシー低いのでexe化は必須っすね
0228デフォルトの名無しさん
垢版 |
2021/04/04(日) 12:52:45.25ID:DgttH7dz
PyInstallerでexeにして上手く動けば儲けもの
動かないならexeを諦めて他、かな
PyInstallerのトラブルを解決できるような人は初心者スレで質問する必要ないよ
たぶん
0229デフォルトの名無しさん
垢版 |
2021/04/04(日) 14:51:24.94ID:JGzgwOb+
システム部門のリテラシーが低さをユーザーに責任転嫁するのは使えない情シスあるある
0230デフォルトの名無しさん
垢版 |
2021/04/05(月) 04:53:55.03ID:GCYTY8e9
サーバー側はseleniumを使ってアクセスしてる人が分かると聞きました
では、webbrowserを使ってアクセスした場合は分かるのでしょうか
また、その時にpythonが実行されてることは分かるでしょうか
0232デフォルトの名無しさん
垢版 |
2021/04/05(月) 06:26:56.58ID:1rfXdG6q
https://docs.python.org/ja/3/library/webbrowser.html
これの話をしているか?
これの話をしているなら
1. webbrowserから起動したブラウザでアクセスしたかどうかは分からない
2. Pythonか実行されているかどうかは分からない

Seleniumに関しても正確には理解してなさそうなので補足する
Webオートメーションによってアクセスされているかの判別は
1. navigator.webdriverフラグ
2. 人間らしい振る舞いの検出
に大別される
SeleniumではなくWebオートメーションと呼んだことから察するかもしれないが、
この判別は同じ用途のツールならSeleniumに限らず適用可能である
(逆に言えばSeleniumかどうかの判別ではない)

navigator.webdriverというのは、Webオートメーションによってアクセスしているかどうかをブラウザ自身に通知させるものだ
ただし、今のところブラウザのオプションで強制的にfalseにすることが可能だし、仮に今後オプションで変更できなくなったとしても、
野良ビルドされたブラウザが配布されるようになるだけで、それほど意味はないだろうことが策定時から指摘されている
https://developer.mozilla.org/ja/docs/Web/API/Navigator/webdriver

人間らしい振る舞いの検出というのは、例えば、
人間が要素をクリックするときはポインタかフォーカスが要素の上まで移動してくるはずである
この移動している様子がなかった場合は、Webオートメーションである
移動している様子があった場合も、ポインタが完全な直線で移動しているようなら、
人間の操作にあるはずの揺らぎがないことから、やはりWebオートメーションである
みたいなものである
実際のアルゴリズムはこのような単純なものではなく、現在は機械学習による異常検知が主流である
0233デフォルトの名無しさん
垢版 |
2021/04/05(月) 07:28:16.88ID:CsDRo5vQ
for inだけでしこしこデータベースをいじってアップデートしてたけど
だいぶPythonに慣れてきたのでいよいよpandasを使って書いてみようとしたらコードは簡潔になったけどめっちゃ遅くなった…
遅い部分を削っていったらもうパンダ使う意味ほとんどなくなったし。げんなり
0234デフォルトの名無しさん
垢版 |
2021/04/05(月) 08:01:26.42ID:GCYTY8e9
>>232
はい、そのリンク先の話をしていました
navigator.webdriverをfalseに設定できるってことすら知らなかったです
いや、本当にありがとうございました!
0235デフォルトの名無しさん
垢版 |
2021/04/05(月) 10:42:07.74ID:02jeM6qR
>>232
>人間が要素をクリックするときはポインタかフォーカスが要素の上まで移動してくるはずである

人間が使っていてもポインタやフォーカスが移動しないケースはいくらでもあるよ
0238デフォルトの名無しさん
垢版 |
2021/04/05(月) 12:02:27.30ID:YvbwOQhF
実際にはこんな単純なものではないって書いてあるのにこれだから
馬鹿はママとお話ししてろ
0239デフォルトの名無しさん
垢版 |
2021/04/05(月) 15:29:59.50ID:vS+QhcYH
亀レスですまんが、↑のexeファイルって自己解凍型のexeのことだと思ってたが違うけん?
0240デフォルトの名無しさん
垢版 |
2021/04/06(火) 10:31:52.68ID:dCmZ7v4+
Windowsで作ったPythonの仮想環境を
Linux上で動かしたいです

ただファイル類をコピーしただけだと、
activate.batやPython.exe等がWindows用なので
動作しませんでした

Linux側で仮想環境を作り、Script以外をコピーする等
すればよいのでしょうか
0241デフォルトの名無しさん
垢版 |
2021/04/06(火) 11:28:02.29ID:HwFHEu2a
>>240
>Linux側で仮想環境を作り、Script以外をコピーする等
すればよいのでしょうか
よくないです。仮想環境はただ、コピーして動くようなものではありません
Linux側で仮想環境を作り、その中でwheelでもgit cloneでもいいですがpip installできるような環境をつくるべきです
0242デフォルトの名無しさん
垢版 |
2021/04/06(火) 14:07:11.93ID:dCmZ7v4+
>>241
Linux側はインターネット接続不可環境なので、
gitやpipでのレポジトリへのアクセスだとか、
自前のレポジトリの作成やライブラリの収集が
できないですね
すいません、そういう環境です
0243デフォルトの名無しさん
垢版 |
2021/04/06(火) 14:40:09.24ID:i2p9OJu5
ネットにつながってるマシンでpip環境を書きだし+
入ってるものの各インスコ用ファイルを準備

スタンドアロンのマシンにファイルをうつして
ローカルファイルからのpipインスコを実行

ソースもうごくおいしーいの( ^)o(^ )
0244デフォルトの名無しさん
垢版 |
2021/04/06(火) 15:51:35.24ID:eryrf7Ji
Linuxでネット繋げないってわりと無理ゲーな気がするけど何でやろうとしてるんだ……
Python以外にaptも使えないんだぞ
0245デフォルトの名無しさん
垢版 |
2021/04/06(火) 19:51:23.47ID:HwFHEu2a
>>242
だったら最初からかけよ
何にしても外からコピーできるんなら、必要なパッケージをコピーして持っていってそれをpipで入れればいいだけだろ
コピーしてって別の仮想環境からじゃなくて、PyPIで配布してるpip install パッケージ名.whlでインストールできるやつな
0246デフォルトの名無しさん
垢版 |
2021/04/06(火) 21:11:23.50ID:wES9tagM
WindowsでLinux用のDockerコンテナ動かして
その上にPythonの環境作ってDockerイメージをコピーで
0247デフォルトの名無しさん
垢版 |
2021/04/06(火) 22:29:42.47ID:vVvRH1MT
おっぱいそん
0248デフォルトの名無しさん
垢版 |
2021/04/06(火) 23:16:04.94ID:cBLfSlVZ
山浦清透、1/15

Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース
www.youtube.com/watch?v=lZD1MIHwMBY

Windows 10 Home 版, WSL2, Ubuntu 20.04 LTS,
Docker Compose, VSCode, Heroku, Ruby on Rails, Git, CI/CD, CircleCI

これを、Python に変えれば?
0249デフォルトの名無しさん
垢版 |
2021/04/08(木) 00:25:52.54ID:l4JF0i/8
pythonで成型した文字列をjavascriptのコード(文字列)としてprintしたいのですが
みなさんはどうやっていますか
テンプレート文字列だと辞書のとき{}がかぶっちゃいますよね
print(f"""var obj={}""")
一旦ファイルに保存して読み出しするのが一般的なのでしょうか?
0251デフォルトの名無しさん
垢版 |
2021/04/08(木) 14:22:55.79ID:BYjSvKlS
小林さんちのメイドラゴン
久しぶりに再放送やってたので観たけど
小林さんPython使ってたんだな
バグ仕込んでるみたいだったが
0253デフォルトの名無しさん
垢版 |
2021/04/08(木) 20:04:03.76ID:Fp+NNsfX
pythonを一からはじめたいんですが、まとめサイトの中の本から選んだらよいんでしょうか?
2018年から更新されてないようなのですが、おすすめの書籍やサイトありましたら、お願いいたします
0256デフォルトの名無しさん
垢版 |
2021/04/08(木) 20:27:21.85ID:H2kw3RWC
>>77
ありがとうございました
FAQ読みました
0258デフォルトの名無しさん
垢版 |
2021/04/09(金) 11:46:09.00ID:D8NVI6fw
Python開発用の環境を構築することの指針なんですが、
インストールしたPython本体は触らず、
仮想環境を作り、そちら側に追加機能をインストールする、
という方針を聞きます

しかしその方針とすると、別プロジェクトを作るとかで新たな仮想環境を作ったとき
改めて追加のパッケージを導入する必要があり、面倒に思ってます

Pylint等、どんな仮想環境でも使いたいものは本体に、
例えばDjangoなんかみたいに特定のプロジェクトで使うものは仮想環境に、
なんて考えましたが、本体に入れるべきか仮想環境に入れるべきかの線引きが
難しいなと思ってます

どんな風に運用するのがよいのか、よいベストプラクティスって、何かありますか?
0259デフォルトの名無しさん
垢版 |
2021/04/09(金) 12:14:56.84ID:mIlalRjZ
開発者間で環境を合わせたいor特定バージョンのライブラリを使いたいorある日突然動かなくなっては困る→pyenv
それ以外→直インストール
とかでいいんじゃね?
0260デフォルトの名無しさん
垢版 |
2021/04/09(金) 12:31:11.65ID:BwescqVD
自分でちょっとPythonで何か作ってみたいって程度なら仮想どうのこうのなんかど〜でもいい
0261デフォルトの名無しさん
垢版 |
2021/04/09(金) 13:50:57.78ID:0I3K7hDb
>>258
pipenv install pylint autopep8なり
poetry add pylintautopep8なり
決まり文句はどっかにメモしてコピペすればいいのでは?
パッケージのバージョンの依存関係のあれこれを考えたくないなら、何も考えず仮想環境で全部のパッケージを分けちゃうが一番楽だと思うけどな。
0263デフォルトの名無しさん
垢版 |
2021/04/09(金) 14:46:59.82ID:3bHJNfn7
importしないパッケージなら入れてしまっていいと思う
逆に言うとimportするなら面倒くさかろうが毎回入れる
0264デフォルトの名無しさん
垢版 |
2021/04/09(金) 14:48:17.91
>>258
・docker(およびdocker-compose)
 dockerを実行できるクラウドサービスを使えば尚良
 linuxなら元から入ってたかもしれないので宅PCで開発してもよい
 docker run, docoker exec, docker オプション, マウント
 などで検索すると、気軽に0からpythonの環境を構築できる方法がわかる
・google colaboratory
 ちょっとしたトライアンドエラーからweb系から機械学習からほぼすべてのプロジェクトを困ること無く仮想環境で開発できる
 初心者ならjavascript並に開発の敷居が下がったといってもいい
・git周り
 clone, add, commit -m'', push, ブランチ
 個人開発ならぶっちゃけこの辺りだけ知ってれば十分
・vscode
 補助として
・django

何を開発するかにもよるけど
google colabやdockerインストール済みの環境で開発しつつ、
まとまってきたらgitへpush
PCが壊れたり、別のPCへ移植したければ
googleのアカウント、gitのアカウント(googleのoauth認証でもいけた?なら実質googleアカウントだけ)だけで
0から同じ環境の構築完了
0265デフォルトの名無しさん
垢版 |
2021/04/09(金) 18:14:56.91ID:z6REo42V
>>258
ベストプラクティスは分からないけどプロジェクト毎に環境切った方が問題切り分けられて後々楽になるのは確か

個人のプロジェクトでそこまで神経質になる必要が無ければシステムに全部入れちゃうのが1番楽で別にそれでもいいと思う

自分はnmpみたいにPythonはシステムに入れてる最新版使ってパッケージはpoetryでプロジェクトディレクトリ以下に入れて必要無くなればディレクトリごと捨てるようにしてる
0266デフォルトの名無しさん
垢版 |
2021/04/09(金) 20:30:56.27ID:2i2clTn4
配列に格納された連続する二要素をいちばん簡潔に取り出す方法って何になりますか?
A=[1,2,3,4,5]なら(1,2),(2,3),(3,4),(4,5)みたいな感じです
0269デフォルトの名無しさん
垢版 |
2021/04/09(金) 20:50:06.30ID:p7uKRazG
list(zip(A,A[1:]))
0270デフォルトの名無しさん
垢版 |
2021/04/09(金) 21:13:26.65ID:2i2clTn4
>>268
やっぱりこれが限界ですよね…

>>269もなるほどとは思いましたがA[1:]の部分でメモリに無駄がありそうですし…
0273デフォルトの名無しさん
垢版 |
2021/04/10(土) 00:35:15.36ID:/pBftddC
出た、忘れたころに出てくるitertools
めちゃくちゃ使えそうで使えないライブラリ
0275デフォルトの名無しさん
垢版 |
2021/04/10(土) 09:37:26.29ID:yMUSEnBC
>>272
ありがとうございます!
調べた感じchunkedだと[1,2],[3,4]みたいに区切って出力されるので、目的には合わなさそうです…

>>268
ありがとうございます!
0276デフォルトの名無しさん
垢版 |
2021/04/10(土) 15:25:52.63ID:7Fqbquic
みんなすごいな。
カメでマルかけて大喜びしてる自分とは大違い。
頑張って勉強せないかん。
0277デフォルトの名無しさん
垢版 |
2021/04/10(土) 16:21:37.07ID:s4y3TWlJ
>>270
269の書き方がファイナルアンサーだと思うよ。
268と同じく、中間でリストを作ったりすることがない書き方になっている。
0278デフォルトの名無しさん
垢版 |
2021/04/10(土) 16:44:35.29ID:yMUSEnBC
>>277
269はA[1:]部分でAをコピーしてる(メモリを無駄遣いしている?)ので268が良いと思っていたのですがこれは間違いですか?
0279デフォルトの名無しさん
垢版 |
2021/04/10(土) 17:46:33.48ID:V9tOEpjW
>>269 のA[1:]をitertools.islice(A,1,None)に変えればメモリの無駄も無くせるか
0282デフォルトの名無しさん
垢版 |
2021/04/10(土) 19:25:46.02ID:t2rPFxAg
コマンドラインでvenvの仮想環境作って
atomで仮想環境を選択してコード書きたいのですが
コマンドラインってずっと開きっぱなしでないといけないの?
閉じたら仮想環境もdeactivateされるんですか?
0283デフォルトの名無しさん
垢版 |
2021/04/10(土) 20:02:22.86ID:KmPkwZfW
閉じたらプロセスも止まるからな
開きっぱなしでも別に邪魔にならんだろ

atomってターミナル無いの?vscも、pychrmもproject開いたらvenvの環境が自動でアクティベートされてるから意識すらしない
0284デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:07:32.12ID:euoo/Shs
他のIDEは知らんけど
atom_venvのパッケージの話なら
ターミナルで仮想環境作る

atomで仮想環境のディレクトリを指定してやる

仮想環境にスイッチできる

だけなので、仮想環境作ったあとはターミナルは閉じていい
0285デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:15:36.12ID:OA/XTa6K
VSCode では、端末を幾つでも開ける。
デバッグでもよく使うし、常に最低でも、1つは開いている

端末を起動していても、表示・非表示を選択できる
0286デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:26:32.12ID:hfLklo2F
コマンドラインのターミナルが仮想環境そのもので
閉じたらatomというただのエディターが残るだけ
0287デフォルトの名無しさん
垢版 |
2021/04/11(日) 12:08:23.93ID:6eqQzCzM
仮想環境ってのは有り体にいうとPATHとPYTHONPATHあたりの環境変数がシステムにインストールされているPythonとは隔離されたPython向けに調整されてるってだけで、
プロセスとかは全く関係ないぞ
activateの実態は環境変数の設定
0288デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:21:28.49ID:Whdbrxbg
変数を代入する関数を書くとき
x = 1

def func_a():
__x=2
func_a()

def func_b():
__return 2
x = func_b()

どっちで書いた方がいいとかありますか?どっちでもいい?
0291デフォルトの名無しさん
垢版 |
2021/04/12(月) 13:01:58.81ID:3O31AUpl
>>288
前者は
*変数名をミスると全く意味を成さない(その上エラーは出ない)
*思わぬ副作用を生みかねない
*モジュール化出来ない

バグの温床になる
0292デフォルトの名無しさん
垢版 |
2021/04/12(月) 14:17:43.25ID:Tqq1DlXC
urllibってパースするだけじゃなくクエリを追加して返してくれるような機能ってないんですかね?
(単に&の文字列結合すればいいだけなんですけど)
0293デフォルトの名無しさん
垢版 |
2021/04/12(月) 14:49:37.05ID:iP6DLKCo
>>291
なるほど
0294デフォルトの名無しさん
垢版 |
2021/04/12(月) 15:06:08.10ID:eKsxxXZh
「Jupyter notebookの起動フォルダ」ってどこのことですか?
Jupyter notebookを開いたときに出てくる一覧のところ?
0295デフォルトの名無しさん
垢版 |
2021/04/12(月) 18:30:19.07ID:6NL/o6lT
>>292
ある
0296デフォルトの名無しさん
垢版 |
2021/04/12(月) 18:32:07.37ID:6NL/o6lT
>>294
違う
jupyter notebook を起動するときのカレントディレクトリか
あるいはオプションで指定して起動
0297デフォルトの名無しさん
垢版 |
2021/04/12(月) 18:52:36.49ID:eKsxxXZh
>>296
ありがとうございます
jupyter notebook を起動するときのカレントディレクトリを調べるにはどうしたらいいですか?
0298デフォルトの名無しさん
垢版 |
2021/04/12(月) 19:15:20.69ID:6NL/o6lT
(´・ω・`)知らんがな
0300デフォルトの名無しさん
垢版 |
2021/04/12(月) 19:30:16.70ID:tJ6MT7iR
python と C++ をswigで繋いだ開発をやりたいのですがなにか良い統合開発環境ないですか?
0303デフォルトの名無しさん
垢版 |
2021/04/12(月) 20:33:50.30ID:tJ6MT7iR
boostはよく知らないですがpythonメインで高速化したい部分をC++で書くイメージです。
emacsってUnix系ですよね?windowsでモダンな開発環境触ってみたいです。
0305デフォルトの名無しさん
垢版 |
2021/04/12(月) 21:52:57.52ID:z80SpJNy
日本人が作った、バージョンマネージャーのanyenv で、
Ruby, Python, Node.js のrbenv, pyenv, nodenv でも、
使いたいバージョンを切り替えるだけ

rbenv global 2.6.6
rbenv local 2.6.6

global ならシステム全体、
local なら、そのプロジェクトのバージョンを切り替える

rubyコマンドの参照先を確認する
which ruby
~/.anyenv/envs/rbenv/shims/ruby

rbenv global system
なら、apt などで、/usr/bin/ruby へインストールしたバージョンを使う

まあ最近は、Docker を使う事も多いけど
0307デフォルトの名無しさん
垢版 |
2021/04/12(月) 22:18:28.74ID:I/pOLMrW
インスタンスを別のクラスでいじりたい

class Main():
__def get(self):
____self.x = 1

class Sub():
__def convert(self):
____self.x = str(self.x)
みたいな。

obj =Main()
obj.get()
…??
どう書いたらいいのでしょうか
(実際は取得クラスはもっと大きいので、変換系は分離したいのです)
0309デフォルトの名無しさん
垢版 |
2021/04/12(月) 22:34:11.40ID:CTvbFAAZ
class main:
__x=1

class sub:
__def setmainx(a):
____main.x=a

print(main.x)
sub.setmainx(2)
print(main.x)
0311デフォルトの名無しさん
垢版 |
2021/04/12(月) 22:48:14.45ID:8Dw4jEA6
>>304
うん
0313デフォルトの名無しさん
垢版 |
2021/04/13(火) 05:15:27.15ID:M3Xniwnk
質問があります。
コマンドプロントでPython使ってて、

>>> a, b = 0, 1
>>> while a < 10:
... print(a)
... a, b = b, a+b

という単純なプログラムを入力したいんですが、
4行目が書けません…
3行目を書いてEnterした瞬間に実行されてエラーが出てしまいます。
IDLEに入力する場合は全部書いてから実行することを自分で選べるから
上記のプログラムを成せるんですが、
コマンドプロントに入力するのは無理なんでしょうか?

ググっても誰も困ってません…
ド素人な質問ですみませんが、よろしくお願いします。
0314デフォルトの名無しさん
垢版 |
2021/04/13(火) 05:21:46.97ID:Qr7OJO8/
>>313
while文のケツの「:」を忘れているか
print文のあとEnterを2回押しているか
Windows10のIMEバグに巻き込まれているか
すきなのえらべ
0315デフォルトの名無しさん
垢版 |
2021/04/13(火) 05:29:36.78ID:M3Xniwnk
>>314
早速ありがとうございます。
while行末の「:」はちゃんと打っています。
これがないとそこでエラーになって3行目すら書けないので。
で3行目には無事いけます。実行されずに…のインデントが出てきます。
そしてprint(a)と書いて、Enter押した瞬間に、
今度は次行のインデントが出てくれずに実行されてエラーになります。
何度やってもこうなります。
>>314の選択肢によると残り一択のWin10のバグってことで
コマンドプロントではどうしようもないことになりますか…
0316デフォルトの名無しさん
垢版 |
2021/04/13(火) 05:32:08.19ID:M3Xniwnk
whileの中って命令が並ぶことが多いのに、
いちいち1行つづ実行してしまうコマンドプロントでは
長いプログラムは向いてないということもあるのでしょうか
0317デフォルトの名無しさん
垢版 |
2021/04/13(火) 06:47:07.47ID:YlnYj74B
そもそも、プログラマーは、VSCode を使う

拡張機能のCode Runner を使えば、右クリックメニューから、
選択したコード片または、ファイル全体を実行できる
0318デフォルトの名無しさん
垢版 |
2021/04/13(火) 06:52:20.41ID:GaFDNALA
紀文、当選、いい気分
0319デフォルトの名無しさん
垢版 |
2021/04/13(火) 07:26:44.48ID:M3Xniwnk
>>317
VSCodeをインストールしてみました。
ありがとうございます。
IDLEはコマンドプロントより見やすくていい感じだと思ったのに
何故練習用としか言われないのか、理由が分かった気がします…
0322デフォルトの名無しさん
垢版 |
2021/04/13(火) 10:29:14.36ID:M3Xniwnk
>>321
それでした!
左に自動で入る「…」がインデントだと思ってしまってました…
コマンドプロントでもちゃんと動きました。
ありがとうございました。
0324デフォルトの名無しさん
垢版 |
2021/04/13(火) 12:25:09.19ID:qZatEyS3
windowsの3.8.9でpyzを動かすとPYTHONPATHがどうだとかでfatal errorになるんだが
解決方法はありますか?
0326デフォルトの名無しさん
垢版 |
2021/04/13(火) 16:32:24.77ID:WQHvBVYs
クラス内で関数の引数はいきなり使っていいの?
一度メンバ変数にすべき?

class Test():
...def func(self, mylist):
......i for i in mylist:

class Test():
...def func(self, mylist):
......self.mylist = mylist
......i for i in self.mylist:
0328デフォルトの名無しさん
垢版 |
2021/04/13(火) 21:21:06.87ID:X/mewqYN
htmlタグを出力するんだけどみんなどうやってる?
html='''
___<div>
____<span>hoge</span>
___</div>
___'''
とか
html=___"<div>" +
_______"<span>hoge</span>" +
______"</div>"

とか
出力後の成型作業が面倒だなぁ、と
0332デフォルトの名無しさん
垢版 |
2021/04/13(火) 21:31:13.78ID:X/mewqYN
>>329
それだとpythonコード内にきっちり確認してインデントも書かなきゃいけないっぽい?

>>330,331

調べたらbs4にprettifyってメソッドがあるみたい
これならたぶん>>328の後者でbs4に一旦入れたら整えてくれそう?
とりあえずやってみる
0334デフォルトの名無しさん
垢版 |
2021/04/13(火) 22:09:39.10ID:VFKKiyoC
>>328
テンプレートエンジン使えよ
0335デフォルトの名無しさん
垢版 |
2021/04/13(火) 22:53:30.67ID:YlnYj74B
Ruby のテンプレートエンジン・ERB では、a.html.erb に、

<% price = 2500 * 1.05 %>
<p>
本の値段は、<%= price %>円です
</p>

<% 〜 %> には、Rubyの式を書く。
<%= 〜 %> 内は、HTML に出力される

ERB は、あらゆる形式に、Rubyの式を埋め込める。
a.js.erb みたいに、JavaScript ファイルにも埋め込める
0336デフォルトの名無しさん
垢版 |
2021/04/13(火) 23:28:42.38ID:X/mewqYN
>>334
今回は出力っていっても文字通りhtmlコードのプレーンテキストが欲しいってだけなので
ぶっちゃけ一行でもいいけど、みたいな見栄えだけの話
0337デフォルトの名無しさん
垢版 |
2021/04/13(火) 23:42:43.92ID:rKsAxx1w
>>289
新人>>288がその日のうちに
プロジェクトの全dtoのsetterを分解して
メンバーをpublicにしてその実装に書き換えたのを発見するのだった
0338デフォルトの名無しさん
垢版 |
2021/04/14(水) 00:30:19.71ID:aC9t3egY
>>337
マウント取りたいだけなら他所でやるがよろし
0339デフォルトの名無しさん
垢版 |
2021/04/14(水) 04:30:25.58ID:GFdnPTqO
>>337
Javaしか書いたこと無いんだなって速攻で分かる
Pythonだとgetter/setter的な書き方はしないから、書き方っていう事自体発生しないっていう
(どうしてもやりたい場合はデコレータかpropertyを使う)
0341デフォルトの名無しさん
垢版 |
2021/04/14(水) 07:16:34.98ID:S5Re0uMO
Javaスレと思い込んで書き込んでるでしょ
0342デフォルトの名無しさん
垢版 |
2021/04/14(水) 08:25:29.25ID:ksE3f3HI
pythonも一応getter/setterみたいな書き方できるけどもっと応用的に使うイメージ
単純な表示/代入は普通にアクセスすりゃいいし
0344デフォルトの名無しさん
垢版 |
2021/04/14(水) 10:34:06.68ID:nYFKaNdk
pyちゃんの貞操観念はガバガバ
でもgotoは死守
0347デフォルトの名無しさん
垢版 |
2021/04/14(水) 17:42:18.41ID:2JfXJ4J1
>>346
インスタンス化したときに(クラス変数で)初期化されるもんだと思ってた・・
というかクラス変数と__init__内に書いたself.◯◯のインスタンス変数は
書く場所が違うだけで同じかと思ってました
とりあえず「クラス変数はイジらない変数」で覚えときますありがとうございました
0348デフォルトの名無しさん
垢版 |
2021/04/14(水) 22:02:52.98ID:yznDmZt4
WindowsストアのPythonってどんなもの?
会社でライセンス違反と知らずにanaconda入れてるマシンが多数あり全社一斉に他のpythonに切り替える必要があるんだけど
ストア版はMSが用意するPythonだから安心と考えるのは安直かな?
0349デフォルトの名無しさん
垢版 |
2021/04/14(水) 22:06:10.97ID:ksE3f3HI
>>347
クラス変数はクラスそのものが持つ変数だから<クラス名>.<変数名>でアクセスするのよね
いつも使ってる<インスタンス名>.<変数名>でアクセスする方がインスタンス変数という
0350デフォルトの名無しさん
垢版 |
2021/04/14(水) 22:21:10.41ID:J0goiD5o
>>348
安直なのはanacondaも同じなので
ライセンス違反を回避するため
anacondaからmsにしましたでいいじゃない
0352デフォルトの名無しさん
垢版 |
2021/04/14(水) 22:30:43.72ID:8SA6aKsd
anaconda駄目なんか
ググったら社長がブログで小規模商用なら全然OK書いてるけど
0353デフォルトの名無しさん
垢版 |
2021/04/14(水) 23:17:12.18ID:S5Re0uMO
>>348
公式のPythonすごいですよ
0355デフォルトの名無しさん
垢版 |
2021/04/15(木) 13:38:30.08ID:oM6Je7sX
ストア版はコンパイル必要なのpipする時とか罠あったはずだから公式にしとけ
0356デフォルトの名無しさん
垢版 |
2021/04/15(木) 14:25:54.59ID:S5s4hWnU
anaconda
社員数200人以下のところはfreeの使ってもOK

businesses with less than 200 employees is allowed
0357デフォルトの名無しさん
垢版 |
2021/04/15(木) 14:58:20.65ID:Ajqhz/yy
ストア版はやめとけ
anacondaは普通に使えてる
0359デフォルトの名無しさん
垢版 |
2021/04/15(木) 15:48:03.15ID:S5s4hWnU
入る気がする
term of serviceに
「同一命令系統に服するemployeesが200人未満の組織」とも書かれてるから
0360デフォルトの名無しさん
垢版 |
2021/04/15(木) 15:48:28.03ID:f8nFgQ6z
>>358
社員って俗称なのでケースバイケースだけど通常はバイト等は含まないことが多い
法的には従業員数でこれにはバイトやパートも含まれる
0363デフォルトの名無しさん
垢版 |
2021/04/15(木) 19:55:48.99ID:GOi47ZCr
>>362
超えてる期間は使っちゃダメとかかな?w
まあそういう懸念があるならライセンサーに事前に確認すべきだろうね
0366デフォルトの名無しさん
垢版 |
2021/04/16(金) 00:38:53.74ID:pvt/ms85
tkinterで動的に複数のボタンを生成して
1つクリックしたら専用のスタイルを適用
他のを全部未クリックのスタイルに
ってやりたいんだけど、ウィジェット生成時に名前をつけてリストに格納しといて
ループ回しながら処理 みたいなことするしかないですか?
0367デフォルトの名無しさん
垢版 |
2021/04/16(金) 01:39:51.97ID:LtaeTzrP
ストア版が駄目ってubuntuも同様?
最近MSはOSSに協力的だしいずれWinとLinuxがシームレスに繋がる素敵な時代が到来するのかと夢想してたけど
0370デフォルトの名無しさん
垢版 |
2021/04/16(金) 11:35:05.67ID:32E1xYIW
選択肢の中に公式で配布してるPythonが入らない理由はなぜですか?どうしてanacondaとストア版の二択?
0373デフォルトの名無しさん
垢版 |
2021/04/16(金) 23:58:42.78ID:aQEfOnAX
javaでseleniumを使っていましたがpythonに移行しようとしたら
javaでは普通だった

Wait<WebDriver> wait = new WebDriverWait(driver, 20);



wait = WebDriverWait(driver, 20);

として各関数で使っていたら「Shadows name 'wait' from outer scope」と怒られました
理由は理解できましたが各関数毎に異なる秒数で頻繁に使用したいので何かいい方法は
ありませんでしょうか、ステートメント毎に一々

WebDriverWait(driver, 20).until(...)

なんてやっていたくありませんし、変数名を関数毎にfnx_waitなんてのもスマートな気がしないのですが・・・
0375スクイズ
垢版 |
2021/04/17(土) 04:11:53.83ID:USl8OVEh
QMA的なクイズゲームを作りたくて今日からpythonを勉強し始めました
プログラムは初心者なので、わからないことがあったら手取り足取り教えてくれると嬉しいです!
0377デフォルトの名無しさん
垢版 |
2021/04/17(土) 12:13:20.22ID:WDJX7LIo
>>375
残念ながらPythonはゲームには向かない
初心者の第一歩としては悪くはないが、プログラミングの基礎の基礎だけ学んだら描画とかに深入りする前にUnityとかに移ったほうがいい
0381デフォルトの名無しさん
垢版 |
2021/04/17(土) 21:07:03.39ID:iAFP7ihp
pygameもpysdlも死んでる
唯一renpyがギリギリセーフ
0382デフォルトの名無しさん
垢版 |
2021/04/17(土) 21:26:43.05ID:0tYqrexD
if
elif
elif
else
とやるとき、ifのどれかに当てはまるなら真 を実現したい。elifとelseの間が欲しいというか
やっぱり式をorで繋ぐとかフラグ立てるとかですか?
なにかいい方法はないでしょうか
0383デフォルトの名無しさん
垢版 |
2021/04/17(土) 21:28:34.30ID:0tYqrexD
if節で一回、ifどれかで一回
2回真になるようにしたい
0385デフォルトの名無しさん
垢版 |
2021/04/17(土) 22:28:44.96ID:WCDDnWyK
>>382-383
>ifのどれかに当てはまるなら真 を実現したい。

>if節で一回、ifどれかで一回
>2回真になるようにしたい
は同時に成立するものなのか?
0386デフォルトの名無しさん
垢版 |
2021/04/17(土) 22:43:30.79ID:s7v5Gq+H
>>378
UnityはC#だな (ビルドするとC++になったりはするが)
Unityは純粋なC#と比べるとちょっと違和感あるかもしれんが、公式のサンプルたくさんあるからまずはそこからやるといいさ
0387デフォルトの名無しさん
垢版 |
2021/04/17(土) 23:02:56.25ID:77qs+FV5
>>385
x=1

if x==1
elif x== 2
if x==1 or x==2 ここが際限なく増えていく
else
0388デフォルトの名無しさん
垢版 |
2021/04/17(土) 23:21:28.32ID:ZK8Jz6D4
if x in (1,2,...):
0390デフォルトの名無しさん
垢版 |
2021/04/17(土) 23:49:49.78ID:XRREvbgB
cond(x,cand)を2入力、真理値出力の関数として
if any(cond(x, cand) for cand in cands)
みたいにすれば出来そう
0392デフォルトの名無しさん
垢版 |
2021/04/19(月) 12:14:38.41ID:OCDt9d2T
インスタンス変数ってすべてデコレータなどのpropertyでゲッターにしといた方がいいのでしょうか?
セッターもゲッターも作るとなるとそれ結局はインスタンス変数直接いじるのと変わりないのでは?と思ってしまうのですが。。
0393デフォルトの名無しさん
垢版 |
2021/04/19(月) 12:22:19.31
>>382
a=4
if a==1:
_f=lambda : 'if'
elif a==2:
_f=lambda: 'elif1'
elif a==3:
_f=lambda: 'elif2'
else:
_f=lambda: 'else'

r = f()
print(r)
0395デフォルトの名無しさん
垢版 |
2021/04/19(月) 16:55:55.60ID:yNbAi4BV
>>393
そんな話はしてない
0397デフォルトの名無しさん
垢版 |
2021/04/20(火) 07:29:55.55ID:j2wgvj4g
tabula-pyを使った。
pyinstallerでのexe化の難易度高すぎて泣いた。
こういうの自力で解決できる奴すげーな。
0400デフォルトの名無しさん
垢版 |
2021/04/20(火) 19:19:47.13ID:z53EQ1rJ
PyInstallerを簡単にするwrapperがあった気がする。
0403デフォルトの名無しさん
垢版 |
2021/04/21(水) 15:25:20.73ID:ZcIZV+lf
pythonに限った話ではないかもですが、
定期的にデータを取得して最大値を更新していくような処理をする時、

初期値として
max = None
としておくと、

if max is None or max < new_value:
____max = new_value

みたいに、Noneかどうかの比較というのが必要になりますが、たった初回のNoneのために毎回比較するというのは処理(とくに処理時間等)として無駄でしょうか?

例えば初期値を、ありえないぐらい小さい値にしておいて、どんなデータが来ても必ず更新されるようにしておく、というやり方もあるかと思いますが、Noneのように「未反映」という状態を示したいです。
上記に限らず初期値をNoneにするといたる所でis Noneの判定が出てくるのでどうも無駄な比較に思えてならないのです。
気にするレベルではないならそう言っていただけると安心です。
0406デフォルトの名無しさん
垢版 |
2021/04/21(水) 15:50:40.25ID:rPf7kV48
初回だけはpred.としてNoneと比較する関数をyieldする
次回からは値を比較する関数をpred.としてyeildする
0410デフォルトの名無しさん
垢版 |
2021/04/21(水) 17:28:45.33ID:ZcIZV+lf
inf無限大なんてものがあるなんて目からウロコでした!
これなら演算も比較も、format表示もエラーにならないので使えそうです。
yieldについても、なるほどそういう使い方があるんですね。
ありがとうございます。

>>407
速度については今度確認してみたいと思います。
0411デフォルトの名無しさん
垢版 |
2021/04/22(木) 15:08:18.73ID:RM6sGe2J
クラス内のメンバ変数って
やっぱり一番最初に全部宣言しとくべきですか?
色んな関数内で好き好きに宣言するのは良くないこと?
0412デフォルトの名無しさん
垢版 |
2021/04/22(木) 15:11:25.76ID:FRH+m68J
Pythonはどこで宣言してもゆるしてくれるが
人間的には先頭にかためておけよ って思われる
0413デフォルトの名無しさん
垢版 |
2021/04/22(木) 15:43:11.18ID:aclQQfDP
Javaの作法を敷衍させると先頭に固めるのが良いとの伝承がある
0414デフォルトの名無しさん
垢版 |
2021/04/22(木) 16:36:07.85ID:RM6sGe2J
あーやっぱりそうですよね
ありがとうございます
0415デフォルトの名無しさん
垢版 |
2021/04/22(木) 18:20:22.69ID:aGoOGFqx
チョンにはムリ
0416デフォルトの名無しさん
垢版 |
2021/04/22(木) 18:55:37.92ID:1EPV8o9V
pandasのdescribe()のような集計結果から(元データがなく、集計結果の数値のみが与えられた状況です)、これを用いてpythonで箱ひげ図を描く方法をご存知でしたら教えてください。matplotlibやseabornのboxplotは元データが必要のようで、行き詰っています。
0417デフォルトの名無しさん
垢版 |
2021/04/22(木) 19:08:28.16ID:FRH+m68J
>>416
ひげの長さのもとがないようなデータにあとからヒゲはやしても不自然なだけくね?
分析ずみのその値とやらだけ注釈枠作ってかいとけ
0418416
垢版 |
2021/04/22(木) 22:11:19.58ID:1EPV8o9V
>>417
ありがとうございます。結局エクセルの積み上げ棒を加工して描く方
法で乗り切ることにしました。
0419デフォルトの名無しさん
垢版 |
2021/04/22(木) 23:41:18.57ID:1DYnxoLB
大学の授業課題で使い方もろくに理解してないのにjupyter notebookを使って課題を提出しろとのお達しが出た
サンプルコードから見様見真似でいろいろやってみたけどエラーは出るし調べてもよく分からんし詰んだ

ちなみに「リスト同士の除算ができません」みたいなエラーメッセージが表示された。
0420デフォルトの名無しさん
垢版 |
2021/04/22(木) 23:48:13.63ID:1DYnxoLB
>>419
以下サンプルコード

y_2 = 0.04
y_1 = 0.4
x_2 = 0.0
m = 1
lgr = 2.2
# Calculation
#
x_1_ast = y_1 / m # x*_1
ys = np.linspace(y_2, y_1, 7) # 区間 [y_2, y_1] を 6 (=7-1) 分割
print(ys) # 分割点を表示
xs = y_to_x(ys, y_2, x_2, lgr) # ys の各点に対応する xs を計算

以上サンプルコード
y_2, y_1, mが他の値だった場合にどんなグラフになるかというのを一つの図で表示するのが課題なんだけど

y_2 = np.array([0.04, 0.02, 0.02)]
m = np.array([0.04, 0.02, 0.02)]
と変更すると
x_1_ast = y_1 / m
の部分で「リスト同士の除算は〜」みたいなエラーメッセージで弾かれた。
0421デフォルトの名無しさん
垢版 |
2021/04/23(金) 00:06:55.92ID:nXIvCLH2
書いてあるとおりnp.array同士では除算が定義されていないのでできないのだが
「どうなって欲しいか」とか「どういう値を求めたいか」とか
そういうことを教えてくれないと解決策は示せない
0422デフォルトの名無しさん
垢版 |
2021/04/23(金) 00:24:12.09ID:Ds5Mqwcd
最終的には3つの各々の条件下での折れ線グラフを描きたい。
そのために必要なのがy_1, y_2, x_2, x_1_astの各条件での各々の数値なんだけど、
x_1_astは求めようとしてもエラーしか表示されないから詰んでる
0424デフォルトの名無しさん
垢版 |
2021/04/23(金) 00:54:37.81ID:WdOS9cbk
みたいなエラーメッセージってなんやねん
そんな適当な情報で分かる訳ないやん
0426デフォルトの名無しさん
垢版 |
2021/04/23(金) 03:03:36.79ID:edw1EohB
>>420
自分で書いたコードを>>1に書いてあるサイトに張って
エラーメッセージをちゃんと全文書け

少なくともサンプルコードと書かれてる変更だけ加えてもエラーでないし
numpyはリスト同士の除算もできるし、実際のコード見ないとエスパーじゃない限り分からん
0428デフォルトの名無しさん
垢版 |
2021/04/23(金) 10:32:16.79ID:6lQGggig
>>424
本当に申し訳ないが、pythonは齧った程度しか触ったことがなくて、エラーの内容も調べた限りではそんな感じのことを言っていた。としか言いようがなかった
0429デフォルトの名無しさん
垢版 |
2021/04/23(金) 10:47:36.13ID:6lQGggig
>>426
https://techiedelight.com/compiler/?PrKN
↑ソースコード全部(多分合ってるはず)

以下エラーメッセージ
ValueError Traceback (most recent call last)
<ipython-input-22-a6ecd68a1745> in <module>()
44 ys = np.linspace(y_2, y_1, 7) # 区間 [y_2, y_1] を 6 (=7-1) 分割
45 print(ys) # 分割点を表示
---> 46 xs = y_to_x(ys, y_2, x_2, lgr) # ys の各点に対応する xs を計算
47 # ==================================================================
48 # 作図

<ipython-input-22-a6ecd68a1745> in y_to_x(ys, y_2, x_2, lgr)
23 yy_2 = y_to_yy(y_2) # Y_2
24 xx_2 = y_to_yy(x_2) # X_2
---> 25 xxs = (yys - yy_2) / lgr + xx_2 # Xs=(Ys-Y_2) / LGR + X_2
26 xs = xx_to_x(xxs) # xs = xx_to_x(Xs)
27 return xs

ValueError: operands could not be broadcast together with shapes (7,) (6,)

要はlgrの値が0.5から増えていくとグラフはこのように移動していきます、ってのを表示させればいいんだけど、配列っぽくしてみたら詰んだ
どうせ課題の提出期限も切れたしこれを機にゆっくり勉強してみます。
0431デフォルトの名無しさん
垢版 |
2021/04/23(金) 11:43:43.46ID:edw1EohB
>>429
>lgr = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0] # 液ガス比 L'_M / G"_M
lgrnの要素数が6つで
>ys = np.linspace(y_2, y_1, 7) # 区間 [y_2, y_1] を 6 (=7-1) 分割
ysの要素数は7つで返ってくるから、要素数が違ってる関係でエラーになる

で、解決方法としては要素数を合わせればいいから
lgrに3.5を追加する、またはlinspaceの引数を6に変更すれば後は動く

以下はlgrに3.5を追加した場合のグラフ
https://i.imgur.com/gOS7wdU.png
0433デフォルトの名無しさん
垢版 |
2021/04/23(金) 21:14:39.28ID:Sg24bGS7
大卒らしいのに小卒みたいな奴っておるやん
そういう人種だと思っていただきたい
0434デフォルトの名無しさん
垢版 |
2021/04/23(金) 23:28:58.65ID:dmYMi7DT
どうでもいいけどpython全然わからんて人向けの課題じゃない気が
0436デフォルトの名無しさん
垢版 |
2021/04/24(土) 11:34:27.43ID:V3n+Hqik
Tkinterでウィンドウの移動をマウスのドラッグで実施したいのですが、
タイトルバーではなく、表示部分?をドラッグする方法ってありませんか?
画像をサブウィンドウで表示させているのですが、タイトルを表示せず画像だけのサブウィンドウにしたくてお願いいたします
0437デフォルトの名無しさん
垢版 |
2021/04/24(土) 21:25:16.04ID:7lpOLCJL
ファイルパスを受け取って画像かどうかを返す、シンプルな関数を作りたい
偽装(mimetypes)とか誤認(imghdr)とか避けたい

import pathlib
import filetype
path = pathlib.Path(xxx)
if path.is_file():
__is_img(path)
#
def is_img(path):
__answer = False
__obj = filetype.guess(str(path))
__if obj is not None:
____if obj.mime[:6] == "image/":
______answer = True
__returen answer

いまこんな感じなんですが、これで大丈夫だと思いますか?
一応手元で偽装ファイルとか色々投げて、問題ないっぽい雰囲気ではあるのですが…
また、もっと簡単な方法があれば教えてください
0438デフォルトの名無しさん
垢版 |
2021/04/24(土) 21:49:17.04ID:PnhVzGZB
python2のvirtualenv入れようと思って
python -m pip install virtualenv
ってやったら、複数の関連パッケージの処理をやったあとで
エラーで終了したんですが、こういう場合、そこまでに
動いた処理は元に戻る?それとも中途半端に放置される?
このあとで別の方法でパッケージインストールしたら、
最初に失敗したときの処理は中途半端な状態で残ることに
なるんじゃないかと思って気になってます。

今までこういう場合はもうよくわからないのでOSごと
再インストールしてたんですが、どなたか知ってる方が
いたら教えてください
0440デフォルトの名無しさん
垢版 |
2021/04/25(日) 00:57:11.71ID:VZsvyaQ9
>>437
filetypeはjpg/png/gifの場合最初の2〜3バイトしか読まないので
https://github.com/h2non/filetype.py/blob/53bdccee0371fcc9463e2edd68d2cedb589d3a76/filetype/types/image.py#L23
その先頭2〜3バイトが偽装されていれば誤認する
そういうのが嫌なら439のように画像としてロードできるかまで確認すべきだ

ただし、437が想定するファイルを「偽装」してくるアタッカーがどういう人物像なのか不明なので
一概にどちらにすべきとは言えない
偽装ファイルでexploitを突こうと画策されているのでもなければfiletypeで十分だろう
0441デフォルトの名無しさん
垢版 |
2021/04/25(日) 01:16:14.07ID:FsB+Ww+M
画像として読み込める偽装データもないっけ
保持するつもりなら万全を期して読み込んで保存し直すくらいまでしたほうがいいかも
0443デフォルトの名無しさん
垢版 |
2021/04/25(日) 11:58:20.51ID:1lzxcbvy
画像ファイルだが読まれない部分に割れ物の断片を入れられてる…みたいな偽装と
ヘッダは画像ファイルだが中身は画像ではないという偽装は
ちょっと別の話かと
0445デフォルトの名無しさん
垢版 |
2021/04/25(日) 13:44:38.33ID:J5zsPVXp
pandasでデータフレームを作成するときに

df = pd.DataFrame({'C': namae, 'A': tokuten, 'B': tokuten2})
のようにして実行すると、A, B, C の順に列が並んでしまいます。
C, A, B の順番に列を並ばせてつくりたいのですが、どうすればいいですか?
0446デフォルトの名無しさん
垢版 |
2021/04/25(日) 14:54:36.65ID:wFtgTR9d
Pythonのバージョンによっては、dictは順序保証しないからじゃないの?
横着せずにシーケンス(list/tuple)を使えばよい。
0447デフォルトの名無しさん
垢版 |
2021/04/25(日) 15:05:09.87ID:w/gigbrd
>>442
バイナリ連結ですよね
これって判定と連結部の削除ってできるんですか?
0449デフォルトの名無しさん
垢版 |
2021/04/25(日) 15:43:50.39ID:stjG7043
判定・削除というからには、鍵を持たない第三者が偽装かどうかを見抜けるかという話でしょ
0450デフォルトの名無しさん
垢版 |
2021/04/25(日) 15:52:52.45ID:FsB+Ww+M
いちいち妙な判定しようとせずに
画像としてメモリに展開して
再保存すりゃいいだけじゃね
ついでに圧縮率も変えられるし
0451デフォルトの名無しさん
垢版 |
2021/04/25(日) 15:53:07.93ID:piDGyGmF
コンテナ利用するときにvirtualenvs併用するメリットってなんでしょう?
コンテナ内部で更にvirtualenvs使うのは二度手間なように感じています。
0453デフォルトの名無しさん
垢版 |
2021/04/25(日) 16:25:49.08ID:yZn73yTF
>>451
デプロイ先でvenv使ってるなら、それに近い環境で動作を検証できる
何かvenv下だと挙動が変わるモジュールとかあるし
0457デフォルトの名無しさん
垢版 |
2021/04/25(日) 19:16:36.74ID:sodTi8GH
>>445
一旦作ったやつを並び替える、でもいいのなら、
df2 = df[['C', 'A', 'B']]
でdf2はC A Bの順にできるよ。
0458デフォルトの名無しさん
垢版 |
2021/04/25(日) 22:09:06.87ID:piDGyGmF
>>453
なるほど、もともとvenv使っててその後コンテナ利用に切り替えたパターンを想定とかですかね
今勉強というか適当にdocker調べつつ触ってるんですが、venv使ってるようなのもあってこれ何のためって不思議でした

>>455
ありがとうございます
ネットの情報多くてありがたいんですが玉石混淆だったり古かったりで逆に混乱しますな
0459デフォルトの名無しさん
垢版 |
2021/04/28(水) 09:48:30.09ID:IxwcvE22
どうしてPython使ってる人ってswitch-caseなくても我慢できるんですか?
それしか知らないから不満を持ちようがないとか?
0460デフォルトの名無しさん
垢版 |
2021/04/28(水) 09:58:49.52ID:Lpz9/b/L
我慢できるとかじゃなく、ないものはしょうがないだろ。
それがどうしても嫌ならpythonを使わなければいい。
なんらかの理由でpythonを使う(使わなければいけない)のなら、
他の人も同様でしょ。
0462デフォルトの名無しさん
垢版 |
2021/04/28(水) 10:57:42.68ID:C/XDgQGy
パターンマッチングも結局、式ではなく文なんだな。
0463デフォルトの名無しさん
垢版 |
2021/04/28(水) 11:11:25.75ID:3EuQZ3Ew
pythonみたいな構造体がきっちりしてるわけでもない言語なら
そこまでパターンマッチ必要にはならんだろ。
構造体からデータ取り出すのがそこまで面倒な言語でもない。
0464デフォルトの名無しさん
垢版 |
2021/04/28(水) 11:38:24.28ID:ewi3Y8j6
>>461
switch(a){ ... } みたいなやつなら良いけど switch(a + 1){ … } とかだと一時変数を作るか各条件式にa + 1とか書くはめになるからねぇ
switch文があるに越したことはないと思う
0465デフォルトの名無しさん
垢版 |
2021/04/28(水) 12:33:15.42ID:Je4EzdV5
構造体に使うイメージはなかったな
昨今のtypingの流儀に乗っかったんだと思う
0467デフォルトの名無しさん
垢版 |
2021/04/28(水) 17:02:16.33ID:EhiFgjxN
文増えてくと混沌としてくるから今のPythonの流れはちょっとどうなのかなと思うところはある
0469デフォルトの名無しさん
垢版 |
2021/04/28(水) 21:15:45.49ID:kjLpBedQ
>>459
それ一つ無い程度で使う使わないの瀬戸際にはならない
そもそもswitch-caseで分岐する必要が出てきた時点でロジック設計を失敗している事が多い
ポリモーフィズムを活用するべき
0470デフォルトの名無しさん
垢版 |
2021/04/28(水) 21:23:17.33ID:jo1UoyuU
switch-caseって、条件が等差数列となるときはjmp先を演算できるよねとできた
実にCらしい構文で、そういうことをしない言語にとっては実装が面倒なだけの構文かと
0472デフォルトの名無しさん
垢版 |
2021/04/28(水) 21:46:19.33ID:HN4XQcog
>>459
我慢できなくなったから機能追加するんだよ

いままで散々switchなんて不要って言って来たから
取り繕うための言い訳を並べ立てながらだけどね
0476デフォルトの名無しさん
垢版 |
2021/04/29(木) 17:24:45.07ID:hj4NO6UY
>>459
Pythonユーザーには2タイプ居る
・それしか知らない奴
・色々な言語使ってきて、なんらかの良さを感じるからPython使ってる奴
どんな言語にも多少の欠点はあるもんさ
0478デフォルトの名無しさん
垢版 |
2021/04/29(木) 20:52:09.39ID:naaqk/s1
ライブラリ使ってるとたまに
hoge(option=DEFAULT_TYPE)
みたいな感じでオプションを設定できるのがあったと思うのですが
このDEFAULT_TYPEの部分は変数を定義した覚えもないのに使えてた気がします
どういう仕組みなのでしょうか
0480デフォルトの名無しさん
垢版 |
2021/04/30(金) 09:28:09.56ID:MB7wv8yI
オブジェクト指向は全然分からないからクラスの定義は出来ない
でも関数だけで何とか出来ちゃうから有難いわ
0481デフォルトの名無しさん
垢版 |
2021/04/30(金) 09:55:14.88ID:rWXbtYRM
>>479
なるほど
どのライブラリだったか忘れて確かめられませんが
読み込み先でDEFAULT_TYPEをprintすれば何かわかりそうですね

#hoge.py
DEFAULT_TYPE='default'
class Hoge:
def fuga(self,*,option=None):
print('Option: %s'%option)

#
from hoge import Hoge,DEFAULT_TYPE
h=Hoge()
h.fuga(option=DEFAULT_TYPE)

上のようにimportでDEFAULT_TYPEしていたかどうか
でなければhoge.DEFAULT_TYPEという指定だったか記憶が曖昧ですが
こんな感じでできました
import DEFAULT_TYPEしなくてもDEFAULT_TYPEだけでいけた気がするのですが
記憶違いだったかもしれません
0482デフォルトの名無しさん
垢版 |
2021/04/30(金) 15:52:58.65ID:4ngw0sc5
tkinterのdestroy()って親を殺せば子は見逃しても問題ない?
全部明示して殺す必要ありますか?
ガベージコレクションが頑張るから大丈夫なのかな
0485デフォルトの名無しさん
垢版 |
2021/04/30(金) 22:00:05.11ID:9cqxfo3+
def destroy(self):

for c in list(self.children.values()): c.destroy()

親は子供を殺すが孫は殺さない
子供が孫を殺す
0488デフォルトの名無しさん
垢版 |
2021/05/01(土) 06:16:19.35ID:Ca2DZO3D
stack overflowの書き込みで、親が死ねば孤独になった子供はGCがやがて消す
消えるまでメモリには残る って書いてあった気がする
0489デフォルトの名無しさん
垢版 |
2021/05/01(土) 07:41:58.14ID:PUOqmJZW
>>483
>488だで

うちはtkinterじゃなくてWXつかってるが、>488だで
自分で子孫まるっとあぼんする関数つくって積んでる
0490デフォルトの名無しさん
垢版 |
2021/05/01(土) 08:15:27.05ID:gyFQOP1a
>>477
そのswitchの代わりという使い方だと、PythonのEnumはいまいちですわ。
JavaのEnumがまさにそういう使い方ができるようになっている(Strategy/Stateパターン)。
0493デフォルトの名無しさん
垢版 |
2021/05/01(土) 13:22:27.14ID:qiYKVwJr
>>492
ありがとうございました。
*.pyでソースを指定したら全部.pycが出来上がり、ノーエラーでした。
試しにwhileの:を削除してみたらSyntaxErrorの指摘が表示されました。
これで安心です。
0494デフォルトの名無しさん
垢版 |
2021/05/01(土) 13:29:51.59ID:psDEcvhX
flake8とか使えば良くない…?
0496デフォルトの名無しさん
垢版 |
2021/05/01(土) 13:52:21.43ID:jntNu2g9
linterだと、実際動くかどうかまではわからないことが多いと思う

いくつかあるlinterの中では俺もflake8を使ってるわ
0497デフォルトの名無しさん
垢版 |
2021/05/01(土) 17:57:55.31ID:qiYKVwJr
PyQtで自動生成されるuiソースもflake8で結構色々でますね。
自分のソースは通信系なのでtry/except入れているのでsyntaxエラーさえも例外で通信リカバリーみたいになるので悩んでました。
0498デフォルトの名無しさん
垢版 |
2021/05/01(土) 21:57:09.95ID:qfW/WcRP
>>496
Syntax Errorはちゃんとでるんでないかい?
一方で、こういう逆のケースはある。
globals()['tau'] = 6.283185
print(tau) # linterやIDEではエラーとでるけど、実際にはちゃんと動く
0499デフォルトの名無しさん
垢版 |
2021/05/02(日) 15:17:35.67ID:v2ZnBcL1
a = ['a','b','c']
if not a[3]:
_print()

javascriptみたいにundefinedになってくれればと思ったのですが
pythonはIndexErrorが出るみたいですね
これを場合分けしようと思うと、try使うしかないですよね?
list index out of rangeの場合はelseそれ以外は値を取得
みたいにifだけ書きたいと思ったんですけどね
0501デフォルトの名無しさん
垢版 |
2021/05/02(日) 15:20:49.97ID:zAlV+S16
dictならそういうのあるけどlistはないな
len(list)で長さ確認してから取得するか、try-catchするしか無い
0502デフォルトの名無しさん
垢版 |
2021/05/02(日) 20:42:49.07ID:x2TfprvW
if not a[3:]:
で ok
0503デフォルトの名無しさん
垢版 |
2021/05/02(日) 23:59:52.42ID:Qiy/T2Qn
listを拡張して独自クラスを定義するのはどうか

class DefaultList(list):
__def __getitem__(self,i):
____if i<len(self):
______return super().__getitem__(i)
____else:
______return None

a=DefaultList([‘a’,’b’,’c’])
if not a[3]:
0505デフォルトの名無しさん
垢版 |
2021/05/03(月) 08:29:57.06ID:oY4C2yCE
いきなりStopIterationで止まるだけだから、長さ関係ないだろ。
普通にlenでいい。
JavaScriptやPHPのリスト"もどき"と比べるのもナンセンス。
0506デフォルトの名無しさん
垢版 |
2021/05/03(月) 09:20:58.90ID:TDKc9ux4
環境はwindows10 64bitです

親フォルダ
:子フォルダA:画像1.画像2
:子フォルダB:画像1..

という構造があって,pathlibで生成した子フォルダのpathをiterdir()で回して
画像pathをPILのImage.openで読もうとしてるんですが
親か子のフォルダ名がめっちゃ長くなると
FileNotFoundError: [Errno 2] No such file or directoryになるやつが出たり出なかったりします
フォルダ名を短くして,画像名を最大まで長くした場合はエラーが出ません
何が原因で,どうすれば読めるようにできますか?
できればエラーキャッチしてその場で読めるようにしたい (フォルダ名のリネームはとりあえず置いておきたい)
0507デフォルトの名無しさん
垢版 |
2021/05/03(月) 09:25:40.83ID:YjR4A9Iz
>>506
フルパスが長すぎてpython内であふれてしまうのが原因
フルパスではなくショートパスを生成して、それでやりとりするようにすればとりま回避できるが
あまりに長いフルパスは非推奨なのでとりま置いておいたとしてもいつかは直せ
0509デフォルトの名無しさん
垢版 |
2021/05/03(月) 09:59:34.50ID:YBya6Fwz
フォルダ名はわかるけど
ファイル名長いのが大丈夫なのはなんでだ?
0510デフォルトの名無しさん
垢版 |
2021/05/03(月) 12:48:07.42ID:TDKc9ux4
>>507
なるほど
今回はpyinstaller使いたくて、そうするとwin32apiとの相性が悪いっつーかショートパスが危険球っぽいんで
もうロングパスは受け付けないことにします。ありがとうございました
0511デフォルトの名無しさん
垢版 |
2021/05/03(月) 12:52:29.86ID:YjR4A9Iz
>>509
それには一部対応してるんでねーの

>>510
pyInstallerはパスの途中に半角スペースや全角文字あってもうまくいかないことがあるぞ
0512デフォルトの名無しさん
垢版 |
2021/05/03(月) 18:53:48.47ID:YjR4A9Iz
>>510追記
ところで、相対パス/絶対パス/フルパス/短縮(ショート)パスの違いはわかってるんだよな???
0513デフォルトの名無しさん
垢版 |
2021/05/03(月) 23:59:09.62ID:9/VcaNVK
その情報要る?
たぶん抜本的には裏で構造体を丸ごと短い名前でコピーして、それを処理して返すようにするとかいう話じゃね
0514デフォルトの名無しさん
垢版 |
2021/05/04(火) 00:11:11.66ID:MueeR1Ae
まあショートネームは避けたい
そもそも超ロングパスがあり得る環境だとショートパス化できない文字列がぶち込まれそうだし
長いのはエラー吐くか
コピー→リネーム→処理→置き換え たい
0515デフォルトの名無しさん
垢版 |
2021/05/04(火) 00:59:43.45ID:Zkcb+r3V
Windowsの場合はPythonのインストールの最後に260文字制限を解除するか
聞かれたような気がする
0516デフォルトの名無しさん
垢版 |
2021/05/04(火) 11:15:39.91ID:MTtoo9am
win上のpythonて32767文字扱えないのか
0517デフォルトの名無しさん
垢版 |
2021/05/04(火) 12:20:24.62ID:g/PMv139
windowsのロングパスは
ファイル造ったあとに自分でそのファイルにアクセス出来ないとか
削除も出来ないとかあほなことに巻き込まれる

>>516
stringio
0518デフォルトの名無しさん
垢版 |
2021/05/04(火) 14:21:30.25ID:QySiaJ1m
以下のようなデータセットのリストがあり、例えば各nameごとに、valueが最大となるものだけ抽出したい場合に内包表記や関数などで簡単に書ける方法はありますか?
[
{'name': 'a', 'value': 100},
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 50},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]

↓こういうリストとして抽出したいです。
[
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]
valueはタイムスタンプ等で最新のものだけ抽出する、といった使い方をしたいです。
0519デフォルトの名無しさん
垢版 |
2021/05/04(火) 14:46:49.13ID:7YaPXlVC
聞く限りだとfor name, value in data:とかで回して
out[name] = max(out[name], value)
みたいな感じで処理したら良さそうだけど
0521デフォルトの名無しさん
垢版 |
2021/05/04(火) 15:16:48.68ID:QySiaJ1m
>>519
ありがとうございます。
後出しで申し訳ないのですが、各データはvalue以外にも複数の属性値をもった辞書データになってます。
nameは抽出後は当然ユニークになりますが、抽出後もリストのままで並びも元の並びはキープしておきたいです。

SQLで言う、GROUP BYしてMAX関数適用するような感じの抽出方法はないかなと思いまして。
0522デフォルトの名無しさん
垢版 |
2021/05/04(火) 15:20:08.13ID:QySiaJ1m
>>520
あ、まさにそのイメージでした。ありがとうございます。

やはりdataFrame使わないと簡単には書けないのですね?言い換えるとdf使った方がはるかに簡単ということですかね。
0523デフォルトの名無しさん
垢版 |
2021/05/04(火) 15:35:54.90ID:LRawq6Xg
一応pythonの組み込みライブラリにもgroupbyってあったよね
pandasでやるのが一番手っ取り早いと思うけど
0524デフォルトの名無しさん
垢版 |
2021/05/04(火) 16:05:52.03ID:Z3Fw33AT
Ruby なら、

input = [ {'name': 'a', 'value': 100}, {'name': 'c', 'value': 150}, {'name': 'a', 'value': 200} ]

result = input.group_by{ |hash| hash[ :name ] }.map do |ary|
ary[ 1 ].max_by{ |hash| hash[ :value ] }
end

p result #=> [{:name=>"a", :value=>200}, {:name=>"c", :value=>150}]
0525デフォルトの名無しさん
垢版 |
2021/05/04(火) 16:52:55.89ID:sM9M0m2z
>>524
グロ
0527デフォルトの名無しさん
垢版 |
2021/05/04(火) 17:23:42.38ID:5sA+/wAg
>>518
愚直に内包表記
[
{‘name’:name, ‘value’:max(record[‘value’] for record in data if record[‘name’]==name)}
for name in set(r[‘name’] for r in data)
]

ただしnameの並びは崩れる
0528デフォルトの名無しさん
垢版 |
2021/05/04(火) 19:52:15.91ID:ns0mTqm6
pathlib.iterdir()の読み込み順ってどういう仕組みで制御されてるのかな
windowsは昇順001>0001なんだけど、natsortとかos_sortedでも0001>001になるのが
pathlibのジェネレーターはOSソートに追従してる気がする…偶然?
0529デフォルトの名無しさん
垢版 |
2021/05/05(水) 08:36:34.57ID:/UG/+rZL
ちょっと試してみたんだけど

01.txt
1.txt
2.txt
0010.txt
a.a.01.txt
a.a001.txt

explolerの名前の昇順でこう表示されるディレクトリを
同じ並びで出力するソート形式はないような気がする
natsortもos_sortedも効かないw
すごいなwindowsどうなってんだ
0530デフォルトの名無しさん
垢版 |
2021/05/05(水) 08:55:12.40ID:XnkETAr1
[natsorted[数字だけのファイル], sorted[文字あり]]

うーん……
0536デフォルトの名無しさん
垢版 |
2021/05/05(水) 12:30:31.81ID:gzgZcJa9
OSリリースごとに結果が変わる可能性があるので正規化に使用してはいけませんとか注意書きが書あるAPI
0540デフォルトの名無しさん
垢版 |
2021/05/05(水) 16:25:24.24ID:7m6bX2W0
>>534
__le__, __ge__, __ne__がそれぞれ1, -1, 0と比較してるのって間違ってない?
使われなくて影響ないのかもだけど

functoolsのcmp_to_keyを使えば
sorted(paths, key=cmp_to_key(win_cmp))で済むよ

同じAPI使ってるのにソート結果が違うのは
os_sortedのバグだと思うのでissueあげとくといいかも
0541デフォルトの名無しさん
垢版 |
2021/05/05(水) 18:38:45.20ID:sGblmxZ3
from functools import cmp_to_key
import ctyps

def win_sort(obj):
__def win_cmp(s1, s2):
____shlw = ctypes.windll.LoadLibrary("SHLWAPI.dll")
____return shlw.StrCmpLogicalW(str(s1), str(s2))
__return sorted(obj, key=cmp_to_key(win_cmp))

なるほど
0542デフォルトの名無しさん
垢版 |
2021/05/05(水) 19:54:48.41ID:MgJEgPkj
>>534
cmp_to_keyと同じことしてる
それはともかく
key=absとkey=cmp_to_key(とでは
ぜんぜん違う形式
内部的にやってることに馴染むのが難しい
0543デフォルトの名無しさん
垢版 |
2021/05/06(木) 03:36:21.23ID:Za2B/gSh
tkinterでMVCに挑戦してるんですが
例えばapp.verとかicon用base64文字列とかの定数?はどこに書くんでしょうか

アプリケーション(root)固有の情報は全部Cに書いてる人もいれば
非画像データはM、画像関係はVに置いてる人もいて
どう考えたらいいのか教えてください
0544デフォルトの名無しさん
垢版 |
2021/05/06(木) 10:33:21.16ID:84/gBo5v
>>540
母胎osの仕様が変わるんだから手に負えない
0545デフォルトの名無しさん
垢版 |
2021/05/06(木) 10:34:55.21ID:84/gBo5v
>>543
MでもVでもCでもない
リソース領域に描いておいてロード
0546デフォルトの名無しさん
垢版 |
2021/05/06(木) 19:28:22.80ID:yKLn4IC5
tkinterで応答なしを回避するには
別スレッドに処理投げるしかない?

できればthreading使いたくない
0548デフォルトの名無しさん
垢版 |
2021/05/06(木) 20:30:14.34ID:v54vsLS/
import pandas as pd
df = pd.DataFrame([['ia','ib','ic'],['id','ie','if']],columns=['a','b','c'])
if not df==None:
_print(df)

ってやると
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
というエラーが出ましたが
仮にdf=Noneだった場合にdf.all()とかやると今度はNoneはallを持ってません的なエラーがでます
こういうときってどう対応すればよいでしょうか
0550デフォルトの名無しさん
垢版 |
2021/05/06(木) 20:54:15.24ID:yh3xJpCx
>>548
そもそもNone判定したい場合は==じゃなくてisを使う
if df is Not None:
みたいな書き方にする必要がある

で、注意点として
df = pd.DataFrame()
みたいに、空のデータフレームで初期化してる場合はNoneではない(is Noneで判定してもFalseで返ってくる)
空かどうかを判定したい場合はemptyを使う
0553デフォルトの名無しさん
垢版 |
2021/05/06(木) 21:14:18.42ID:v54vsLS/
>>550,551
なるほど isでしたか
さっそく書き換えてみたらうまくいきました
ありがとうございます
0554515
垢版 |
2021/05/06(木) 22:01:24.30ID:DEG1F9Nj
>>506
pythonの初回インストール時に以下の英文が表示されるので
この英文部分をクリック

Disable path length limit
Changes your machine configuration to allow programs,including Python,
to bypass the 260 character”MAX_PATH” limitation.

pythonのアップデートもかねて
今使ってるバージョンの最新版インストーラーを公式からダウンロードして実行し
最後のダイアログに上の英文が表示されたらクリックしてみて
0555デフォルトの名無しさん
垢版 |
2021/05/07(金) 00:28:15.35ID:TdDivYCp
>>554
配布用なのでロングパスは許さんマンにしました…
0556デフォルトの名無しさん
垢版 |
2021/05/07(金) 05:18:06.85ID:yOYKTU3u
if df:
じゃだめなの
0557デフォルトの名無しさん
垢版 |
2021/05/07(金) 05:30:41.77ID:FZBmU73W
一連の作業のなかで
2回同じ相手にループ処理をします
一回は存在確認、もう一回はデータ取得
処理の距離が結構離れてるんだけど、一回目のときにデータ取得もして放置しておくことはできます

こういうとき、きちんと2回に分けた方がいいですか?
一回でガバっとやっていいですか?
0558デフォルトの名無しさん
垢版 |
2021/05/07(金) 10:57:12.07ID:O1URPzeE
>>557
ケースバイケース

何のために2回に分けたいのか、もしくは1回にまとめたいのかという目的を明確にした上で
漠然とした状況をもっと特定する必要がある
0559デフォルトの名無しさん
垢版 |
2021/05/07(金) 11:37:20.61ID:fHTm+yKw
>>546
after() after_cancel() を多用するイメージ
0560デフォルトの名無しさん
垢版 |
2021/05/07(金) 11:39:40.44ID:fHTm+yKw
>>557
2回目までに消えてる可能性が無いと保証されてるならいつでもいい
0561デフォルトの名無しさん
垢版 |
2021/05/07(金) 12:31:30.97ID:MaAf4oEf
現在のバージョンがPython 3.8.7 - Dec. 21, 2020とした場合
同じ3.8系の中から現時点で最新のPython 3.8.10 - May 3, 2021をインストール
3.8系から3.9とか3.10に変えると、pipを使ってインストールしたパッケージが動かないことがある
かもしれないので変えないほうが良いと思う

how to Update Python to the Latest Version
https://www.youtube.com/watch?v=UXSxBx8eG28
0562デフォルトの名無しさん
垢版 |
2021/05/07(金) 20:02:05.37ID:StgLFl94
コールバック関数の説明は、
公式ドキュメントのどこに書いてありますか?
0563デフォルトの名無しさん
垢版 |
2021/05/07(金) 20:42:35.41ID:HcCkNDs0
bindで探せば情報はある
bindの実装をソースで見れば
わかるんじゃ
コールバック関数自体はただの関数が
コールバックで呼ばれてるだけなので
説明とかあるかな
0564デフォルトの名無しさん
垢版 |
2021/05/07(金) 22:32:12.12ID:TdDivYCp
max(0, 10)
で10が返るのはなぜですか?
0565デフォルトの名無しさん
垢版 |
2021/05/07(金) 22:32:58.62ID:TdDivYCp
あ、もうしわけない
これkeyじゃないんですね
早とちりしました…
0566デフォルトの名無しさん
垢版 |
2021/05/08(土) 08:55:22.68ID:DE4arKCM
全体的に人がいないね。
0567デフォルトの名無しさん
垢版 |
2021/05/09(日) 17:43:20.28ID:29Yn0Nuv
ttps://techiedelight.com/compiler/?AUYY

こういう練習問題があるんだが、こういうアルゴリズム?をぱっと思いつくようになるにはどうしたらいいんだろうか
何度も挑戦したからもはや覚えてしまったんだが、似たような問題出されても答えられる気がしないし
ゴールとしては問題形式ではなく自分のプログラミングで出てくる必要があるんだろうし
0568デフォルトの名無しさん
垢版 |
2021/05/09(日) 17:52:07.18ID:E0SRP95C
自分の手でやるとしたらどうするか考える
その手順をフローチャートに書き出す
それを素直にコードに落とす
それをイケてる感じにリファクタリングする

まあ実際そんなのできなくてもモノは作れるし、特にPythonはそういうアルゴリズム書ける人は少ないと思うよ
0569デフォルトの名無しさん
垢版 |
2021/05/09(日) 18:07:38.33ID:E0SRP95C
あとは、問題の細分化だな
これはアルゴリズムの実装に限らずプログラミングにおいて常に有効な考え方だ
例えば、str1の指定した位置iから始まる位置に文字列str2があるかどうかを調べて返す関数 submatch(str1, str2, i) があれば、
この submatch を i を増やしながら str1 全体にわたって適用すれば解けるだろ?
で次はこの submatch をさらに細分化する、それを自分が簡単に実装できる十分簡単な問題になるまで繰り返す
0570デフォルトの名無しさん
垢版 |
2021/05/09(日) 18:08:31.75ID:lcdfGCto
まず条件を満たしているということはどういうことかを考える
判定する方法がわかったら脳死で実装する
どれだけクソなコードが出来上がったかを観察してまともにする
0571デフォルトの名無しさん
垢版 |
2021/05/09(日) 19:04:21.95ID:CGDxHqdD
自分が頭の中でどうやってその問題を解いてるかをコードに落とし込むのが一番単純かもね

問題が簡単じゃないとこの方法は難しいけど
0573567
垢版 |
2021/05/09(日) 19:47:04.83ID:29Yn0Nuv
>>568
フローチャート作るときはどんなアプリ、ウェブサービス使ってるのかな?

細分化すると、細分化されたもの同士をつなぐところでつまづきがちだなあ
0575デフォルトの名無しさん
垢版 |
2021/05/09(日) 20:01:01.07ID:6ong4OY9
>>567
全然関係ないツッコミで恐縮なのだが問題文と実装あってなくね?
問題文の方がおかしそうだけど
0576567
垢版 |
2021/05/09(日) 20:16:54.70ID:29Yn0Nuv
>>575
問題文と実装が正しいかどうかを把握する能力がないので具体的に教えてもらえると助かる
一応、答えとして掲載されているから正しいとは思うが
問題分もコピペしただけ
文字列のメソッドやモジュール(正規表現など)使うなとも書いてあったが

https://utokyo-ipp.github.io/3/3-2.html
while文による繰り返し、の下の方の練習問題
0577デフォルトの名無しさん
垢版 |
2021/05/09(日) 20:35:42.76ID:Fj+EbY4X
>>567
自分が計算機になったと思って具体的な入力から出力を手で求めろ
するべき処理が見えてくる
0578デフォルトの名無しさん
垢版 |
2021/05/09(日) 21:06:48.89ID:6ong4OY9
>>576
や、ほぼ日本語だけの問題
> str2 が str1 を部分文字列として含むかどうか判定する関数
例だとstr1がlocation、str2がcat、これで期待される戻り値が2なんでしょ?
str1がstr2を部分文字列として含むかどうか、あるいは、str2がstr1に部分文字列として含まれるかどうか、が関数の仕様として適切だと思うけど

こっちの頭が狂ってる? なんか不安になってきた
0579デフォルトの名無しさん
垢版 |
2021/05/09(日) 21:20:07.31ID:MVBjVGaC
問題文の日本語が間違ってるね
str1やstr2みたいな悪い命名の見本

これほんとに東大の人間が作ってるんだとしたらヤバいな
0580567
垢版 |
2021/05/09(日) 22:08:42.45ID:29Yn0Nuv
>>578
ああそういうことか
たしかに一部入れ替わってるかもね
>>579
命名するとしたらどんなのがいいの?
参考になるサイトとかあるのかな
0581デフォルトの名無しさん
垢版 |
2021/05/09(日) 22:43:11.51ID:4LY/LzCs
>>580
変数名とかの良い付け方とかは、基本的には誰が見ても分かるってのが大前提だね
(この辺の話は、リーダブルコード、ベタープログラマ、達人プログラマーみたいなコーディング作法本に詳しく書いてある)

自分が付けるならsrc_strとtarget_strって付けちゃうかな……
(自分も勉強中なのでこれ最善かは知らん、もっと一般的に良い名前があるかもしれないけど)
0582デフォルトの名無しさん
垢版 |
2021/05/09(日) 23:17:56.42ID:MVBjVGaC
>>580
簡単なものならtext, patternとか
とにかく意味の違いを名前に反映させる
str1とstr2じゃどっちがどっちか全然わからない
意図を伝えるのが大事

命名で参考にするのはその言語の標準ライブラリと
使い方がわかりやすいようなライブラリ
(str.find(sub, start, end)を参考にすればsimple_match(string, sub_string)とか)
0583デフォルトの名無しさん
垢版 |
2021/05/09(日) 23:29:01.12ID:MVBjVGaC
>>567
算数と同じで問題や解き方を図で捉えるようにすれば理解が捗るし応用も効きやすい

その解答例は2つの配列の単純な総当たりと根本は同じ
文字列(配列)のインデックスをそれぞれ進めたりリセットしながら比較する様子を
図にして脳内アニメーションで再生できれば似たような問題にも対応できる
0586567
垢版 |
2021/05/10(月) 03:25:25.87ID:oDeb4Nzy
模範解答を使わず、自分の実力ならこんな感じに作るだろうなってのを改めて作ってみた
https://techiedelight.com/compiler/?~0jNN

2重ループの中で str1[ i ] と str2[ J ] をくらべりゃいいんだろ
みたいなことをやって不具合を小手先で正した

模範解答の
https://techiedelight.com/compiler/?AUYY

while j < len(str2) and str1[i+j] == str[j]

なんて一生かかっても思いつけない気がする……

あとここの掲示板のせいだと思うんだけど
自宅の回線でこのスレにURL付きの投稿しようとすると、数時間書き込み規制になる
だからずっとスマホで書き込みしてる
0587デフォルトの名無しさん
垢版 |
2021/05/10(月) 04:11:00.85ID:HXPAQUt8
文字単位の処理方法を考える前にこんなのを考えちゃうなぁ
def f(a, b):
____ la, lb = len(a), len(b)
____ for i in range(la - lb + 1):
________ if a[i : i + lb] == b: return i
____ return -1
print(f("hello","el"))
0588デフォルトの名無しさん
垢版 |
2021/05/10(月) 07:25:33.08ID:ZcdY0167
ここにいる人に言うまでもないとは思うけれど、KMP法など使うと時間計算量をO(S1*S2)ではなくO(S1+S2)で解くことができます
0590デフォルトの名無しさん
垢版 |
2021/05/10(月) 11:37:45.73ID:giJ6lOgz
>>586
模範解答を使わないやつを少し圧縮するとこういう感じになる

def simple_match(str1, str2):
____for i in range(len(str1) - len(str2) + 1):
________a = 0
________for j in range(len(str2)):
____________if str1[i+j] == str2[j]:
________________a += 1
________________if a == len(str2):
____________________return i
____return -1

5行目のif文は実質的にはloopの継続判定だけど
pythonのfor-loopでは直接それを表現できないのでwhileに置き換えたのが模範解答

アルゴリズムそのものを理解するということと
アルゴリズムを特定の言語で表現する方法を知るということとは少し分けて考えたほうがいいかも
0591デフォルトの名無しさん
垢版 |
2021/05/10(月) 13:22:46.52ID:QDSNEet8
基本的なものでもあらかじめ知ってた方が早い

高速文字列解析の世界 - 岩波書店
https://www.iwanami.co.jp/book/b257894.html

こういうのも読んで>>567の言う通りに暗記したものを思い出すしかない
なので思い付いてるのは1割未満
0592デフォルトの名無しさん
垢版 |
2021/05/10(月) 15:11:13.59ID:lCZGOQhN
str1 とか str2 とかはともかく
変数名に str や string を使う香具師は筋が悪い
0593デフォルトの名無しさん
垢版 |
2021/05/10(月) 16:45:53.24ID:auO1c8Ib
関数が汎用的になればなるほど変数名も抽象化されてしまうのは仕方がない
仮にstrlen関数がpythonにあったら、分かりやすい仮引数名はstrかstringしか思いつかんわ
0594デフォルトの名無しさん
垢版 |
2021/05/10(月) 16:54:27.06ID:BLE40/70
組み込み関数を変数名に使うんだね
0596デフォルトの名無しさん
垢版 |
2021/05/10(月) 18:33:52.38ID:giJ6lOgz
>>592
strと違ってstringはグローバルにおさえられてるわけじゃないから
文脈から何のstringか分かるようなら使っても問題ないよ
標準ライブラリやそのテストコードでも普通に使われてる
0598デフォルトの名無しさん
垢版 |
2021/05/10(月) 20:10:42.20ID:jLWGeya+
>>591
本で解説されてるような高度なアルゴリズムは自力で思い付くものでもないし覚えてそのまま使うのは普通だろうが、>>567が言ってるのはプログラマとして自力で書けなきゃまずいレベルのものだろう。
そりゃあらかじめ知ってりゃその方が早いが、そのレベルから暗記して思い出す以外にやりようがないならコピペの継ぎ接ぎしかできない底辺プログラマだぞ
0599デフォルトの名無しさん
垢版 |
2021/05/10(月) 20:58:18.93ID:tUbSWZNp
>>586
図解にしたらわかりやすい

str1="ihavealemon"
str2="ale"
012345678901
0ihavealemon
1a
2_a
3__a
3__al
4___a
5____a
6_____a
6_____al
6_____ale!

想定外の意味不明
0600デフォルトの名無しさん
垢版 |
2021/05/10(月) 23:36:33.67ID:ViCp850r
>>586
たぶん、5ch で広告規制されているURL を書いたらダメ!
エラーになったら、同じURLで投稿しないように、全角文字に変換するとか、
URLの間に、@など全角文字を入れたりするとか

MANGO 板で、NG ワードを絞り込みできる

たまに、いきなり吸い込まれるURLがある。
はてなブログとか、twitter の長いURLとか

5chから返事が戻って来なくて、いきなりアク禁になる
0601デフォルトの名無しさん
垢版 |
2021/05/11(火) 09:06:20.36ID:Zn4VBJW/
tkinterでMyDialogクラスなんか作るとき

class MyDialog():
__init__(self, root):
__self.root = root

がよくあるパターンだと思うんですが
これをする理由はなんですか?
0602デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:29:49.62ID:FWZS8iTB
>>600
amazon は %61mazon とか %41mazon とかすると通るω
0603デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:36:53.88ID:FWZS8iTB
>>601
●tkinter 標準の Dialog の第一引数 (self 以外) が root を想定しているから
●後で MyDialog 中から root にアクセスするときに便利
●別に引数で受けずに global root でも良いがみっともない
0604デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:52:33.39ID:FsPVc/v0
class MyD():
def __init__(self, root):
_master = tk.Toplevel(root)

使い捨てのモーダルダイアログ作成とかならroot使うのこのときだけだったりするので
そういうときは逆にメンバ化しない方がいいような気はする
0605デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:31:29.50ID:p52W3PYV
デストラクタの挙動がよくわかりません。
以下のコードを実行すると

#!/usr/bin/env python3

class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp

if __name__ == "__main__":
gp = Gnuplot()
del gp

------------------
デストラクタの箇所で
del self.pgp
AttributeError: pgp
と属性エラーが出るのですがなにが悪いのかわかりません。
0606デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:45:07.28ID:p52W3PYV
もしかして、クラス変数だからdelできない?
0608デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:37.32ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
0609デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:47.20ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
0613デフォルトの名無しさん
垢版 |
2021/05/12(水) 21:55:38.61ID:p52W3PYV
>>610, 611
削除できました。ただ、クラス変数をデストラクタで削除してしまうと
次回インスタンス宣言するときに必要なクラス変数が存在しないことに
なってしまってひどいバグの温床になることがわかりました。
確かに明示的に削除する必要はないですね。

>>612
モジュールインポートでグローバルな名前空間が汚れるのが嫌なので
クラスのスコープにいれて初期化子とデストラクタでモジュールのロードと
破壊を自動化しようとしているんです。
別に文頭でモジュールのインポートの宣言をしなければいけないという
わけではないのでは。
0615デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:18:22.84ID:p52W3PYV
モジュールをクラス変数ではなくインスタンス変数として束縛したいのですが
できません。

--------
#!/usr/bin/env python3

class Gnuplot:
def __init__(self):
import PyGnuplot as pgp
pass

def cmd(self,commands):
self.pgp.c(commands)
pass

if __name__ == "__main__":
agp = Gnuplot()
agp.cmd("plot sin(x)")

を実行すると、
AttributeError: 'Gnuplot' object has no attribute 'pgp'
と出ます。
__init__の中でPyGnuplot をインポートしてインスタンス変数self.pgp
に束縛したつもりなんですが、どうもそれがうまくいかないみたいなんです。
モジュール変数はクラス変数にしか束縛できないんでしょうか。。
0617デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:47:49.00ID:p52W3PYV
>>616
なーるほど。盲点でした。
おかげさまでうまくいきました。
0618デフォルトの名無しさん
垢版 |
2021/05/13(木) 14:19:15.50ID:gQUYeg5t
reference counter が増えるというオチ
0621デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:29:44.03ID:N2rlLeCr
python 2 の頃に
for line in fp.readLines():
lst = line.rstrip().split('\t')
...
と描いていたコードがあって
python 3 だと
TypeError: a bytes-like object is required, not 'str'
と出たので
lst = line.rstrip().decode('utf-8').split('\t')
と描き治したら動くのですが
これって変じゃないですか?
bytes を .rstrip() すると勝手に str に変更されるんですか?
0622デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:30:49.82ID:N2rlLeCr
>>619
>Python は中心となる乱数生成器としてメルセンヌツイスタを使います
0624デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:40:45.89ID:fhATjntu
>>622
(秘密鍵の定義がないので微妙な指摘な気もするけど)暗号論的擬似乱数生成器でなくてよいの?
0625デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:45:39.79ID:N2rlLeCr
>>624
リンク先をちゃんと読んでね
0626デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:48:56.15ID:fhATjntu
>>625
読んだるんだけど

>メルセンヌツイスタは完全に決定論的であるため、全ての目的に合致しているわけではなく、暗号化の目的には全く向いていません。
0627デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:05:15.28ID:N2rlLeCr
読み方が足りない
0629デフォルトの名無しさん
垢版 |
2021/05/14(金) 12:12:40.48ID:kXWjJhBx
コイントスで生成しよう
0631デフォルトの名無しさん
垢版 |
2021/05/14(金) 16:51:03.65ID:MEf5zm8X
def tes(i):
_return i+1,i*2

l1 =[]
l2 =[]
for i in range(10):
_l1, l2 ←appendしたい tes()

temp = tes()
l1.append(temp[0])
l2 append(temp[1])
こう書くのが一番いいですか?
もっといい書き方ありますか?
0632デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:40:34.28ID:dwsPOlKo
from functools import reduce
a, b = reduce(lambda x, y: (x[0] + [y + 1], x[1] + [y * 2]), range(10), [[], []])
0633デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:46:17.42ID:dwsPOlKo
l1, l2 = reduce(lambda x, y: (lambda a, b, c: (a[0] + [b], a[1] + [c]))(x, *tes(y)), range(10), [[], []])
0634デフォルトの名無しさん
垢版 |
2021/05/14(金) 18:14:41.94ID:jPY26TL6
でもこんなコード書いてきたらレビュー通さないでしょ
0636デフォルトの名無しさん
垢版 |
2021/05/14(金) 21:40:11.71ID:QMgVBpCt
メルセンヌ・ツイスタは疑似乱数生成器。
Ruby on Rails では、テストで同じ乱数を再現できるので便利

暗号化は、SecureRandom。
Linux のエントロピー、/dev/random, /dev/urandom

RubyのSecureRandomの乱数生成の実装を読んでみた
https://note.com/corocn/n/n84c91872c51c
0639デフォルトの名無しさん
垢版 |
2021/05/14(金) 23:16:18.97ID:0kdm8qdh
>>637
リストの汎用的な名前はxs, ysみたいなのを使うとx, yと対応させやすくて読みやすい
関数型で一般的に使われてる命名方法

xs, ys = [], []
x, y = tes(i)
xs.append(x)
ys.append(y)
0640デフォルトの名無しさん
垢版 |
2021/05/15(土) 06:38:38.29ID:+N4SlPlF
>>627
お前が何言いたいのか意味不明だったから聞いてやったんだけど、日本語が不自由だったみたいね
0641デフォルトの名無しさん
垢版 |
2021/05/15(土) 11:13:03.00ID:JEJaRs2J
そこは、Pytorchの自然言語処理が
ここまで進化したか!と驚愕する
場面かも知れないね
0645デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:07:21.87ID:skJMcbh+
シンタックス的には無問題
0647デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:32:47.31ID:eYtIld1h
>>628
勿体ぶらずにサンプルコード出せよ
0649デフォルトの名無しさん
垢版 |
2021/05/15(土) 16:39:11.67ID:te8p1bIO
https://ideone.com/SNDfue

このボタン押したときに、frameのwidth固定のままheightだけ変わるようにしたい
何か良いアイデアありませんか
0650デフォルトの名無しさん
垢版 |
2021/05/15(土) 16:45:41.28ID:te8p1bIO
あ、すいません
packじゃなくてgridです
動的生成でbtn.grid(row=i, col=0)のやつです
フレームと固定ボタンもgridで、フレームがsticky=ewnsです
0651デフォルトの名無しさん
垢版 |
2021/05/15(土) 17:30:51.73ID:CXOESfdA
root.geometry('適当にset')
0652デフォルトの名無しさん
垢版 |
2021/05/15(土) 17:40:08.98ID:CXOESfdA
make() の中

for の前
q = re.compile('([\d]+)', re.I | re.M | re.S)
w, h, x, y = map(int, q.findall(root.geometry()))

for の後
root.geometry(f'{w}x{h+125}+{x}+{y}')
0653デフォルトの名無しさん
垢版 |
2021/05/15(土) 19:12:50.31ID:te8p1bIO
あーなるほど
https://ideone.com/e8gAfE

>>652
h+125の125って何の数値ですか?
0654デフォルトの名無しさん
垢版 |
2021/05/16(日) 18:10:42.39ID:LkZOTUXR
色々調べたんだけど良くわからなくって

pythonでいうメソッドって、クラス内関数のことですか?
0655デフォルトの名無しさん
垢版 |
2021/05/16(日) 23:10:57.25ID:B1RP4BtA
>>654
インスタンス変数に束縛されていて、かつインスタンス変数を共有している関数
0656デフォルトの名無しさん
垢版 |
2021/05/17(月) 11:53:08.81ID:GHG/4QhJ
pathlibでpathがCドライブなどのドライブルート?を指してるかかどうかの判定って
bool(p.stem)でいいんですかね
誤判定あり得る?
0660デフォルトの名無しさん
垢版 |
2021/05/17(月) 13:35:14.68ID:9/Dbs2kw
クラス内にある関数をメソッドと認識してないオブジェクト指向がどっかにあるのか?
0661デフォルトの名無しさん
垢版 |
2021/05/17(月) 16:26:06.67ID:GHG/4QhJ
ああすいません。もうしわけない
target = tkinter.filedialog.askdirectory()
p = pathlib.Path(target)
でダイアログでドライブ自体を指定したときを弾きたいのです
0662デフォルトの名無しさん
垢版 |
2021/05/17(月) 17:34:58.64ID:zuvtZKHx
弾きたい理由がよく分からないが
os.path.ismount(path)でチェックするほうがいいんじゃないかな
pathlibのis_mountはWindows非対応らしい
0664デフォルトの名無しさん
垢版 |
2021/05/17(月) 18:22:09.97ID:GHG/4QhJ
>>662
ほーマウントポイントというんですね
勉強になりました。ありがとうございます
0667デフォルトの名無しさん
垢版 |
2021/05/17(月) 19:41:12.60ID:3TA+gznA
クソチョンw
0668デフォルトの名無しさん
垢版 |
2021/05/17(月) 20:23:09.84ID:XyOBSw0a
>>665
(略)うまくどうさするですか?
or
(略)動作しないのが仕様ですか?
DO (●´ー`〇)CCHIともとれる
わるいプログラマになれる日本語w
0670665
垢版 |
2021/05/17(月) 22:24:02.73ID:sNN9NhGA
>>669
レスありがとうございます。
リストを確認してみたところ、変なディレクトリと組み合わせの要素が余計に2つ入っていて、いずれも~$で文字化けしていました。
若干気持ち悪いですが、一度存在確認をして無ければパスして対応しようと思います。
0671665
垢版 |
2021/05/17(月) 23:51:49.03ID:sNN9NhGA
度々すんません
Excel使用中のダミーファイルの残骸を拾っていたというオチでした
0672デフォルトの名無しさん
垢版 |
2021/05/19(水) 08:18:07.60ID:iYEuEqYY
rows = [[col1, col2], [col1, col2]]

for i, cols in enumerate(rows):
__if i == foo:
____cols[1] = hoge
__else:
____cols[1] = fuga

みたいな処理って

[cols[1]=hoge if i==foo else
_cols[1]=fuga for i,cols in enumerate(rows)]

て書けるけど,python的にはそっちのがいいのですか? 可読性アレなのでやめた方がいい?
というかこういう処理ってmapみたいな何かでスマートにできんのでしょうか.
0673デフォルトの名無しさん
垢版 |
2021/05/19(水) 09:12:35.07ID:+3U9Nmga
リスト作成以外の内包表記はやめとこ って風潮
0675デフォルトの名無しさん
垢版 |
2021/05/19(水) 10:06:03.29ID:4ScJfzOE
>>672

rows0 = [[col1, col2], [col1, col2]]

rows = [[hoge if i==foo else fuga, col2] for i,cols in enumerate(rows0)]

って感じかな
0677デフォルトの名無しさん
垢版 |
2021/05/19(水) 10:35:13.73ID:iYEuEqYY
>>675
なるほど
0678デフォルトの名無しさん
垢版 |
2021/05/19(水) 11:37:56.44ID:psqzmlBB
>672
[cols[1]=(hoge if i==foo else fuga) for i,cols in enumerate(rows)]
0679デフォルトの名無しさん
垢版 |
2021/05/19(水) 11:57:00.88ID:eHf0e2Vm
>>678
そんな書き方できたっけと思ったが
通らんやん
通る古いバージョンのpyがあったのかな
0680デフォルトの名無しさん
垢版 |
2021/05/19(水) 12:00:58.28ID:u9Tr9lyP
内包表記の中は式じゃないといけないので↓こういう代入文は使えない

cols[1]=hoge
cols[1]=(hoge if i==foo else fuga)
0681デフォルトの名無しさん
垢版 |
2021/05/20(木) 08:54:47.33ID:xj7p5kce
PyAutoGUI をインポートしようとすると以下のエラーがでます。

 import pyautogui
  ↓
 ModuleNotFoundError: No module named 'pyautogui'

・pip install pyautogui 実行しました。
・pip show pyautogui でインストール先も確認しています。
・環境はWindows10、Python 3.9、Jupyter notebookを使っています。

どなたかお力添えをお願いします。
0682デフォルトの名無しさん
垢版 |
2021/05/20(木) 09:55:24.34ID:RA9rZAD1
>>681
コマンドラインでpython起動して、
import sys
print(sys.path)
同様のことをjupyterでやってみる
全然結果が違ったら、pyautoguiはjupyterを動かしてるpython環境には入れられてない

一番確実なのは、jupyter内で、
!pip installしちゃうこと
0683デフォルトの名無しさん
垢版 |
2021/05/20(木) 11:22:11.41ID:xj7p5kce
>>682
ありがとうございます!
jupyter内でpip installできることを初めて知りました。助かりました。
0684デフォルトの名無しさん
垢版 |
2021/05/20(木) 12:53:43.39ID:bQ5/ppWH
>>678-680
>>672
>[cols[1]=hoge if i==foo else cols[1]=fuga for i,cols in enumerate(rows)]
>て書けるけど

えっ
0685デフォルトの名無しさん
垢版 |
2021/05/21(金) 22:17:13.18ID:CTO13KrW
ステートマシンやってみたいんですが
なにかいいネタってないですか?
何も思い浮かばなくて…
0686デフォルトの名無しさん
垢版 |
2021/05/22(土) 00:24:57.95ID:k07/NFUV
複数のカ所からオンオフ出来る電球装置。
0687デフォルトの名無しさん
垢版 |
2021/05/22(土) 08:08:35.87ID:T+ogjR97
自販機なんかもステートマシンかね。

余談だが、コンビニのマルチコピー機とか、めっちゃ使いづらくてイライラするが、お金扱う部分とコピー機部分が別会社が作ってるとなると仕方ないんだろうな。スキャン結果をお金払ってUSBメモリに書き込む段階で2連続でエラーになったときには腹が立った。金返せと。
0688デフォルトの名無しさん
垢版 |
2021/05/22(土) 08:16:32.16ID:8p7z75uz
現金が消えればもっとシンプルになれる
0690デフォルトの名無しさん
垢版 |
2021/05/22(土) 10:24:51.50ID:fvqwCaVy
権威主義的だがGoogleは社内プログラミング言語としてC,C++,Java,JavaScript,Pythonを採用してる訳だし、Pythonを学ぶ意味は入門用言語であること以外にもあるとは思うよ
0691デフォルトの名無しさん
垢版 |
2021/05/22(土) 10:26:26.92ID:zUe7A7la
昔はTAKERUのようなモンが情報端末になると思ったがマルチコピー機の方が生き残るとは予想しなかった
0692デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:50:28.78ID:vbX2nPFn
C や C++ も入門に最適ですよ
0693デフォルトの名無しさん
垢版 |
2021/05/22(土) 11:51:38.54ID:vbX2nPFn
>>691
Loppi とかは端末分かれてる
0694デフォルトの名無しさん
垢版 |
2021/05/22(土) 12:26:36.70ID:jQojk9An
書きやすくてちゃんと動けばいいだろぐらいの感覚でpython使ってたんだけどみんな色々考えてたんだな⋯
俺の意識が低すぎるんだろうか
0695デフォルトの名無しさん
垢版 |
2021/05/22(土) 12:40:15.93ID:T+ogjR97
流石にscratchと同じ位置付けはない。
まあ、情報だけ仕入れてなかなか手を動かせない人はプログラマー適性ないから、そういう意味ではプログラミング入門をやめといた方がいいってのは事実だけど。
Pythonは書くのが簡単だから、とりあえずPythonで書いてみてアルゴリズムの妥当性なんかを検証してみて、
性能が出なかったりどうしてもPythonでできないことがあればそこだけC/C++で書く、みたいな言語だよ。3DCGにだって深層機械学習にだって使われてるんだから。応用先は広い。
0696デフォルトの名無しさん
垢版 |
2021/05/23(日) 09:54:19.88ID:hDiYjgJs
pyhtonは日本語で例えるなら標準語
「仕組みが標準的である」という意味ではなく
「どんな方言を話す人でも標準語だけは理解できるようになっている」という意味でな
可読性というのは大事
0697デフォルトの名無しさん
垢版 |
2021/05/23(日) 12:08:29.63ID:MJ9lD3tL
selfの嵐
0699デフォルトの名無しさん
垢版 |
2021/05/23(日) 13:51:03.68ID:Ki6GpCCw
クソチョンw
0700デフォルトの名無しさん
垢版 |
2021/05/23(日) 23:40:09.59ID:lPsOREZe
seleniumでChromeを操作中、get_screenshot_as_file等でスクリーンショットを撮ると
タスクバーのアイコンが点灯して煩わしいのですが抑制する方法はなにか無いでしょうか
0701デフォルトの名無しさん
垢版 |
2021/05/24(月) 00:11:00.85ID:Wk9HMUeS
def graph(x,y):
plt.plot(x, y)
plt.show()

def main()
graph(1,1)
graph(2,2)

graph(n,n)

みたいな感じで任意のn個のグラフを表示しようと思ったんですが、
1つのウインドウ上にグラフがどんどん重ねて表示されてしまいます。

plt.show()のたびに毎回別ウィンドを開いてグラフ表示する方法はないでしょうか?
0704デフォルトの名無しさん
垢版 |
2021/05/24(月) 14:00:40.00ID:lt23bAAY
>>701
figure
0705デフォルトの名無しさん
垢版 |
2021/05/24(月) 15:07:36.68ID:oesZEK70
>>701
たぶんmatplotlibのことだとエスパーして>704が回答してるんだとおもうが
他ライブラリのことだったら
シラネ(゚听)ーヨだとおもうぞ
0707デフォルトの名無しさん
垢版 |
2021/05/24(月) 23:21:14.74ID:i5hvSeUv
ぴぃちょん
0710デフォルトの名無しさん
垢版 |
2021/05/25(火) 10:35:17.59ID:RnsrvLKR
ボタンを押すと別ウィンドウでimgファイルを表示する関数を作りました。
これを実行すると1回目は画像の大きさでウィンドウが作成され表示できます。
ウィンドウを閉じずに、
2回目にボタンを押すと画像が更新ではなく、縦に空白が継ぎ足しで画像が表示されてしまいます。
どうしたら、画像の更新ができるのでしょうか。。
ウィンドウ状況が説明しづらいのですが、以下の様にボタンを押すたびに空白が追加されます。

1回目      2回め
■ ←画像    □←画像の大きさの空白
         ■←新しい画像
def img_button(img):

global image_Tk
global imgwindow

#すでにウィンドウあればウィンドウ作らない
if imgwindow == None or not imgwindow.winfo_exists():
imgwindow = tk.Toplevel()
imgwindow.title("サブウィンドウ")

#画像の変換
image_pil = Image.fromarray(img)
image_Tk = ImageTk.PhotoImage(image_pil, master=imgwindow)
# Canvas作成
canvas = tk.Canvas(imgwindow, width=img.shape[1], height=img.shape[0])
canvas.pack()
canvas.create_image(0, 0, anchor="nw", image=image_Tk)
0712デフォルトの名無しさん
垢版 |
2021/05/25(火) 11:09:23.00ID:RnsrvLKR
>>711さん
ありがとうございます。
IDとcanvasをグローバル変数にしてcanvas.delete(ID)してから、CANVAS.Createで出来ました!
0714デフォルトの名無しさん
垢版 |
2021/05/25(火) 15:59:00.90ID:uHQaSw0s
data = {"a":1, "b":2, "c":3}
search = random.sample(list(data.keys()), 2)

for target in search:
__foo(data[target])

ループ回さないとだめですか?
なんかforとかダサいぜって聞いたので…

特定の複数の既知キーに対して同じ処理をするときは、これが最軽量?
0716デフォルトの名無しさん
垢版 |
2021/05/25(火) 16:45:07.88ID:PJq37B34
fooでdataのkey名を使うのであれば内包表記でもどっちでもいいような。
fooが何かしら値を返してその値を使うなら内包表記が便利なときが多い
0719デフォルトの名無しさん
垢版 |
2021/05/25(火) 19:28:32.35ID:pUGLRN2w
>>718
foo内で特定のキーだけ取り出す処理書くということ?
0721デフォルトの名無しさん
垢版 |
2021/05/25(火) 21:20:54.31ID:fxdy+Y5x
うまく伝わるか分かりませんが、教えてください。
wxpythonをもちいて、変数を使ってボタンを40個くらい作るんですが、
一つ一つイベントをつくる必要はありますか?
どのボタンも、ボタンの属性を変更するだけなのですが、
どれかのボタンをクリックしたときに、そのIDを取得して、
それに応じて動作するように、一つのイベントで書けませんか?
0723デフォルトの名無しさん
垢版 |
2021/05/25(火) 21:39:20.58ID:zODo0Elc
コールバックをクロージャにする
0724デフォルトの名無しさん
垢版 |
2021/05/26(水) 00:38:40.45ID:ozAEioOZ
PIL(Pillow)でpng画像をjpeg形式で保存しようと思うとエラーがでます。
どうやればpillowで形式変換できますか?

#!/usr/bin/env python3
from PIL import Image

img = Image.open("gazou.png")
newImg = img.rotate(45)
newImg.save("gazou.jpg", format="jpg")

エラー内容
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/hogehoge/venvpy/3.9/lib/python3.9/site-packages/PIL/Image.py", line 2153, in save
save_handler = SAVE[format.upper()]
KeyError: 'JPG'

可逆圧縮pngから不可逆圧縮jpgに変換はできませんか?
0726デフォルトの名無しさん
垢版 |
2021/05/26(水) 01:58:00.82ID:ozAEioOZ
>>725
format="JPEG"でやってみたんですけど、次のようなエラーが出ます。

]>> newImg.save("gazou.jpg", format="JPEG")
Traceback (most recent call last):
File "/Users/hogehoge/venvpy/3.9/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 610, in _save
rawmode = RAWMODE[im.mode]
KeyError: 'P'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/hogehoge/venvpy/3.9/lib/python3.9/site-packages/PIL/Image.py", line 2164, in save
save_handler(self, fp, filename)
File "/Users/hogehoge/venvpy/3.9/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 612, in _save
raise OSError(f"cannot write mode {im.mode} as JPEG") from e
OSError: cannot write mode P as JPEG
0729デフォルトの名無しさん
垢版 |
2021/05/26(水) 03:45:34.92ID:fSAivsd8
>>726
元画像のカラーモードがRGB形式じゃない場合にそのエラーが出る
>>727みたいにカラーモードをRGBに変換すればOK
0732デフォルトの名無しさん
垢版 |
2021/05/26(水) 10:54:28.63ID:2/BE6bBS
>>721
できますよ
0733デフォルトの名無しさん
垢版 |
2021/05/26(水) 10:55:56.83ID:2/BE6bBS
>>714
pandas
data.loc[search].apply(foo)
みたいにできた気がする
0734デフォルトの名無しさん
垢版 |
2021/05/26(水) 17:39:22.31ID:8FPq1suG
count = 0
for i in range(10):
count += 1
print(count)

みたいにインクリメントする処理があるとします。
上では初期値を0にしてるので最初の出力が1になりますが、最初を0にしたい場合どうしますか?
上はあくまで例ですのでenumerateは使わない状況だとしてください。

count = -1で初期化する?(何か不格好です)
printの前ではなく後にcount += 1をする?(最後のループで無駄な処理になるます)
0736デフォルトの名無しさん
垢版 |
2021/05/26(水) 18:02:22.23ID:q6g7Vr2M
print(i)にする。
>最後のループで無駄な処理
むしろこれだけ見るとcount変数の+=の方が無駄な処理。
0738デフォルトの名無しさん
垢版 |
2021/05/26(水) 18:37:06.13ID:kjvLv3j9
他の言語だとdo〜whileを使うパターンか。
0742デフォルトの名無しさん
垢版 |
2021/05/26(水) 20:50:53.11ID:Gw0GQCqH
Pythonって並列処理できないって本当?
シェルスクリプトで言えば cmd1 | cmd2 みたいに
パイプの左右を並列で実行したいだけなんだけど?
0744デフォルトの名無しさん
垢版 |
2021/05/26(水) 21:53:19.41ID:8+ymouS/
直列
cmd1
cmd2

並列
cmd1|cmd2

こういう事か
0746デフォルトの名無しさん
垢版 |
2021/05/26(水) 22:12:11.41ID:ozAEioOZ
>>727,729
できました!ありがとうございます。
”P”モードがパレットモードみたいですね。モード分けがあるとは知りませんでした。
0747デフォルトの名無しさん
垢版 |
2021/05/26(水) 22:55:38.20ID:ozAEioOZ
>>728
Google Colaboratoryとは初めて聞きました。
わざわざ回答作ってくださったんですね。ありがとうございます。
0750デフォルトの名無しさん
垢版 |
2021/05/27(木) 04:30:23.43ID:wuJlwyMR
まともに使えるのがPythonしかないのでここで聞かせてください
退屈なことはpythonにやらせようを一部飛ばしたけど一通りやった
データ構造とアルゴリズムは別の本でソートアルゴリズムとかは実装したことあるけど探索木のところで面倒くさくなって放り投げた
基本情報は持ってる
大学の学部は工学だけど全然関係ない科
大学のレベルは地方国立
まともに組んで使ってるのはEXCEL処理の自動化くらい

この程度の実力しかないんですけどブラックじゃないit関連企業に就職できますかね
遊びたくて院進したものの自分の分野で就職する気はあまりない
でも他の分野だとitくらいしかかじったものが無いんでどんなもんかなと
0751デフォルトの名無しさん
垢版 |
2021/05/27(木) 04:45:23.78ID:KxzrMq7/
> 遊びたくて院進したものの自分の分野で就職する気はあまりない
好きにすればいいと思う
キミに誰が何を言っても無駄
0752デフォルトの名無しさん
垢版 |
2021/05/27(木) 07:01:30.13ID:tgaRcrWk
>>750
いったいお前のどこを評価しろと言うのだ
技術力ではなく頭数としての労働力を商品としている会社くらいなら入れるかもね
0753デフォルトの名無しさん
垢版 |
2021/05/27(木) 08:36:21.02ID:PvZCRO+r
>>750
そのスペックなら面接で普通に喋れたら大手グループのユー子くらいは普通にいける
コミュ力に自信があったり英語得意だったりするなら有名企業本体の情シスも挑戦してみる価値はある
大手SIer本体もどこかは受かるだろうけど激務が嫌ならお勧めはしない
Web系とか技術力を求めるところはまあ面接次第では受かるかもしれんが多分君には合わないからやめとけ
0755デフォルトの名無しさん
垢版 |
2021/05/27(木) 09:15:16.72ID:Q/UJUSBh
tkiter.filedialog.askdirectory()したときの
フォルダー: の部分の初期値って入れられないのでしょうか?


https://i.imgur.com/0o1rG3k.jpg
この画像でいう
フォルダー: python
の部分です
0756デフォルトの名無しさん
垢版 |
2021/05/27(木) 11:46:42.37ID:CrQkQbIT
スクレイピングした情報をツイッターみたいに画面にリアルタイムに流すのって何使えばいいですか
DOSに表示するなら簡単にできるんですけどもっと視覚的にわかりやすくしたいんですよね
なのでHTMLに変換する必要があるかなとは思うんですけどその先がわからない・・・
0759デフォルトの名無しさん
垢版 |
2021/05/27(木) 13:45:34.27ID:U0nLnJgd
>>714
>>> df = pandas.DataFrame([[1,2,3]], columns=['a','b','c'])
>>> df
...a b c
0 1 2 3
>>> s = random.sample(list(df.keys()), 2)
>>> s
['c', 'a']
>>> df.loc[:,s]
...c a
0 3 1
>>> df.loc[:,s].apply(lambda x: x+1)
...c a
0 4 2
0760デフォルトの名無しさん
垢版 |
2021/05/27(木) 14:25:54.47ID:U0nLnJgd
>>750
>ブラックじゃないit関連企業

ないよ
0761デフォルトの名無しさん
垢版 |
2021/05/27(木) 14:28:23.27ID:U0nLnJgd
>>756
ajax
jQuery
AngularJS
Vue.js
その他色々
0762デフォルトの名無しさん
垢版 |
2021/05/27(木) 16:30:33.66ID:s3y6OrJI
>>736
最初が0になってしまいます
最初を0にしたい場合どうしますか?という質問です

>>737
後でお願いします

>>740
(0, 0) から始まってしまいます
0764デフォルトの名無しさん
垢版 |
2021/05/27(木) 16:54:45.69
>最初が0になってしまい
てことは最初は0になってほしくないってことよね
しかし
>最初を0にしたい場合
最初を0にしたいってことよね
0766デフォルトの名無しさん
垢版 |
2021/05/27(木) 17:38:34.38ID:Q/UJUSBh
>>758
なんの話をしてるんですか?
0767デフォルトの名無しさん
垢版 |
2021/05/27(木) 18:33:21.46ID:rOct9PhV
>>762
要は最初を0にするんじゃなくて、0から始めたいっていうことだよな?
0769デフォルトの名無しさん
垢版 |
2021/05/27(木) 20:29:53.79ID:tDs5bu9A
>>734
>printの前ではなく後にcount += 1をする?(最後のループで無駄な処理になるます)
printの後にcountをするようにして
後はifなりbreakなりで最終ループ時だけ無駄な処理を省けば良いやん
0770デフォルトの名無しさん
垢版 |
2021/05/27(木) 21:07:22.98ID:331NlD9k
>>734
もう
print(0)
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
print(7)
print(8)
print(9)
って書けばいいんじゃね
0772デフォルトの名無しさん
垢版 |
2021/05/27(木) 22:05:22.05ID:YUUYPYGS
そもそもenumerateできないってどういう状況なんだよ
0773デフォルトの名無しさん
垢版 |
2021/05/27(木) 23:44:19.10ID:xnk0LFCp
python-vlc で動画再生をしようとしていますがエラーが出て表示できません。
#!/usr/bin/env python3

import vlc
import time

media = vlc.MediaPlayer("conan.mp4")

media.play()
while True: pass

-------
エラーメッセージ
[00007ffbea8240f0] main video output error: video output creation failed
[00007ffbf0e1e4f0] main decoder error: failed to create video output
[h264 @ 0x7ffbec81de00] get_buffer() failed
[h264 @ 0x7ffbec81de00] thread_get_buffer() failed
[h264 @ 0x7ffbec81de00] decode_slice_header error
[h264 @ 0x7ffbec81de00] no frame!

どうも動画を表示するフレームを生成したいないのが原因のようなのですが、
生成方法がわかりません。OSはMacです。Windowsだとうまくいくみたい?
0774デフォルトの名無しさん
垢版 |
2021/05/28(金) 09:04:46.25ID:JAHXj1EI
>>734
count = 0
print(count)
for i in range(1, 10):
__count += 1
__print(count)
一見無駄なことしているように見えて、これが一番だったり。
この手の最適化は、Javaなどのコンパイラで行われている。
0775デフォルトの名無しさん
垢版 |
2021/05/28(金) 09:11:50.43ID:hUAjGD+g
>>772
実際には任意のループで条件でカウントアップしたいってことなんじゃないの?
こういう場合って、たいした処理じゃないから処理の意図が分かるように書くべきな気がするけど。
初期値を0にしたいなら
count = 0
ループでは単に先にprint(count)すればいいんじゃないのかね
0777デフォルトの名無しさん
垢版 |
2021/05/28(金) 13:39:50.35ID:h8psOPk0
ループ抜けた時に count の値を最後に表示した値にしたいとかならまだわかるけど
> printの前ではなく後にcount += 1をする?(最後のループで無駄な処理になるます)
とかだとたいした無駄じゃねーからそんなもん気にすんな!で終わる話だろ
0778デフォルトの名無しさん
垢版 |
2021/05/28(金) 15:15:23.54ID:hUAjGD+g
>>776
あれ当初の>>734で、
初期値0にすると最初が1になってしまいます、最初を0にしたい、って話じゃなかったのか?ww

いずれにしてもコード読んだ側が理解しやすいほうに寄せるのがいいと思うけど
0780デフォルトの名無しさん
垢版 |
2021/05/28(金) 17:06:29.61ID:6CwHnVjs
>>779
最後のループで無駄な処理になるんで無しです
0783デフォルトの名無しさん
垢版 |
2021/05/28(金) 21:39:06.19ID:ZEZeXogb
ループ抜けるのに無駄な処理?が必要
c=<9にしたところでcに10は入る
c+=1のほうが速い
0785デフォルトの名無しさん
垢版 |
2021/05/28(金) 22:25:04.89ID:AsMYqoY4
各種option値に変更があるとこのcallbackを経由してiniに書きにいく

func(name, *args):
__value = str(eval(f"{name}_var.get()"))
__ini.set("opt", name, value

なんて名前にすたらいいですか?
opts_callback? (それぞれのoptはそれぞれに別のcallback持ってるのでややこしいし、何してるかわからない)
bind_ini?
0788デフォルトの名無しさん
垢版 |
2021/05/29(土) 07:45:30.21ID:cBhWMXo2
>>787
たとえばtkinterのtraceはvalue取らない
読み書きに対応した発火
0789デフォルトの名無しさん
垢版 |
2021/05/29(土) 08:21:18.93ID:ux58CXsc
そもそもpythonで書いてる時点で無駄な処理ばっかりなんだから数字を一回余計に足すみたいなことを無駄だと考えてもしょうがない。
もしそれがめちゃくちゃコストが高いものだったら、
c=1
for i in range(2,10):
_ c+=1
_ print(c)
とかなんじゃないの。
しかしどこをどのように無駄だと考えるかで答えは変わってくるからこんな簡単な例だと意味がない。
1クロックも無駄にしたくないならCで書いて逆アセンブルして最適化すべき
0790デフォルトの名無しさん
垢版 |
2021/05/29(土) 10:50:41.47ID:1rqPiETn
分岐のコストなんかより、たとえば動的ディスパッチみたいなの方がもっとコスト高いしな。
Python使っている時点でそんなの気にする方がおかしい。
0792デフォルトの名無しさん
垢版 |
2021/05/29(土) 12:55:22.74ID:1cSD9ghj
>>791
それは質問に対する答えじゃないでしょう
0793デフォルトの名無しさん
垢版 |
2021/05/29(土) 14:07:19.37ID:eCdX3xcf
そもそも質問が可笑しかったり
質問自体が間違ってるときは
議論がナンセンスになる
0794デフォルトの名無しさん
垢版 |
2021/05/29(土) 14:17:24.87ID:w6PJb4Ro
Selenium について教えを頂きたいです。

・社内システムの毎月出力作業を自動化したいと考えています。
・選択ボックスに100項目あって、CSV出力しています。
・ただし一度に100項目選択すると止まってしまうので、10項目ずつ選択して出力しています。
・これを for 文で表したいのですが、セレクトボックスから10項目ずつ選択→ループする方法ってありますでしょうか?

↓1つずつ選択するコードはこんな感じで作りました。
 #セレクトボックスの選択肢リスト
 select_list =["001","002",・・・,"100"]

 #1個ずつ選んで出力
 for i in select_list:
  select.select_by_value(i)
  (→CSV出力)
  (→選んだものを削除)

変な質問でお恥ずかしいですが、よろしくお願いします。
0795デフォルトの名無しさん
垢版 |
2021/05/29(土) 15:22:09.00ID:IDyu8xLm
>>794
n = 10
for i in select_list[::n]:
__for j in range(n):
____select.select_by_value(i+j)
__CSV出力

iterableからn個のchunkごとに要素を扱う方法もあるけど標準だけだと少し面倒くさい
0796デフォルトの名無しさん
垢版 |
2021/05/29(土) 17:04:22.27ID:Q5ZWhxJZ
>>794
select_list=[("001","002","003"…),("011","012"…),()…,("091","092",)]
for i in range(10):
_for j in select_list[i]:
__select.select_by_value(j)
_CSV,DELETE
_処理待
0799デフォルトの名無しさん
垢版 |
2021/05/29(土) 18:56:27.94ID:IDyu8xLm
>>795
いろいろバグってたわ
少し面倒でもchunkingしたほうがいいね

def chunked(sequence, chunk_size):
__for i, x in enumerate(sequence[::n]):
____yield sequence[i*n:i*n+n]

n = 10
for xs in chunked(select_list, n):
__for x in xs:
____select.select_by_value(x)
__CSV出力
__select.deselect_all()

上のはsliceしてるのでsequenceしか対応してない
iterableに対応したければislice使って自作するかtoolzのpartition_all
0800デフォルトの名無しさん
垢版 |
2021/05/29(土) 22:28:41.31ID:w6PJb4Ro
>>795-796,799
すみません、ご返信ありがとうございます!
初心者なので理解に時間がかかってしまうのですが、
頂いた回答を1つ1つ調べながら試してみます。
ありがとうございました。
0801デフォルトの名無しさん
垢版 |
2021/05/30(日) 01:51:26.72ID:QbQ8fL7I
pythonとsql学んだあとにflask学んでるだけどわけが分からん
書いてある通りにコピペしたら動くけど一文一文の説明とかないから意味不明な引数渡してたりしておまじないにしか見えん
言語よりフレームワークの方が丁寧な説明してるサイトなくて辛いわ
0802デフォルトの名無しさん
垢版 |
2021/05/30(日) 02:12:39.29ID:/X+axtgF
>>801
そもそもTCP/IPやHTTPなど基本的なWebの仕組みが分かってないならそりゃおまじないにしか見えないだろうな
本職になる気なら基本情報くらいは取ってこい
0803デフォルトの名無しさん
垢版 |
2021/05/30(日) 02:17:55.55ID:q/JEAbG9
俺も知らなくて今見たけど
普通にURLのパスで振り分けて
レスポンスを返しているだけで
非常にわかりやすかったが…

httpの勉強をしてはどうだろう
0804デフォルトの名無しさん
垢版 |
2021/05/30(日) 02:26:23.49ID:+GIz90Eu
flaskみたいなマイクロフレームワークはほぼHTTP剥き出しだから仕組みを理解していれば何も難しいことはないし分かってないとサッパリだろうな
基礎をすっ飛ばしてとにかく動きゃいいならPHPやRailsの方がいいんじゃないかな
0806デフォルトの名無しさん
垢版 |
2021/05/30(日) 05:34:27.67ID:thNqHOO+
うちも去年PythonはじめてDjango挫折してFlaskでようやく検索サイト作れたよ
httpなんか必要ないし。とにかくググって自分に必要そうなやつコピペしまくってるうちにわかるようになる
0807デフォルトの名無しさん
垢版 |
2021/05/30(日) 06:16:53.32ID:nQsIrgLa
seleniumとchrome driverで自動操作させるのを作ってるんだけどちゃんと動くか確認する際に、今どの操作をやっているのか表示させる方法ってありますか?
待機している状態なのか、要素をクリックするはずがその要素がまだ表示されてなくてプログラムが止まってしまったのか小窓か何かで確認できたら嬉しい
スマホアプリのFrep(タッチやスクロールや待機などをプログラムして自動化できるアプリ)みたいな感じで
0809デフォルトの名無しさん
垢版 |
2021/05/30(日) 09:31:11.43ID:SQirJDgW
wxpythonで、たくさんのボタンをbutton_funcでバインドして、
def button_func( self , event ):
で、クリックしたボタンの名前を取得するには、どう書きますか?
event.GetEventObject() や event.GetId() だと
メモリアドレスやよく分からない6桁くらいの数字が出てきます。
0812デフォルトの名無しさん
垢版 |
2021/05/30(日) 12:03:44.16ID:Gk//zzeB
>>801
学校はどこも、Ruby on Rails。
YouTube で有名な雑食系エンジニア・KENTA のサロンでも、そう

Rails 6 だけでも黒田努とか、数冊出ている。
Rails チュートリアルとか、教育体制が圧巻!

Rails以外のフレームワークを学んでも、実務で使えない。
保守できないので使う会社がない。需要がない

Udemy の人気講師・山浦清透、YouTube、1/15
Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース

Windows 10 Home 版, WSL2, Ubuntu 20.04 LTS,
Docker Compose, VSCode, Heroku, Ruby on Rails, Git, CI/CD, CircleCI

圧巻! 山浦のDockerからCircleCIまで含めた、一連の動画
0814デフォルトの名無しさん
垢版 |
2021/05/30(日) 17:28:25.64ID:SQirJDgW
>>810
そうですね。ほぼ同じ状況です。
wxpythonで作っていたので、tkinterと書き方が違い、困っていました。
>>811
違うのでもいいかもですね。勉強してみます。

回答の様子を見るからに、方法はないのかな?
0816デフォルトの名無しさん
垢版 |
2021/05/31(月) 05:39:07.08ID:7zrNsB91
>>809
event.GetEventObject().GetLabel() とか
event.GetEventObject().GetId() とかでいいのでは
>>721もそう
0817デフォルトの名無しさん
垢版 |
2021/05/31(月) 09:35:26.59ID:3RgsPXyf
馬鹿には無理
0818デフォルトの名無しさん
垢版 |
2021/05/31(月) 12:32:05.59ID:HIaAzIRd
openpyxlでスケールを設定せず折れ線グラフとか散布図を描いた後に自動で設定されたスケールを変数に格納する事ってできない?

グラフ名.y_axis.scaling=openpyxl.chart.axis.scaling(min=0,max=100)
みたいに明示的に設定してから描画したら最小0、最大100になるけど
この数値を入れずに自動設定で描画した後に
print(グラフ名.y_axis.scaling)
を入れるとmax=None,min=Noneになっちゃうんだよね
0820デフォルトの名無しさん
垢版 |
2021/05/31(月) 22:01:18.87ID:Gvuxe9Ho
virtualenvで作ったファイルにvscodeでアクセスできるのはなぜですか?
仮想化した状態で作ったpyファイルに仮想化をactivateしてないのに左側のエクスプローラーからアクセスできて自由に書き換え保存もできます
いちいち仮想化しなくても書き換えできるので便利だな程度にしか思ってなかったのですがwindows標準のエクスプローラーからアクセスしようとしたらファイルなくてそういえば仮想化して作ったファイルだったなと
なんでvscodeならアクセスできるか不思議に思いました
0823デフォルトの名無しさん
垢版 |
2021/05/31(月) 22:44:02.30ID:Gvuxe9Ho
これはお恥ずかしい
意味のわからないこと書き込んでました
ツイートみたいに削除したい
0824デフォルトの名無しさん
垢版 |
2021/05/31(月) 22:47:11.85ID:A1aFJfEy
>>820
> virtualenvで作ったファイルにvscodeでアクセスできるのはなぜですか?
実在するからです

>windows標準のエクスプローラーからアクセスしようとしたらファイルなくて
むしろこっちがおかしいです

仮想環境を具体的にどうやって作成したかは知りませんがそういうものです
virtualenvというものは実質的には実行環境のことです
0825デフォルトの名無しさん
垢版 |
2021/06/01(火) 00:43:06.01ID:z4P7Xsae
数日前から初めてプログラミングそのものを始めた超初心者です。
どうぞよろしくお願いいたします。簡単なおみくじのプログラミングをしてみたのですが、
下記エラーメッセージが出て動きません。
改善点あれば教示ください。

■作成プログラム
import random
def omikuji():
kuji = ["大吉","小吉","凶”]
return random.choice(kuji)
kekka = omikuji()
print('結果は',kekka,'です')

■エラーメッセージ内容
EOL while scanning string literal
0826デフォルトの名無しさん
垢版 |
2021/06/01(火) 00:50:49.90ID:h2QyZNy/
>>825
コピペしてそのままなら、
>kuji = ["大吉","小吉","凶”]
"凶"を囲ってるダブルコーテーションが、片方全角になってる
0827デフォルトの名無しさん
垢版 |
2021/06/01(火) 01:18:44.93ID:z4P7Xsae
>>826
返信ありがとうございます!全角文字を半角文字に直し損ねていたのですね。
ご親切にありがとうございました!
0828デフォルトの名無しさん
垢版 |
2021/06/01(火) 09:00:51.97ID:kyVtHsFz
プログラム経験ゼロの文系男がPythonで株の自動売買のプログラム作れるようになるのは至難の業かな?
毎日数時間の勉強を数年続けないとダメかなやっぱり
教えてエロい人
0831デフォルトの名無しさん
垢版 |
2021/06/01(火) 10:02:50.85ID:J2N8rWTY
ワンショットの分析で売買シグナルを出すくらいなら本も腐るほどあるし簡単だけど、
継続的に稼働して利益を出し続けられる仕組みを構築するのは超難しいよ
IT8年目の本職だけど、自分のコードに金を任せる気にはなれんわ
やってるのは売買戦略のバックテストまでだな
0833デフォルトの名無しさん
垢版 |
2021/06/01(火) 10:10:39.58ID:TvRQnady
ていうか買ってあるならやれよw
やってから聞け
0834デフォルトの名無しさん
垢版 |
2021/06/01(火) 12:04:48.93ID:GfvVYbqX
20分遅れのデータで売買してもボラれるだけだしな
0835デフォルトの名無しさん
垢版 |
2021/06/01(火) 12:14:05.16ID:h2QyZNy/
>>827
こういう細かいミスはVSCodeとかPyCharmみたいな
プログラミング用エディタとかIDEを使うと
警告文を出してくれるから、そろそろ使ってみると良いかもしれないね
VSCodeが導入も楽でお勧め
0836デフォルトの名無しさん
垢版 |
2021/06/01(火) 13:55:15.01ID:kkYAvrn4
無駄にトラップが一つ増えてるだけじゃないかなぁ
凶のあと続けてダブルコーテーションを打ったらそのまんま全角になってて、しかも見ても分からなかった、でしょコレ
日本語でやらせるだけで変換ミスが起きる

つまり日本の初心者とアメリカの初心者はひっかかり具合が違う
要らないトラップが増えてる
0837デフォルトの名無しさん
垢版 |
2021/06/01(火) 14:49:42.43ID:uwqmKkHK
エラーメッセージがわかりにくいのと
エラーメッセージの見方を知らないのが原因

前者は言語が改善すべき点
後者はIDEを使う場合でも学んでおくべき
0838デフォルトの名無しさん
垢版 |
2021/06/01(火) 15:07:37.68ID:kkYAvrn4
アメリカ人が作ってんだから全角文字うんぬんは酷でしょ
人生の中でこれまで一度も使ったことない記号へのエラーメッセージを分かり易く作れ……ってのは流石に絵空事だ
だって全角文字関連は架空の話に見えるじゃん
0840デフォルトの名無しさん
垢版 |
2021/06/01(火) 17:01:10.24ID:G+CkyqTl
変数名に2byte文字使えるしむしろ日本語圏の人間にも優しい作りでは?(雑な認識)
0841デフォルトの名無しさん
垢版 |
2021/06/01(火) 17:57:30.79ID:Jb5LYbPi
ずっと前から思ってるがGHQはなぜ他の植民地同様に英語を公用語にしてくれなかったんだ
そのせいで日本人はハンデを生まれたときから背負ってる
英語さえ自由自在に使えたら無料公開されてる本沢山あるのに
0842デフォルトの名無しさん
垢版 |
2021/06/01(火) 18:05:15.89ID:kkYAvrn4
どっちつかずのダブルリミテッドをワンサカ量産すれば占領継続がラクじゃん
超合理主義になって歯向かってきても困るし
0843デフォルトの名無しさん
垢版 |
2021/06/01(火) 18:12:07.69ID:uwqmKkHK
>>838
全角クォーテーションを指摘しろってのは酷だわ
3.10で改善されるエラーメッセージは↓こんな感じ

3.9 SyntaxError: EOL while scanning string literal
3.10 SyntaxError: unterminated string literal (detected at line 3)

でもこの変更でエラー箇所を示すキャレット位置がバグるようになってる
0845デフォルトの名無しさん
垢版 |
2021/06/01(火) 22:18:37.49ID:z4P7Xsae
>>835
メモに残しました!今はテキスト順番にやっていて、もう少し慣れたらそちらも導入します!
ありがとうございました!
0846デフォルトの名無しさん
垢版 |
2021/06/02(水) 04:28:33.87ID:sSbsV05j
mainモジュールのインスタンスのsubモジュールから自作exceptをraiseするときって
mainで定義してsubに渡して使うんですか?

Main
class myEx():
_pass

class main()
_def __init__(self):
__try:
___self.sub = Sub(myEx)
__except myEx as e:
___pass


Sub
class sub()
_def__init__(self, myEx):
__self.myex = myEx
__raise self.myex

みたいな?
0847デフォルトの名無しさん
垢版 |
2021/06/02(水) 05:37:48.78ID:6ZqDM4Li
例外の性格次第だが、一般的にsub.py以外でスローしない例外はsub.pyに定義してmain.pyでimportする
例えばJSONDecodeErrorはjsonモジュールの中で定義されていてmainから渡すとかやらないだろ
0848デフォルトの名無しさん
垢版 |
2021/06/02(水) 05:42:33.79ID:sSbsV05j
あーそりゃそうか
import sub.Sub, sub.Err ですね
0849デフォルトの名無しさん
垢版 |
2021/06/02(水) 10:17:35.50ID:qtmfAhQ7
>>836
>つまり日本の初心者とアメリカの初心者はひっかかり具合が違う
>要らないトラップが増えてる

そこはその通りだと思うが
トラップが無いことで latin-1 プログラミングしか知らない馬鹿が大量生産されてるぞ
0850デフォルトの名無しさん
垢版 |
2021/06/02(水) 10:19:32.01ID:qtmfAhQ7
>>838-839
IMEとかは韓国人だよな
0851デフォルトの名無しさん
垢版 |
2021/06/02(水) 10:21:42.06ID:qtmfAhQ7
>>841
あいつらは Divide and Conquer の原則で動いている
0852デフォルトの名無しさん
垢版 |
2021/06/02(水) 10:23:10.22ID:qtmfAhQ7
>>842
ほんそれ

敢えて混乱を残しておく方があいつらにとっては有利
0853デフォルトの名無しさん
垢版 |
2021/06/02(水) 10:41:02.55ID:FKfsOG19
VScodeでWindows上で動作するソフトを、AndroidやiOS用に変換するのは大変ですか?
また、変換・作成するのに、何を使うのがいいでしょうか?
0854デフォルトの名無しさん
垢版 |
2021/06/02(水) 11:52:54.26ID:ff41IlUq
>>853
そのWindows上で動作するソフトが何で作られてるのか等を明確にしないと分からないんじゃね
Webアプリならそのまま使えるかもしれないしモバイル対応のフレームワーク使われてて楽できるかもしれないし1から作り直しかもしれない
WindowsのソフトがPython製なのかAndroidやiOS側をPythonで作りたいのか、変換作成ツールをPythonで作りたいのかも分からんけど
0855デフォルトの名無しさん
垢版 |
2021/06/02(水) 15:40:58.71ID:yQA8A0IZ
ファイルをopenしたあとcloseするのにtry構文かwith使えっていうこと自体は納得できるんやけど
例外が発生した場合て何?ファイル操作してるだけでどんな例外が発生するわけ?
0856デフォルトの名無しさん
垢版 |
2021/06/02(水) 17:00:58.06ID:zFDXJHkT
ファイル操作自体の例外もあるけど、それを処理するプログラムでの例外なんていくらでもあるでしょ
例えば読み込んだデータが想定外な内容だったときにそれを適切に処理できなかったら例外になるわけだし
0859デフォルトの名無しさん
垢版 |
2021/06/02(水) 17:48:37.82ID:yQA8A0IZ
なるほど
あとcloseしなかったところで結局メモリ上に残るだけなんやよね
サーバーとか業務用とか迂闊に再起動かけられないやつはともかく
個人のpcで使う分には再起動かければリセットされるからテストで適当に書いたやつ動かすときにまで気をつける必要はないってことでいい?
個人やから複数人が同時に同じファイルにアクセスすることはないわけやけどcloseしなかったせいでファイルの中身がバグる可能性はある?
0863デフォルトの名無しさん
垢版 |
2021/06/02(水) 18:46:21.81ID:kd21cT4U
そういうのは分かってる奴がやるもの
分かったつもりになってるバカの分際で安易に省略するもんじゃない
ヤケドでは済まんかも知れんぞ
0864デフォルトの名無しさん
垢版 |
2021/06/02(水) 18:47:29.35ID:hhKhRwzz
closeすべきものをしないで終了した時どうなるかなんてのはどちらかといえばOS寄りの問題だし
いい加減なことしてるのに保証してくれる人なんかいるわけがない
自分しか使わないやつなら勝手にすりゃいいじゃん
0866デフォルトの名無しさん
垢版 |
2021/06/02(水) 19:11:31.11ID:qtmfAhQ7
readlines() の StopIteration は例外じゃないのか
0867デフォルトの名無しさん
垢版 |
2021/06/02(水) 20:52:33.85ID:d1/ncfWF
どこでどうやってどんな例外をキャッチするか考えるのが楽しいのに
0869デフォルトの名無しさん
垢版 |
2021/06/03(木) 02:58:57.78ID:jthF3aHA
jupyter notebookの入力補完を使ってるんですが、文字を素早く入力すると勝手に確定されてしまいます
何か対策はないでしょうか
0873デフォルトの名無しさん
垢版 |
2021/06/03(木) 08:09:56.06ID:Nz5dmiB8
ファイル処理ってかなり例外起こりやすい方のものだと思うけどなあ。
ファイルがない、パーミッションがない、書き込むのに必要なディスク容量が足りない、読み書き中にストレージとの接続が切れてそれ以上続けられなくなった、とか。
0874デフォルトの名無しさん
垢版 |
2021/06/03(木) 10:15:14.07ID:oKNqyVQK
printの戻り値もちゃんと処理汁
0875デフォルトの名無しさん
垢版 |
2021/06/03(木) 10:53:17.24ID:7fzpIauE
バージョンごとの新機能をまとめたページ教えて
type hintingあたりからついていけません
0877デフォルトの名無しさん
垢版 |
2021/06/03(木) 11:57:02.61ID:NRqgjvXI
クロージャーについてなんやけど
クロージャーて状態を保存するのがメリットみたいやけどこれって要はインスタンス変数とやってること同じやよね
いちいちインスタンス化してると冗長になるからクラス作るほどじゃない処理に使うってことでいい?
0879デフォルトの名無しさん
垢版 |
2021/06/03(木) 20:31:02.33ID:jthF3aHA
私の環境っぽいですね
文字が重複して入力されるんで困ってますがどうにもならないんで入力補完止めることにします
0880デフォルトの名無しさん
垢版 |
2021/06/03(木) 20:42:07.21ID:z4cztZ+j
>>877
同じことができるけど
関数として表現したいのか
オブジェクトとして表現したいのかの違い
0881デフォルトの名無しさん
垢版 |
2021/06/03(木) 22:55:09.14ID:yQsEsK9g
pyenv initが出来ないのですがどうしたらよいかわかりますか?

macにpyenvをインストールして.bashrcと.bash_profileに
パスを通す書き込みも終えています。

pyenv initをすると下記のエラーが出ます。
# (The below instructions are intended for common
# shell setups. See the README for more guidance
# if they don't apply and/or don't work for you.)
# Add pyenv executable to PATH and
# enable shims by adding the following
# to ~/.profile:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
# If your ~/.profile sources ~/.bashrc,
# the lines need to be inserted before the part
# that does that. See the README for another option.
# If you have ~/.bash_profile, make sure that it
# also executes the above lines -- e.g. by
# copying them there or by sourcing ~/.profile
# Load pyenv into the shell by adding
# the following to ~/.bashrc:
eval "$(pyenv init -)"
# Make sure to restart your entire logon session
# for changes to profile files to take effect.
0883デフォルトの名無しさん
垢版 |
2021/06/03(木) 23:52:32.37ID:xoFGjtQh
公式で用意されてるmacOS用のインストーラとそれについてるvenvでやったほうが楽でないかい?
0884デフォルトの名無しさん
垢版 |
2021/06/03(木) 23:55:40.34ID:yQsEsK9g
>>882
ありがとうございます。
bashではpyenvは使えないってことでしょうか?

>>883
envを調べてみます
0886デフォルトの名無しさん
垢版 |
2021/06/04(金) 01:50:06.87ID:B2zNvZsu
すみません
pythonで趣味のサッカーの統計とか機械学習で勝敗予想とかできたらなぁと思って最近始めた者です。if、for文を使った簡単なコード、エクセルの読み書き、スクレイピングなど一通り勉強して初心者脱出したかなぁくらいです。
機械学習の本を立ち読みすると結構難解で手が出しづらいのですが、こんな本がいいよとか、次何勉強するといいよあればとか教えて頂きたいです。
0889デフォルトの名無しさん
垢版 |
2021/06/04(金) 06:18:08.16ID:cRyUwDm7
>>886
とりあえずオライリーの魚のやつが機械学習の入口に最適かなと思う
0891デフォルトの名無しさん
垢版 |
2021/06/04(金) 09:20:15.89ID:B2Hze9b2
機械学習は理論むずいからな
最低限統計学と線形代数を講義で習ってないなら理論から入るよりもコードで動かしながらやった方がいいと思う
その場合本よりもネット上にある機械学習体験コースかな
0892デフォルトの名無しさん
垢版 |
2021/06/04(金) 09:58:48.22ID:XSEjTbdI
>>886
数学
0893デフォルトの名無しさん
垢版 |
2021/06/04(金) 10:41:39.55ID:+b2D6xvw
>>881
漏れは、Ruby on Rails で、
Windows 10, WSL2, Ubuntu 18.04, Docker でも、環境構築できるようになった。
VSCode の拡張機能、Remote WSL, Remote Container も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

これでも依存関係が難しいのなら、Docker Compose を使う
0894893
垢版 |
2021/06/04(金) 10:54:12.07ID:+b2D6xvw
Ubuntu 18.04, anyenv では、~/.bashrc に、

export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

これだけで全言語、/home/ユーザー名/.anyenv/envs/ 以下に入る

which ruby
/home/ユーザー名/.anyenv/envs/rbenv/shims/ruby

which node
/home/ユーザー名/.anyenv/envs/nodenv/shims/node

これでも依存関係が難しいのなら、Docker Compose が良いかも
0896デフォルトの名無しさん
垢版 |
2021/06/04(金) 16:18:44.37ID:tVKHcgFl
CPythonのソースコードを一部ブログで引用したいです
公式の引用ルールを調べましたが特に定義は出てきませんでした
海外のブログなどはがっつりソースコードを記事にのせてるところもあります
一部分の引用なら特に問題ないという認識なんですが、この認識で問題ないでしょうか?
0897デフォルトの名無しさん
垢版 |
2021/06/04(金) 16:50:41.20ID:GwKOpW33
引用ルールってなに?ライセンス以外にそういうのがあるの?
0898デフォルトの名無しさん
垢版 |
2021/06/04(金) 16:58:05.10ID:tVKHcgFl
>>897
引用についての公式の見解のことです
調べましたが出てきませんでした
スタックオーバーフローなどのQ&Aも出てきません
たぶん引用が当たり前すぎるので、誰も質問もしていない感じでしょうか?
0899デフォルトの名無しさん
垢版 |
2021/06/04(金) 17:05:10.09ID:xxsePxeY
>>898
「著作物/引用ルール」でググれ
一般常識の範囲だから、文化庁か法律家のサイトがおすすめ
0902デフォルトの名無しさん
垢版 |
2021/06/04(金) 17:26:41.44ID:SUVTI0z/
https://qiita.com/bremen/items/c5aa9446e73aa4bc1de0
ossライセンスについての記事

調べたらcythonはApache Licenseみたい
てかossなんやから引用するのは自由やぞ
引用したものを改変してプログラ厶組んだときにそれを公開しないといけない義務があるライセンスのやつがあったりするだけで引用はなんならまるっと全部コピペしても何も問題ない
そんなこと普通せんと引用元のURL貼るけど

あとは一般的な引用ルールに従って引用したなら引用したと明示すればok
0903デフォルトの名無しさん
垢版 |
2021/06/04(金) 17:35:15.87ID:tVKHcgFl
>>902
回答ありがとうございます
OSSの引用で訴えられたという事例もないと思うので、問題ないというのが一般的な認識ですかね
0904デフォルトの名無しさん
垢版 |
2021/06/04(金) 17:44:54.37ID:SUVTI0z/
普通に個人がブログに貼るだけなら大丈夫
ソースコードを利用して作ったアプリで金儲けしてるのにライセンス違反でコードを公開しなかったりするとossだけど著作権違反だったかそれに近い感じのもので訴えられることはあると思う

あとはossと違ってソースコード開示してても著作権は保持してて再配布の禁止とかしてる場合もあるからそういうのの引用は知らん著作権者に尋ねるべきやと思う
0907デフォルトの名無しさん
垢版 |
2021/06/04(金) 18:25:13.66ID:SUVTI0z/
>>906
あほんとやすまん
ライセンスも違ったわ
まあどっちみちossやから今回の引用に関しては問題ないやろ
0909デフォルトの名無しさん
垢版 |
2021/06/06(日) 05:06:01.96ID:v26ARvQ7
arr1 = [["北海道","札幌市"],["青森県","青森市"],["岩手県","盛岡市"],["宮城県","仙台市"],["秋田県","秋田市"],["山形県","山形市"],["福島県","福島市"]]
arr2 = ["秋田県","福島県"]
という2つの配列があったとして
[['秋田県', '秋田市'], ['福島県', '福島市']]という配列がほしい場合、

arr3 = []
for x in arr2:
....for y in arr1:
........if y[0] == x:
............arr3.extend([y])
以外にいい書き方ってありますか?
0911デフォルトの名無しさん
垢版 |
2021/06/06(日) 06:59:38.38ID:TkNBt396
arr2はsetにしないと遅いよ
0912デフォルトの名無しさん
垢版 |
2021/06/06(日) 07:53:08.95ID:RJFSPZSM
2要素ならsetより配列の方が速いんじゃね
Pythonの実装にもよるけど原理的にはそのはず
0913デフォルトの名無しさん
垢版 |
2021/06/06(日) 08:13:26.50ID:b+8h8Rir
2要素ならそりゃまあ…
一般的な話
0915デフォルトの名無しさん
垢版 |
2021/06/06(日) 12:20:46.75ID:n+sQSuEO
inの比較は2要素でもsetのほうが速いよ
このケースは都道府県のほうをdictにするから使わないだろうけど
0916デフォルトの名無しさん
垢版 |
2021/06/06(日) 12:54:39.41ID:DGB8ER8o
pathlibのis_dirとis_fileてありますけど
必ずどちらかですよね? どちらにもTrue/Falseを返すやつはいませんよね
0917デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:00:32.07ID:DGB8ER8o
あ、実在パスをiterdir()したときの子パスの話です
0920デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:24:39.82ID:c7m87H9N
究極的にはファイルシステムやOSの実装に依存して、そんな変なものが未来永劫ないという保証はないだろうから、pathlibではそこは担保できないんじゃないかな
0921デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:27:50.67ID:DGB8ER8o
>>918
windowsだと.linkはis_file()なんすよね
共有フォルダはdir
思いつく限り試したけど、何かあるのかなあと思って
0922デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:46:38.97ID:RoRkDiVo
リンク先が存在しないシンボリックリンクは両方Falseになるけど実害はないんじゃね
0923デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:48:43.76ID:NyhjUSek
あーリンクってリンクファイルじゃなくて元を見てるのか
まあそりゃそうだわな
0925デフォルトの名無しさん
垢版 |
2021/06/06(日) 14:51:43.74ID:jCNfz170
numpyのインストールって、コマンドプロンプトにpip打ち込んで入れるのと
Anacondaで入れるのとどっちがいいの?
どっちも変わらない?
0927デフォルトの名無しさん
垢版 |
2021/06/06(日) 16:06:37.19ID:9mmqAG88
anaconda入れたら普通に入ってる
0928デフォルトの名無しさん
垢版 |
2021/06/06(日) 16:41:40.72ID:H95uLz2j
anacondaとかいう産廃使うのいい加減やめにしないか?
さすがにもうpoetryに移行しよう
0931デフォルトの名無しさん
垢版 |
2021/06/06(日) 20:59:25.29ID:pepoJCiR
質問させてください
Raspbian環境下(環境A)で
簡単なpythonプログラムを作って
python -m compileall aaa.py
を実行してpycファイルを作って実行したらちゃんと動作しました

もう一台のRaspbian環境(環境B)で同一のpycファイルを実行すると

./aaa.pyc
./aaa.pyc: 行 1: $'\003\363\r': コマンドが見つかりません
./aaa.pyc: 行 2: 対応する ``' を探索中に予期しないファイル終了 (EOF) です
./aaa.pyc: 行 8: 構文エラー: 予期しないファイル終了 (EOF) です

というエラーが出て動作しませんでした。
色々調べたのですが何が問題なのかわかりませんでした。
アドバイスお願いします

環境A、環境Bともに

Python aaa.py
で動かす分にはどちらの環境でもちゃんと動作しますが
環境Bではpycが動かない という状況です
0933デフォルトの名無しさん
垢版 |
2021/06/06(日) 21:40:22.53ID:pepoJCiR
>>932
環境Bでpycファイル作って実行したら上記のエラーが出たので
環境Aからpycファイルコピーして実行してみましたが同様のエラーが出ましたね
0934デフォルトの名無しさん
垢版 |
2021/06/07(月) 10:52:48.03ID:BLDePS2Q
環境Aから環境Bに.pyと.pycどちらもコピーしろ
0935デフォルトの名無しさん
垢版 |
2021/06/07(月) 13:45:43.59ID:Jn08avwf
プレシの寸劇がうーたんが辛辣な扱い受けてて好き
0937デフォルトの名無しさん
垢版 |
2021/06/07(月) 17:33:13.64ID:wssteHEM
初めまして、質問させてください。
windowsとmacだとコードが違うらしいんですが、具体的にどのように違うのか教えてるサイト等ありますか?
または変換してくれる何かがあったりしますか?
0938デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:01:13.24ID:j6zJ7cwJ
>>937
質問が曖昧だからあれだけど
・プログラムの内容(コード)ではwindowsとMacで違いはない(どっちも同じ書き方で動作する)
・ただし両者で『文字コード』(デフォルトエンコード)は異なるので、
 テキストファイルとかの読み込み/書き出し処理に、文字コード違いでエラーになる可能性はある
 (文字コード周りの設定をちゃんと確認すればこの辺は大体何とかなる)
0939デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:23:55.86ID:wssteHEM
>>938
返事ありがとうございます、MACで作ったコードをダウンロードしたんですが、私Windowsなのでそのままでは使えないと思っていました。
文字コードをもう少し調べてみることにします。ありがとうございました!
0940デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:37:34.26ID:7qZ7vyBh
x = 1
s = "var is {x}"

print -> "var is 1"
が欲しい。どうにかなりませんか
変数の文字列にf当てたいというか…
0941デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:55:46.43ID:ipT3dgeq
f当てたいって知らんけど
こういうことなの
def printvar(var):
print('var is {}'.format(var))
printvar(1)

>>931
pycをbashで実行したら同じエラーがでた
0944デフォルトの名無しさん
垢版 |
2021/06/07(月) 19:51:20.15ID:ipT3dgeq
欲しいのは
x=1
s=f"var is {x}"
print(s)
なのか
汎用的なのにするための関数が欲しいのかと
思ったけど
0945デフォルトの名無しさん
垢版 |
2021/06/07(月) 19:57:41.93ID:7qZ7vyBh
む?
すいません、言葉が足りなかった
sは事前定義でstr固定でいじれず、xだけがあとで動的に代入される感じです
例えばconfigparserの取得文字列に変数当てたいという
0946デフォルトの名無しさん
垢版 |
2021/06/07(月) 20:00:04.84ID:k2+fmGQH
>>938
ほかに
Linux系しか使えない命令
Macでしか使えない命令
WInでしか使えない命令
  があるようななな・・・?
0948デフォルトの名無しさん
垢版 |
2021/06/07(月) 20:11:50.53ID:m2IU34uB
formatでもf文字でもどっちでも構わんけど気分でごちゃ混ぜにするのはやめてくれ
0950デフォルトの名無しさん
垢版 |
2021/06/07(月) 21:42:39.88ID:CltRSTuB
f'{n}'が文字数も少なくて一番簡単でわかりやすいのにわざわざ.format()で書くのってなんか意味あるの?
0951デフォルトの名無しさん
垢版 |
2021/06/07(月) 21:56:36.72ID:TK3hG12A
変数展開を遅延させたいからだよ

遅延評価するにはf-stringだと関数でくくる必要があるのと
テンプレート文字列をコード上にリテラルで書く必要があるので
こういう用途の場合は今のところstr.format()かTemplateクラス使う
0953デフォルトの名無しさん
垢版 |
2021/06/07(月) 23:05:20.97ID:x/kbgdh0
logging以外は全部str.formatにしてるわ
0955デフォルトの名無しさん
垢版 |
2021/06/08(火) 02:05:33.12ID:QU85yBSR
3.4(Win XPラスト)のために、それ以降に登場したf文字列のような手法やメソッドは使わないようにしてる
subprocess.run() の代わりにsubprocess.Popen() でシコシコやったり…
0957デフォルトの名無しさん
垢版 |
2021/06/08(火) 13:07:58.64ID:6SttzhsF
python入れたらpipが付いてくるってどこのサイトにも書いてあるけど、コマンドプロンプトでpipのコマンドを打っても認識されない
'pip' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
どうすれば使える?
0959デフォルトの名無しさん
垢版 |
2021/06/08(火) 13:22:16.83ID:XwHmRNqr
>>957
windows使ってる?
自分も何故かpipだけ動かなくて焦ったけど、パソコン再起動させたら動くようになった
あとシェルコマンド(正式名称わからん、青い画面)で試してみたら?
0960デフォルトの名無しさん
垢版 |
2021/06/08(火) 13:34:36.82ID:oCdJgv/h
どこのやつをどのようにしてインストールしたのか
公式windosインストーラー版ならAdd Python 3.x to PATHにチェック入れずにインストールするとpath通ってない
0961デフォルトの名無しさん
垢版 |
2021/06/08(火) 14:01:00.16ID:X0jbV2ox
>>957
インストール・ルートと、ScriptsディレクトリをPathに加える
%ProgramFiles%\Python39
%ProgramFiles%\Python39\Scripts
0962デフォルトの名無しさん
垢版 |
2021/06/08(火) 17:01:22.12ID:dOMi6vvz
Windows のPowerShell では、環境変数PATH は、; で区切り。
$env:Path.split( ";" )

Python を含むPATHなら、
$env:Path.split( ";" ) | Where-Object {$_ -like "*python*"}

Linux の環境変数PATHなら、: で区切り。
echo $PATH | tr : "\n"
0963デフォルトの名無しさん
垢版 |
2021/06/08(火) 18:20:40.58ID:KCPagTB6
windows公式ならpath通すやつにチェック初めからついてる
わざわざ外すとも思えんので取り敢えず再起動してみよか
0964デフォルトの名無しさん
垢版 |
2021/06/08(火) 18:43:29.68ID:zMtx/HCT
%USERPROFILE%\AppData\Roaming\Python\Python38\Scripts
これも場合によっては必要(というかこっちをメインにすべき)。
Windowsの場合は、pip使うときに--userを付けないと問答無用でPython本体の方に入れようとするので。
0967デフォルトの名無しさん
垢版 |
2021/06/08(火) 21:32:06.65ID:5GftIHto
getter(target):
__return eval("{target}_var.get()")

関数内で使われる(ユーザー入力と関係ない)evalですが
やっぱり避けるべき? こういうのは別にいい?
0968デフォルトの名無しさん
垢版 |
2021/06/08(火) 21:36:16.68
クラス変数を変更しようとしたときエラーを吐かせたいんですけど
どうするのがいいでしょうか

現状、
class A:
_# 変更しないでください
_TEST = 100
a = A()
みたいにしています。

できれば、self.TEST=、a.TEST=、A.TEST=
それぞれで変更しようとするとエラーを吐かせられたらなと。
前半2つはセッターでできましたが、結局A.TESTで変更できてしまうし
そもそもクラス変数を変更”してしまうミス”にそこまで注視しないといけないのかな?とも思い
変更しないよう注意喚起・自粛するだけに留めておくのがいいのかどうか迷っています
0969デフォルトの名無しさん
垢版 |
2021/06/08(火) 22:00:39.38ID:A0D+JkMn
>>968
一番手っ取り早いのはメンバ変数の頭に__(アンダースコアを2つ付けて)
プライベート変数扱いにする
詳しい書き方とかはググると出てくるけど、この辺かな
ぶっちゃけ『注意喚起する』っていうのは大体地雷化するから、正当な方法で実装した方が良い

https://docs.python.org/ja/3/tutorial/classes.html#private-variables
https://www.headboost.jp/python-property/
0972デフォルトの名無しさん
垢版 |
2021/06/08(火) 22:36:55.06ID:5GftIHto
>>971
あ、ほんとうですね
でもうちの場合は中で微妙に処理が異なるので分岐がいるのです(getする範囲が違うとか)
evalないとif連打か辞書使うとかになるけど、それでも回避推奨なのかなと思って
0973デフォルトの名無しさん
垢版 |
2021/06/08(火) 23:19:28.78ID:JbMjUK2X
検討すればいいんじゃ
自分で使うだけなら問題ないし
ネットでつながっても隔離されてれば問題ない
検討が面倒なら使わないと決めたほうが
楽な場合もある
0974デフォルトの名無しさん
垢版 |
2021/06/08(火) 23:24:47.79ID:UcvX2QEY
>>972
getattrとかリフレクション系のビルトイン関数使えば十分じゃない?
tkinterならそれも必要無いと思うけどね
0975デフォルトの名無しさん
垢版 |
2021/06/09(水) 00:16:11.63ID:BQ0ecELC
>>973
python関係ないけどevalて双方向通信のときにヤバいんでやめましょうね、だけですよね
0977デフォルトの名無しさん
垢版 |
2021/06/09(水) 02:09:05.41ID:NxdIgDtt
書けるけどゴチャつくって話でしょ
しかも別に対話しないなら使ってもいいしな
0978デフォルトの名無しさん
垢版 |
2021/06/09(水) 07:16:34.25ID:u3L+Vxsq
スレでえばる初心者
0979デフォルトの名無しさん
垢版 |
2021/06/09(水) 14:22:13.69ID:PlcFv7F9
どうでもいいけど上見たらくだらない質問の略だったのか
python蛇だからくだを巻いてるスレッドの略やと思ってた
0980デフォルトの名無しさん
垢版 |
2021/06/09(水) 15:58:48.26ID:o9EDXjUA
print(hoge.data[0][0][0][0])
を実行すると、値ではなく、
<NdArray(()) at 0x1c7b360b960>
が返ってきます。
このインデックスにある値を表示する方法を教えて下さい。

hogeは((1, 1, 8, 8))のNumpy多次元配列とのことで、
このprint文の直前で
hoge.data.zero()
とやっているので、すべての要素はゼロになっているはずです。
うまく表示できると値が「0」と表示されるはずです。
0981デフォルトの名無しさん
垢版 |
2021/06/09(水) 16:02:29.18ID:Gt06K9sH
getter(target):
__return getattr(self, [f'{target}_var').get()
__return locals[f'{target}_var'].get()
__return globals[f'{target}_var'].get()
0982デフォルトの名無しさん
垢版 |
2021/06/09(水) 16:59:23.95ID:ylbs+1ZI
getattrって存在すら知らんかった
これ本来はどういう用途のためにある関数なんだ?
0983デフォルトの名無しさん
垢版 |
2021/06/09(水) 18:33:02.13ID:J3IrN4Ey
tkinterならglobalgetvar()使うか
コールバック登録時にクロージャで変数をキャプチャしておけばgetattrは不要
0984デフォルトの名無しさん
垢版 |
2021/06/09(水) 19:31:32.53ID:2FVE2wAx
>>982
テスト用に便利
>>> for x in dir(obj):
... print x, ':', type(getattr(obj, x))
情報を得たり
クラス内の全テスト用関数実行するとか
関数の増減気にしないですむ
0985デフォルトの名無しさん
垢版 |
2021/06/09(水) 19:59:43.06ID:cSpjmop9
>>984
あーなるほど
便利かもしれない
0986デフォルトの名無しさん
垢版 |
2021/06/09(水) 20:41:17.87ID:WPb/eWBP
むー次スレ立てられなかった
>>987頼みます
0990デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:00:17.95ID:smul9M+b
>>982
黒魔術
0991デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:18:28.54
getattrの使いどころって、文字列としてメンバ変数名を扱いたい場合くらいしかない?
0992デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:42:16.34ID:WX9l2lHR
業務でリフレクション使ってるコードあったらrejectするけどな
ライブラリは仕方ないとしてギリでアノテーション
0993デフォルトの名無しさん
垢版 |
2021/06/12(土) 10:25:56.27ID:ZfyfTVcF
もう3.10が出るっていうのに、アノテーションを忌避する理由もないだろ。
0994デフォルトの名無しさん
垢版 |
2021/06/12(土) 10:59:57.74ID:dWkts0ub
通常コード内のリフレクションはダメ
ライブラリやアノテーション内のリフレクションはOK
かな
0999デフォルトの名無しさん
垢版 |
2021/06/18(金) 20:03:59.50ID:DfkSYr0N
1000デフォルトの名無しさん
垢版 |
2021/06/18(金) 20:04:37.80ID:DfkSYr0N
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 94日 12時間 44分 54秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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