[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 02/23 14:36 / Filesize : 173 KB / Number-of Response : 629
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その52【まず1嫁】



1 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 05:22:25.24 ID:IpHIsox4.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

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

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

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

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###

321 名前:デフォルトの名無しさん [2021/02/04(木) 21:04:09.36 ID:c560f9Nc.net]
python界隈は、ピップだのピップエンブだのパイパイだのパイエンブだの、固有名詞がダサすぎないかい。

322 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 21:06:02.85 ID:Rmua4RGj.net]
そもがモンティパイソンだからしゃーない

323 名前:デフォルトの名無しさん [2021/02/04(木) 21:16:08.40 ID:WFDJ+byI.net]
並列で実行しておきたい関数があって
ある条件に一致したら終了する関数なのですが
終了して、まだキューになく並列実行してなかったら再度並列実行したいと思ってます

下記で同時実行しているタスク数や実行しているか確認することはできるのでしょうか
実行中はTrueが入っていると思ったらちがいました

executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
f = executor.submit(test_sub,1)

if f=True:
f = executor.submit(test_sub,1)

324 名前:デフォルトの名無しさん [2021/02/04(木) 21:30:50.18 ID:xGlwnT6u.net]
競プロかなんかで時間ギリギリまで問題解きたいのか?

325 名前:デフォルトの名無しさん [2021/02/04(木) 23:46:00.85 ID:WzBF5t1f.net]
>>321
ぱいぱい!!

326 名前:デフォルトの名無しさん [2021/02/05(金) 07:49:10.98 ID:PjtyCIQW.net]
>>323
fはFutureオブジェクト

327 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:11:59.04 ID:aDktR5P1.net]
pythonのエラーの対応について教えて下さい
環境は3.6でエディタはAtomを使っています。

VBAとかだとどこでエラーが起きてもエラメッセージが帰ってくる思うのですが、
pythonだと関数から呼び出した関数で起きたエラーは、コンソールウィンドウに表示されず
メッセージ無しで止まってしまいます。
エラー対応で検索すると、Tryを使うとのことなのですが、
関数の始まりからtryで囲うやり方がベストなのでしょか?
全関数を以下の通り対応するのはスマートではないなと・・

def test():
try:
関数の中の全部の処理

except ****:

328 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:44:19.31 ID:j/7809a/.net]
普通に出力されるが

329 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:49:18.87 ID:T/OPgv07.net]
>>327
関数使うときにtryしたほうが良くね?



330 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 13:03:15.92 ID:mRakDWTP.net]
>>327
try使うときは
エラーがおきるかもしれない最小範囲のみをくくるべし

331 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 15:18:46.74 ID:f8nqzbTK.net]
最初にやった方法からさらにいい方法思いついてデータ量や実行時間が大幅に減らせたときの快感がたまらん

332 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:02:31.28 ID:zkrcBcSu.net]
それで、コードの可読性を損ねて、
後でどこを直せばいいかわからなくなることもしばしば

333 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:08:30.83 .net]
try:
 エラーでそうな処理
except:

334 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:11:08.41 .net]
途中で送信してしまいました
def
try:
 エラーでそうな処理
 return 11
except:
 エラー出たときの処理
 return 22

このエラー出たときに、エラー以外の処理を返すようなやり方はやめた方がいいですか?
エラーのときはExceptionなりでエラーをそのまま返す
みたいな

335 名前:デフォルトの名無しさん [2021/02/05(金) 17:19:11.95 ID:oYpVlEXM.net]
>>334
「エラー出たときの処理」でエラーから復旧したと言えるならそれでいいんじゃないか
呼び出し側で対応が必要ならExceptionを返すべき

336 名前:デフォルトの名無しさん [2021/02/05(金) 17:21:11.97 ID:oYpVlEXM.net]
× Exceptionを返す
○ Exceptionをraiseする

337 名前:デフォルトの名無しさん [2021/02/05(金) 21:02:16.92 ID:N5jEb7lV.net]
Jsonファイルのリストの中から、
価格の情報だけを比べて、
一番大きい価格を取り出す方法が分かりません。

{
"status": 0,
"data": {
"list": [
{
"price": "4172840",
"symbol": "BTC",
},
{
"price": "4104400",
"symbol": "BTC",
}
}
こんなようなJSONがあって、
リストの中の、priceだけを比較して、
一番大きい、priceを取り出す方法が分かりません、
上の例だと、max( "price": "4172840" "price": "4104400")
となると思うのですが、
どうやってリストの中の価格だけを取り出して、
一番大きい値を取り出せばいいか分からないです。

338 名前:デフォルトの名無しさん [2021/02/05(金) 22:23:34.72 ID:6/zDXCCK.net]
item = max(json_obj["list"], lambda i: i["price"])

339 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:36:41.20 ID:ltTaykUg.net]
ジェイソン!



340 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:57:54.64 ID:T/OPgv07.net]
410万ビットコインって幾らになるんだろう?17億円くらいかな?

341 名前:デフォルトの名無しさん [2021/02/05(金) 23:29:03.53 ID:N5jEb7lV.net]
>>338
ありがとうございます!
string indices must be integers
とエラーがでてまだ取れてないけど、、
もう少し調べて頑張ってみます。

342 名前:デフォルトの名無しさん [2021/02/06(土) 08:39:05.31 ID:UyfeHPoO.net]
今までpcで動かしてた機能をandroidで動かしたい
apkを作るにはkivy とbuildozerを使うらしい
こっちの環境作るのにも詰まってるけどそもそも今動いてる.py をそのまま使えるのかも分からない
何か書き換えとか必要?
そして環境構築方法詳しく載ってるサイトがあったら教えてください。

343 名前:デフォルトの名無しさん [2021/02/06(土) 10:54:46.58 ID:PohEB++t.net]
sl4a

344 名前:デフォルトの名無しさん [2021/02/06(土) 11:42:13.31 ID:IR3wWC2w.net]
sl4aは見つけたけどapkにしたいんだ....

345 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:29:12.16 ID:ROiZJzWf.net]
python のメソッドって
def hoge(x,y):
以下中身
まではわかるんだけど
終わりの区切りはどうなってるの?
空行できたらそこで終わり?
returnとかあればいいの?

346 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:40:24.90 ID:FU+/gIxh.net]
>>345
カラ行は無視で
なんか書いてある行のインデントの深さが変わったらそのブロックはおしまい

347 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:54:35.07 ID:ROiZJzWf.net]
>>346
インデントか
なるほど
ありがとうございます

勉強になりました

348 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:24:19.00 ID:FU+/gIxh.net]
>>347
体系化ずみのサイトなりテキストなりを一冊読んだ方が
遠回りにみえるかもしらんが
一番早道だぉ
ノシ

349 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:12:36.40 ID:6eQmSTNr.net]
>>337
Ruby では、文字列の値を、数値へ変換すればよい。
と言うか、変換するのが面倒なので、最初から数値で、やり取りすれば良いだけ

require 'json'

# 値が数値
json_1 = <<'JSON'
{ "a":1, "b":2 }
JSON

p JSON.load( json_1 ) #=> {"a"=>1, "b"=>2}

# 値が文字列
json_2 = <<'JSON'
{ "a":"1", "b":"2" }
JSON

p hash = JSON.load( json_2 ) #=> {"a"=>"1", "b"=>"2"}

# 文字列の値を、数値へ変換する
hash.each { |key, val| hash[ key ] = val.to_i }
p hash #=> {"a"=>1, "b"=>2}



350 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:26:54.07 ID:sxvkqNg5.net]
NG推奨ワード: Ruby

351 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:20:59.71 ID:8pppcqNFl]
>>337
https://ideone.com/2IifLw

352 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 22:21:18.88 ID:WYrAP15n.net]
for num in range(5):
print(num)
if num==3:
num=num-1

ていうのを動かすと
0,1,2,3,4
ていう結果になる。

0,1,2,3,3,3,......
ていう結果にしたいんだけどどうすればい?
下のような動きにしたい。
for i=0 to 5
print i
if i=3 then i=i-1
next

353 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:05:26.75 ID:l1Q4fjMo.net]
https://ideone.com/IjrjUd

354 名前:デフォルトの名無しさん [2021/02/06(土) 23:08:53.63 ID:s8ZQn1/T.net]
その例のコードで 0,1,2,3,3,3,...... って出力されるの?
やべーねその言語

355 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:10:49.88 ID:B5gVBJsh.net]
forじゃなくてwhileを使うのでは…

356 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:11:47.83 ID:Ye4r/rjw.net]
for i in range(5):
print (min(i, 3))

357 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:12:43.26 ID:9BgHZVUo.net]
for i in range(5):
____if i > 3 : i=3
____print(i)

358 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:15:55.88 ID:1hxtRDLK.net]
やりたいことはジェネレーターで無限ストリームっぽい気がする

359 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 00:16:21.39 ID:jpmL2+yv.net]
こういうこと?

i = 0
while True:
x = i
if i > 2:
x = 3
i = i + 1
print(x)



360 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 02:02:20.67 ID:QRtsbk1z.net]
[i if i < 3 else 3 for i in range(5)]

361 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 04:46:16.11 ID:9cKdY56s.net]
printせえよ

362 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:50:24.56 ID:JR5bkMUq.net]
>>352
まじほんと>>354だは…
351は偽Pythonをつかまされているのでは

363 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:10:55.34 ID:FFuFCGQD.net]
sorted関数はwindowsの名前順と同じようにソートするんですか?
natsort?

364 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:44:13.68 ID:KNf11SZT.net]
dictの型ヒント書こうとしているんだけど、TypeScriptみたいにキー毎に
値の型を指定するような芸当は無理だよね?

365 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:57:54.98 ID:7XkuYEp+.net]
>>364
typeddictとかいうの無かったっけ
tsと同じようなことできた気がする

366 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:24:42.44 ID:KNf11SZT.net]
すげぇ。ありがとう。

367 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:44:28.72 ID:kn8KLgWd.net]
>>363
Windowsのソート順は分からないけど

368 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:56:45.22 ID:+o5/+U2b.net]
>>367
windows上で、フォルダの中に名前順に並んだ複数ファイルがあって
これをそのままの順番で取得したいんですが、glob+sortedでいいのでしょうか?
windows上での並び順と異なる場合があるとかだと困るのです

369 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:00:38.24 ID:NCHwUWPY.net]
>>368
なんで困るの?



370 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:10:44.92 ID:7XkuYEp+.net]
sortedはnatsortじゃないです

371 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:11:22.42 ID:3B496xZd.net]
_1 と _01 の話でしょう。
エクスプローラは長さ判定の方が
優先順位が高いアルよ

372 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:33:32.29 ID:mFk3/GAA.net]
エクスプローラーのソート順は全角半角同一視とかロケール依存もあるでよ

373 名前:デフォルトの名無しさん [2021/02/07(日) 15:22:35.38 ID:FFuFCGQD.net]
スクリプト使用者は日本語環境のwindows
フォルダ内に任意の命名規則の連番ファイルが数種類混在する
つかわれる文字種は全半角日本語英語、数字と記号(文字化けした中国語っぽいやつはありえる)
例えば
.01.02
.あ001.い001
._01a._01b
という3ルールがひとつのフォルダ内にあって、命名規則は制限できない
エクスプローラー上で表示される名前順の並びに意味があるので、順番を保持したデータ構造を取得したい

です!

374 名前:デフォルトの名無しさん [2021/02/07(日) 15:31:29.22 ID:0RC+Q+w9.net]
あ、個々の連番ファイル作成者も日本語windowsのエクスプローラーで順番を確認してます

375 名前:デフォルトの名無しさん [2021/02/07(日) 15:39:10.65 ID:LHj1ntdf.net]
sortedは単なる辞書順

376 名前:デフォルトの名無しさん [2021/02/07(日) 15:54:16.47 ID:UfsgAoOW.net]
natも違う
windowsは.01→01と並べるけどnatは逆になる

377 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:09:32.73 ID:QRtsbk1z.net]
それを使って何がしたいのか分からないと見当違いになるかも知れないけど
ファイルへの処理を疎結合にはできないの?

あとはこれもnatsortと同じなのかな
sorted(paths, key = lambda x: int(x.name))

378 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:13:58.14 ID:kn8KLgWd.net]
そもそもWindowsと同じ並びにしなければならない理由が理解できないんだけど
どういう理由なの?
もし並び順に依存した処理が必要なんだっていうならばその実装がおかしいと思うけどな

379 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:22:59.73 ID:NCHwUWPY.net]
エクスプローラー上で表示される名前順に依存しなきゃいけないシステムってのがよくわからないけど
とりあえずnatsortのos_sorted()を試してみたら?
Windowsの場合はエクスプローラが使ってるAPIを使ってる

エクスプローラのソート仕様を100%把握するのは無理な気がするので
どういうテストケースを通ればOKとするかは事前に決めておかないと後で困りそう



380 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:25:23.50 ID:KNf11SZT.net]
windowsと同じにって言っても、ファイルシステムがFAT系とNTFSでも違った気がする。

381 名前:デフォルトの名無しさん [2021/02/07(日) 17:00:56.73 ID:FFuFCGQD.net]
>>379
あーこれですね。たぶん
ちょっと様子見つつ、動かしてみます。ホント助かりました

>>377
a, bさんがそれぞれ独自の連番データを持ってて、Aというひとつのフォルダに入力します
bさんは“エクスプローラーの名前順で”aさんのデータのあとに自分のデータを置くこと
aさんとbさんは異なる命名ルールを使って、第三者が“命名ルールを見て”群を区別できるようにすること
がルールです

そうして出来たAフォルダの中身を、自分が上から順に読み込んで処理する

みたいな…

382 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:11:24.53 ID:QRtsbk1z.net]
正規表現で群を分割してそれぞれの群に対して逐次処理していく
とかだと駄目なのかな?

単純にソートして順に処理していくとファイル漏れがあった時とかにバグりそう

383 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:25:25.92 ID:kn8KLgWd.net]
早々に破綻しそう
ユーザー名や更新日時を基準に考え直した方が早いよ

384 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:31:05.90 ID:JR5bkMUq.net]
ういんどーずあぷでーとである日地獄になりそう

385 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:42:05.53 ID:kn8KLgWd.net]
まずaさんとbさんのデータをわけなよ
その上でファイル名を正規化してソート出来る形にする
ソートの基準が違うものをソートしようとしてるから物事が複雑になる
なのでまずはソートの基準を揃えることから始めたら良いんじゃねーかな

386 名前:デフォルトの名無しさん [2021/02/07(日) 17:59:41.51 ID:Ezbk+4+j.net]
要するに
[".1", "10", "2", "1", ".2", "1"]
をwindowsエクスプローラー上の名前順
[".1", ".2", "01", "1", "2", "10"]
にソートするにはどうすればいいか的な話でしょ?

つか状況がクソだぞって指摘はしてあげるべきだろうが
そこを変えろって回答は論外じゃ…

387 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:10:18.26 ID:/kKFnkGm.net]
システムはエクスプローラーとか、特定のアプリのアルゴリズムに依存すべきじゃない。
ある日突然、変わるかも知れない。
API・規格が無保証だろ

自分のアプリは、自分で規格を定義すべき。
そうしないと、可搬性がなくなる

OS・ファイルシステムが異なると、結果が違ってくるから

388 名前:デフォルトの名無しさん [2021/02/07(日) 18:12:05.44 ID:RFMN3ZYm.net]
こういうメンドクセーもんは大抵はどっかの誰かが既に作ってあるハズだからpypiで探すか
標準で提供されてると見当つけて公式サイトを探す

自分が欲しいと思ったモンは99.99%の確率で他の誰かが既に実装してる

389 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:12:49.36 ID:NCHwUWPY.net]
>>386
命名ルールがわからないからそれで十分かどうかはわからない
ある時点のあるPCで見たエクスプローラの名前順をPythonで再現したいという話

命名ルールも再現したいエクスプローラのソート仕様の範囲も不明確なので事故るかどうかは運任せ



390 名前:デフォルトの名無しさん [2021/02/07(日) 18:31:26.56 ID:4v/nAOdw.net]
>>368
windows って explorer で表示したときの並び順と
プロンプトで dir で表示したときの並び順が
違うって知ってた?
0000
0001
1
111
10
20
みたいなファイル名で試してみ

391 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:39:15.86 ID:JR5bkMUq.net]
>>390
エクスプローラのソートとひとくちにいっても、
ターゲットのフォルダをあけた状態と
そこから左カラム右クリック新しいウインドウから開く でもいっこあけた窓の中で
順番変わる

392 名前:デフォルトの名無しさん [2021/02/07(日) 18:53:51.92 ID:cgYbYP7a.net]
この言い訳の山よw

393 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:54:51.98 ID:JR5bkMUq.net]
>>392
見本コードはようp

394 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:04:34.30 ID:uQM/ElP7.net]
並列処理をしているときに、何が実行されているか確認することって出来ますか?
キューに入って順番待ちになっているタスクも確認したいです。
WEBページを2〜3ページ並列で取得するようにしてるのですが、並列にしたときにデバッグで確認することも難しく教えていただければと思います。

395 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:05:55.85 ID:kn8KLgWd.net]
Pythonだとcelery

396 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:25:21.61 ID:3B496xZd.net]
9x年代の「accessの美しいsort順」の
再来かよw

アレの実装も凄いな

397 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 20:09:13.36 ID:kn8KLgWd.net]
>>386
そもそもユーザーがソート順変えたら破綻する仕組みに依存した設計とかどうしようもないだろ

398 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 20:11:08.97 ID:JR5bkMUq.net]
ユーザーが2個目のウインドウ開けてそっち見たらおしまいな件

399 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:30:52.36 ID:HPp7Agld.net]
https://docs.microsoft.com/ja-jp/windows/win32/api/shlwapi/nf-shlwapi-strcmplogicalw
windowsのpythonのos_sortedはこれで判定してる



400 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:33:41.58 ID:xkZ6C6tJ.net]
Behavior of this function, and therefore the results it returns, can change from release to release. It should not be used for canonical sorting applications.

だとさ

401 名前:デフォルトの名無しさん [2021/02/08(月) 00:38:44.29 ID:5J2edDoW.net]
>>398
横から
これで順番変わってる状態って見たことないけど、どういうファイル名の並びだとそうなるん?

402 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 02:14:42.69 ID:wlkdd0te.net]
ラズパイを載せたGoPiGoロボカーで、線虫脳シミュレート
https://www.youtube.com/watch?v=9kxty2qec4g

エラーを解決したので、試しに動かした

403 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 03:02:58.50 ID:wlkdd0te.net]
コードはGithubで公開されてるものを突っ込んだ

404 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 09:25:13.35 ID:wJ3JIqDy.net]
>>396
くわしく

405 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 09:29:15.28 ID:dM4oOJoS.net]
スイッチのONOFFに連動してアクション起こすものを作ってみたくてほぼ期待通りの挙動させられるようになったのですが、たぶんimportで他.py呼び出す時にエラー?になります。
スイッチONになればその都度実行してほしいのですが、一度きりしか実行されません。
importで呼び出す場合は回数制限のようなものがあるのでしょうか?

406 名前:デフォルトの名無しさん [2021/02/08(月) 10:17:14.59 ID:WsHYblSd.net]
どんなエラーがでてるか、そのまま貼った方がいいと思うな

407 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 10:58:40.46 ID:hgsCKB/O.net]
importの実行は一度だけ
なので関数にして都度実行

408 名前:デフォルトの名無しさん [2021/02/08(月) 12:17:07.33 ID:5JxS4RLe.net]
「importで他.py呼び出す時」
「importで呼び出す」
perlじゃないから考え方を変えろ

409 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:27:47.27 ID:yv+/ZfUq.net]
Pythonのimportは、COBOLのCOPYと同じと考えて良いですかね
ソースのその箇所に埋め込む感じの



410 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:44:47.59 ID:5KN+Fjzm.net]
>>409
全然違う
importは対象のモジュールがまだ現在のプロセスで読み込まれていない場合は読み込み、現在のスクリプトファイル内で使用できるようにする
COBOLの知識とか害悪でしかないから今すぐ全部忘れろ

411 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 13:10:02.10 ID:dM4oOJoS.net]
>>406
夜になりますが、そうしてみます。
while true:
if switch == true:
import action01
print("action01")
flag = true
else:
import action02
print("action02")
flag = false
みたいなコードで、printによる表示は正常にされていても、importでは呼び出せてないような挙動でした。エラーを吐いてるわけではありません。

>>407
ありがとうございます。
関数とimportの違いもわからないので、調べてきます。

>>408
プログラミングは昔Cのポインタで挫折したタイプなんでよくわかってません。

412 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 14:02:52.07 ID:hgsCKB/O.net]
>>409
>>411
Pythonのimportは名前空間にパッケージ名を登録してるだけ

import package # プロセスの名前空間にパッケージ名を登録
package.function() # packageに書いた関数を使う

import時、プロセス内に同じ名前のパッケージ名があれば読み込み不要だからキャンセルされる
なので >>405 のように一度しか実行されないってことになります

413 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:22:57.82 .net]
pandasのdropってディープコピーってことは
dropするたびに変数に入れないといけないってことですよね?
データフレームが大きいときその辺り気にしなければいけないのでしょうか

414 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:54:54.09 ID:0fSH6U0R.net]
Ruby でも、require・load は異なる

require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。
require はライブラリのロード、load は設定ファイルの読み込みなどに使う

つまり、ライブラリ・モジュールの読み込みは、1回で良いけど、
設定ファイルは再読み込みする事がある

415 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:10:14.07 ID:Ar0nSnLQ.net]
>>413
IOに比べたらカスみたいなもんだからどうでもいい
実際遅かったら直せばよい

416 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:50:16.85 ID:wJ3JIqDy.net]
推奨NGワード: Ruby

417 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:18:46.00 .net]
>>415
なるほどありがとうございます
とりあえずはまとめられる処理はできる限り一つにまとめてみます

418 名前:404 [2021/02/08(月) 21:40:53.51 ID:TgcbDI6H.net]
正解なのかはわかりませんが、なんとか期待通りの動きをするようになりました。
元々のコード:ttp://codepad.org/RgfCqXLD
変更後:ttp://codepad.org/C9YTzwaU

スイッチがONになったら反応、OFFでもう1つのアクション。
ついでにキャンセルもできるようにしようとするとフラグを2つ立てないとうまくいかなかったので、無駄に長くなってしまった気がします。
もしお暇でしたらアドバイス貰えれば幸いです。

419 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:44:11.22 ID:XWqxRkjb.net]
>>404
悪いがオリジナルは既に消えている。
が、どういうソート順なのか調べた人がいた。

それの紹介記事は残っていた
https://atsushieno.hatenadiary.org/entry/20050704/p2

webアーカイブに残っているかなぁ?



420 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:22:53.64 ID:XWqxRkjb.net]
>>419
アーカイブされていた
https://web.archive.org/web/19990224184613/www.asahi-net.or.jp/~ez3k-msym/comp/acccoll.htm

421 名前:デフォルトの名無しさん [2021/02/08(月) 23:57:12.05 ID:qlvhc88X.net]
親切な方誰か教えてください。
Python始めたいんだけど、どのバージョンをダウンロードしたらいいんでしょうか?
勉強用に買った本には3.6.Xをダウンロードしろと書いてあるんだけど、どうせ始めるなら最新の3.9から始めるのがいいんでしょうか?

422 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:03:22.35 ID:Vys7ayWD.net]
3.6で始めて欲しい機能が最新版にしかなかったら
その時移行する

423 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:05:25.90 ID:9lYAN9ot.net]
仮想環境があるから正直どうでもよい

424 名前:デフォルトの名無しさん [2021/02/09(火) 00:08:54.47 ID:gY4wTt7u.net]
>>422 422
ありがとう。とりあえず3.6で初めてみます

425 名前:デフォルトの名無しさん [2021/02/09(火) 00:33:28.54 ID:D2eLzUKh.net]
3.9でいいよ
・・・と言いたいが外部のライブラリが対応できていないものもまだ多いから3.8を勧める
3.6にあってそれ以降無くなった機能あったっけな?

426 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 01:08:10.84 ID:WN7fm/D8.net]
3.8だと思うように動作しないライブラリあったから3.6に戻した
それ以来,ずっと3.6

427 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 01:23:34.91 ID:iwKT59GY.net]
3を指定すると3.7.8か3.7.9あたりになるのが多い気がするからその辺が互換的にもよさそう

428 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 08:41:41.04 ID:ArPH6UCx.net]
>>419-420
読んでたら頭痛くなってきた…
これMSがちゃんと仕様公開しなきゃ駄目だよなぁ…

429 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 09:16:09.94 ID:oB9H/ghx.net]
教えていただきたいのですが、
tkinterでプログラムのスタートとストップボタンを作ったのですが、処理中は画面がフリーズしてしまいます。
tkinterは非同期モジュールらしく、
これを他のGUIモジュールに変えるとフリーズしなくなりますでしょか?



430 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 09:21:39.36 ID:LMsNGPvT.net]
非同期なのにフリーズするっておかしくね?

431 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 10:20:06.37 ID:fLSeggtA.net]
>>429
コード見てみないとなんともだけど
非同期のコードかかずにwhileで回してるだけになってるとか

432 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 11:42:31.22 ID:oB9H/ghx.net]
すみません、非同期とかよくわかっていなかったです。
ボタンが全く押せず、ブレークでwhile文から抜けるしかない状況です

import tkinter as tk
import tkinter.messagebox
import time

def start():
global stop_flag
  timer_time = time.time()
while stop_flag == False:
txt.insert(tkinter.END,str(time.time()-timer_time))
if time.time()-timer_time >5:
txt.insert(tkinter.END,str(time.time()-timer_time))
break

def stop():
global stop_flag
stop_flag=True

stop_flag = False
root = tk.Tk()
root.geometry("200x150+30+600")
end_button = tk.Button(root, text = "START", command =start)
end_button.place(x = 5, y = 10)
end_button = tk.Button(root, text = "STOP", command =stop)
end_button.place(x = 5, y = 40)
txt = tk.Entry(width=20)
txt.insert(tk.END,"0")
txt.place(x = 5, y = 70)

root.mainloop()

433 名前:デフォルトの名無しさん [2021/02/09(火) 11:59:05.97 ID:ngdRC2S+.net]
>>418
まずはこんな感じのswitch文を使うような状態遷移にした方がいいんじゃね
pythonにはswitchは無いからif-elseでやるしかないけど

不変でコンパクトならswitch〜caseで状態遷移したっていい|Marupeke-IKD|note
https://note.com/marupeke296/n/n62c1c4643931

11.リアルタイム制御とステートマシン
https://www2.denshi.numazu-ct.ac.jp/lego/NXT/nxtOSEK/2_kiso/realtime.html

434 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:05:59.09 ID:YRe7Jw73.net]
pandasで列aと列bの各値同士の計算結果を同じデータフレームに代入しようと思い

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c'])
df['c-a'] = df[['a','c']].diff(axis=1)['c']

と、してみましたが['c']が納得いきません
列ラベル名があるときも[:1]みたいに取り出したいのですがエラーでした

435 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:12:01.53 ID:YRe7Jw73.net]
訂正 >df['c-a'] = df[['a','c']].diff(axis=1)['c']
df['c-a'] = df[['c','a']].diff(axis=1)['a']
でした
この['c','a']の順は保証されるのかも気になります

436 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:19:02.92 ID:Vys7ayWD.net]
>>432
sleep(0.1)
txt.update()

437 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:20:02.81 ID:YRe7Jw73.net]
df['c-a'] = df[['c','a']].diff(axis=1).iloc[:,-1]

適当にやっていたらこれでいけました・・ >>434,435

438 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:43:29.24 ID:3rwMtM14.net]
>>432
start関数が5秒経つまでループしてて戻らないから
Pythonに限らずGUIの場合UIを動作させるにはメインスレッドを独り占めしちゃだめなのよ
>>436みたいなやり方もあるけど
sleepすらしない単純なループでの待ちは無駄にCPU使用率が上がるだけなので避ける
時間経過はタイマーイベントを使う
時間がかかる処理は別スレッドにする
という方向で考えた方がいいよ

439 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 15:54:12.06 ID:oB9H/ghx.net]
>>436さん、>>438さん
ありがとうございます。
タイマーイベント?を調べてみます



440 名前:デフォルトの名無しさん [2021/02/09(火) 19:52:16.41 ID:F09oemYA.net]
tesseractの他にocrのライブラリってありますか?
教えて下さい。よろしくお願いします。

441 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 20:42:00.18 ID:A4TUXs3r.net]
>>433
ありがとうございます。もうちょっとちゃんと勉強してみます。

442 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 22:37:06.14 ID:48/GVgda.net]
Pathlibで特定のフォルダ以下のファイルを全てglobして
全てのファイルに対して特定の処理をし
その後別のフォルダにディレクトリ構造を維持しつつ保存していきたいです

フォルダ構造を維持しつつ保存するために
hoge_dir - base_dir みたいなものをしてPathの差分だけを取得したいのですが、そういった関数は無いのでしょうか?

443 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 22:48:35.91 ID:48/GVgda.net]
Path(os.path.relpath)で出来ました

444 名前:デフォルトの名無しさん [2021/02/10(水) 00:20:56.79 ID:3asw//Zv.net]
relative_to()
ドキュメント、読もう!

445 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 07:56:31.78 ID:lV7BodTW.net]
イテレータを使わなければならない状況がきてようやく仕組みがちょっと理解できた
今までfor inで回せばほとんどのことに対処できてたので、どこで使うんそれって感じやったけど
やっぱり必要になって使うべき場面がこないと覚わらんね

446 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 08:02:53.10 ID:0JH6aNHf.net]
使わなくても実装は出来るけどな。

447 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 11:18:29.15 ID:4pogzqlY.net]
PySide2のQDialogをESCで閉じさせない方法ってありますかね

調べても出てこない

448 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 12:24:44.38 ID:QctJSG9o.net]
>>445
イテレータイマイチ使うシーンが想像できんわ

449 名前:デフォルトの名無しさん [2021/02/10(水) 13:05:03.29 ID:3asw//Zv.net]
頭から順に処理するならイテレーター
値は取り出すまで評価されない
リストは生成時に全要素が評価、展開されるから、長いとメモリを圧迫する



450 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 13:27:54.75 ID:2MYUAlGB.net]
ジェネレータイテレーターな

451 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 13:44:33.50 ID:k3XYYQgl.net]
>>448
for文使ってればイテレータ使ってる
rangeでもlisyでもstrでも同じようにfor文で回せるのはイテレータのおかげ

452 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:42:03.34 ID:li7FLtWZ.net]
扱う分野で必要なもの全然違うしね
必要になったら学べば良い

453 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:19.06 ID:deHLhqxB.net]
画像比較作りたいけど
おすすめのサンプルプログラムある?
二つ比較して
似ている割合みたいのとれればいいんだけど

454 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:55:11.67 ID:FCUwCs4l.net]
また宗教的な話をw
OPENCV,numpy.openvino のどれかを使いたまえ

455 名前:デフォルトの名無しさん [2021/02/11(木) 11:34:19.30 ID:n0GRjtoR.net]
>>447
ありますよ
もうちょっと頑張って調べなさい

456 名前:デフォルトの名無しさん [2021/02/11(木) 11:43:19.74 ID:n0GRjtoR.net]
>>453
https://www.imagazine.co.jp/%E9%A1%9E%E4%BC%BC%E7%94%BB%E5%83%8F%E6%A4%9C%E7%B4%A2%E3%81%AE3%E3%81%A4%E3%81%AE%E6%89%8B%E6%B3%95%E3%81%A8%E7%B2%BE%E5%BA%A6%E5%90%91%E4%B8%8A%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF/
https://qiita.com/best_not_best/items/669aaa9e1b8de647d29d
https://pystyle.info/opencv-match-shape/

457 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:01:49.66 ID:fibZz6ZJ.net]
GUIのテキストラベルを関数内で変更するには、そのテキストのインスタンス生成をグローバルで実施する必要があるのでしょうか?
main関数内でGUIを作成して、別の関数から呼び出そう、書き換えようとするとエラーが出てしまいます

458 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:42:10.00 ID:fibZz6ZJ.net]
追記です
もともとメインだけのプログラムだったのですが、処理部などを分けていくにあたって、上記問題となりました。
ボタンやテキストラベルが多いため、GUIだけでも分離できたらなと思ってます。

459 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 12:56:12.11 ID:9pKWi6uS.net]
エラーメッセージは飾りじゃないんだゾ
ちゃんと読むんだ



460 名前:デフォルトの名無しさん [2021/02/12(金) 13:28:10.74 ID:x9NfpsA7.net]
GUIってどれ使ってんの

461 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:35:33.64 ID:3wJJOYZl.net]
恥ずかしがらずに再現できるコードを出しましょう

462 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:15:13.03 ID:Xi6F12r7.net]
OCR使ってみたんですが画像にちょっとシミ付いただけでめっちゃ精度落ちるんですけど

463 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:25:54.79 ID:YkYoXOlY.net]
そんなもんだろ
実運用ならGoogle Vision APIとか使え

464 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:36:15.52 ID:Xi6F12r7.net]
d つこうてみる

465 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 01:13:14.19 ID:kyaOMlKJ.net]
ファイルfを新規open
なにか書く
*ファイルfをclose
*ファイルfを追記open
なにか書く
*ファイルfをclose
*ファイルfを追記open

(これを何回か繰り返す)

ファイルfをclose
ていうことをやってるんだけど、*印のファイルfをclose・ファイルfを追記openをdefにしたら
local variable 'f' referenced before assignment
ていうエラーが出てしまいました。
defの中でf=openて書けないんでしょうけど、こういう場合て繰り返しのところをコードのマクロとか部品みたいにできないのでしょうか?
ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。

466 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 01:43:32.68 ID:XqdE9YRe.net]
なんていうかwith使え

467 名前:デフォルトの名無しさん [2021/02/13(土) 07:57:55.39 ID:dvbWR5uB.net]
with使えっていうのは当然として、設計寄りの話としてDAOあるいはRepositoryと言われるパターンを勉強すると良い。

468 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 09:06:30.97 ID:+Dfn0XQq.net]
>>465
単にコーディングミス。
エラーの意味は分かるな?

469 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 10:52:08.28 ID:PYtZn7CJ.net]
>>465
Pythonの不便な点だな

def まくろ(何かを書く)
 ファイルfを開く
 何かを書く(f)
 ファイルfを閉じる

まくろ(何かを書く1)
まくろ(何かを書く2)

ってやるのが定番
でもC#とかなら「何かを書く1」に直接処理を書けるけどPythonは関数を定義しないと駄目だからいまいちメリットが薄い



470 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 17:08:03.41 .net]
今どきのプログラミング
https://video.twimg.com/ext_tw_video/1354709180309901313/pu/vid/720x1280/nOusy_VBfI6wXHi4.mp4

471 名前:デフォルトの名無しさん [2021/02/13(土) 17:42:30.74 ID:aD8q5Xup.net]
>>465
クロージャは?

def create_writer(f):
__fを新規作成
__def write(s):
____fを追記open
____sを追記
____f.close()
__return write

writer=create_writer(f)
writer(あああ)
writer(いいい)

472 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:56:29.59 ID:QOknjIyX.net]
+aでopenすべし

473 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:01:49.24 ID:QOknjIyX.net]
def write_to(file_path):
__def write(string):
____with open(file_path, '+a') as f:
______f.write(string + '¥n')
__return write

write = write_to("foo.txt")
write("foo")
write("bar")

474 名前:デフォルトの名無しさん [2021/02/13(土) 19:56:09.70 ID:hraNkxQy.net]
wrapする意味がほとんどない気がする。
都度ファイル名が変わるなら、一緒に渡す方が間違いないだろうし、
逆に固定でいいなら、定数にするか、上で出ているようにDAOに閉じ込める方がいい。

475 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 20:57:02.03 ID:PYtZn7CJ.net]
ケースバイケース

476 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:05:50.85 ID:QOknjIyX.net]
>>474
2つ意味がある

ファイル名を意識すべきレイヤーやタイミングと
何かを書き出したいレイヤーやタイミングが常に同じとは限らないので
その2つの関心事を分離できるという意味が一つ

もう一つはDAOでもファイルでもいいけど
それらが10個あった場合に同じコード(open/close)を10回書かなくてもいい

477 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:15:03.69 ID:OVGnVG6N.net]
質問者のレベルを考えれば毎回ファイル名を渡すほうが親切かもな

間違ってもDAOやリポジトリを持ち出すような話じゃない

478 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:19:47.12 ID:PYtZn7CJ.net]
>>477
質問者はファイル名の話なんてしてない
そもそも質問者は「なにか書く」をなんとかしたいと言ってるのに勝手に文字列を書くことで満足してるようなオナニー見せられて困ってるだろうな… ⇒ >>471, >>473
その上質問者のレベルとか何様なんだよ

479 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:52:40.18 ID:De6EzIPK.net]
ある時間が現在時刻より何時間経ってるかていうのを知りたいんだが

from datetime import datetime
d="2020/06/02 23:42"
x=datetime.strptime(d, '%Y/%m/%d %H:%M')
y=datetime.datetime.now()
print(x,' ',y)
last_time=(y-x)/3600

てやってみたんだが
type object 'datetime.datetime' has no attribute 'datetime'
というエラー

y=datetime.now()にすると
last_timeが1:42:23.156836という値
何百時間ていう数値を出せないんですか?



480 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:06:29.50 ID:Ylmwjazf.net]
>>478
この逆ギレは恥ずかしいww

481 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:09:24.90 ID:Jp6Ct9sY.net]
>>479
時間差はtimedeltaになる、それを数値で割るとこの場合255日を3600分割してしまうので
(y - x).total_seconds() / 3600か、(y - x) / timedelta(hours=1)とかかな
https://docs.python.org/ja/3/library/datetime.html#datetime.timedelta.total_seconds

482 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:14:28.96 ID:De6EzIPK.net]
>>481
できました。
結構狂った言語だな。
算術計算の結果は数値で出すべきなのに。
なんかpythonて直感的じゃなくて使いにくいな。

483 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:27:47.37 ID:PYtZn7CJ.net]
>>480
逆ギレとか意味わからん
まあ反論できない時に低能がよく言う言葉ではあるがw

484 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:39:31.79 ID:QOknjIyX.net]
>>478
ファイルに書くんだからファイル名は必要
指摘の意味がわからない

テキストじゃなくバイナリで書きたいなら’+a’を’+ab’とすればいい
ファイルに追記する場合はその2つのどちらかしかない

485 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:10:37.48 ID:D24G58JB.net]
>>484
> ファイルに書くんだからファイル名は必要
そんなことは質問者もわかってるだろ
一応実装はできててより簡単に書きたいって話みたいだし

とりあえず>>465はまだ見てたら
> ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。
の部分のコードを晒した方がまともな回答が得られると思う

486 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:13:47.53 ID:aLCsI6lK.net]
見た感じcloseとopenでなにしてるかわかってないように思う

487 名前:デフォルトの名無しさん [2021/02/14(日) 02:04:56.58 ID:2SnvaGjH.net]
>>478
身近にこういう奴が居なくて本当に良かった

488 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 03:15:01.82 ID:DLKN34Ks.net]
おっ

489 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 04:01:51.29 ID:m6EUmtlX.net]
>>485
464みたいな構造に書き直して見ました。
最初書こうとしてたコードはこういうことがしたかった。

def まくろ(何かを書く,関数名)
 ファイルfを開く
 引数で与えられた関数名の関数を呼び出す
 何かを書く(f)
 ファイルfを閉じる
ていうのがやりたかったんだけど、関数の中に動的に別々の関数を呼び出すことなんてできないよね。
#define マクロ名(引数リスト)みたいなことができれば実現できるのに。



490 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 04:10:04.36 ID:TDUjnB7+.net]
そのやり方で普通にできるよ

491 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 07:55:56.90 ID:D24G58JB.net]
>>486-487
技術的な話ができないならどっかよそ行けよ…

>>489
>>490が言うように複数の関数を受け取って両方呼び出すのも普通にできる

def foo():
 print('foo()が呼ばれた')


def bar():
 print('bar()が呼ばれた')

def test(f1, f2):
 f1()
 f2()

test()

辺りから色々やってみればいい
あと Python 関数 渡す とかでググればいいかと

492 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:46:04.70 ID:vizEsFtD.net]
最近はpythonでググると高確率で、nkmkというサイトに引っかかる
そこは目次が無いため、文字ばかりの細々とした説明の中から必要なコードを探さないといけないから、とてもストレス

493 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:47:27.53 ID:HIb/uJW+.net]
>>491
関数を呼び出すんじゃなくてソースコードをマクロ展開したいんだけど。
関数にしてしまうと変数のグローバル・ローカルという話が出てきてしまう。
単純に10行くらいのコードの一部を変えてコピーしたい。
defの関数てコードのコピーじゃないですよね?

494 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:19:31.18 ID:D24G58JB.net]
>>493
なんでそんなことしたいのかよくわからんけど、m4とかのマクロプロセッサでも使えばいいんじゃね

495 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:40:02.31 ID:8wuPGef8.net]
何が言いたいのかようやくわかった。
どんだけ質問下手やねん

496 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:40:35.87 ID:AzULVuFC.net]
>>492
イラストがいっぱいあって、
「今日はイテレーターの使い方だよ」
「何だか難しそう」
とかなってるサイトのほうがウザい。

497 名前:デフォルトの名無しさん [2021/02/14(日) 11:53:57.69 ID:PGTjJwEI.net]
>>482
馬鹿には無理

498 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:56:45.92 ID:1NfnFEsp.net]
>>493
デコれ

499 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:00:51.30 ID:IYZau0Ph.net]
>>493
Pythonにはその機能はないんで諦めてください



500 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:05:20.73 ID:BvP4KASJ.net]
>>496
「お願いします!」

501 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:09:30.76 ID:IYZau0Ph.net]
>>498
デコレータって、元の関数の動作はそのまんま残し、さらに別の動作を
付け加えた関数を作り出す機能っしょ
この人はコードの一部を変更したいって言ってるから無理ではないかと

502 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:12:44.45 ID:TDUjnB7+.net]
>>491
>test()
関数渡してないやないかーい!

>>493
変数のスコープを理解せずにプログラムは書けないので
最初のlocal variable 'f' referenced before assignmentのエラーの原因を調べたほうがいいよ
誰もが一度は通るエラーなのでググればすぐ分かる
公式のFAQにものってる

503 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:13:45.18 ID:LN4pPlYg.net]
>>500
あった、これだ。
https://techacademy.jp/magazine/46444

504 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:14:42.54 ID:vizEsFtD.net]
>>500
あれ、イラッとするよなw

505 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:21:38.55 ID:TDUjnB7+.net]
>#define マクロ名(引数リスト)
文字列を展開してそれをコードとして評価することはできるけど
今回のケースは関数を使えば解決可能なのでまずやらない
マクロと同等のことが普通のコードで実現可能

506 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 13:18:53.12 ID:m02xXjOP.net]
nkmkは最高に分かりやすいだろ
プログラミングスクール系のゴミ記事の1億倍見やすいわ

507 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 13:28:12.12 ID:D24G58JB.net]
>>502
> 関数渡してないやないかーい!
指摘サンクス、スマホでポチポチだから忘れてたわ

508 名前:デフォルトの名無しさん [2021/02/14(日) 13:36:25.18 ID:2SnvaGjH.net]
>>506
あとは目次にリンク張ってくれれば言うことない

509 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 14:56:48.08 ID:TDUjnB7+.net]
なぜ目次がページ内リンクになっていないのか
https://note.nkmk.me/faq/#_1

だってさ



510 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 18:37:52.94 ID:muFQjW+d.net]
無駄にマクロ使おうとしてるとか絶対地雷人材やろ。。

511 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:11:28.97 ID:MlHmhfGR.net]
対人地雷に見えた
ある意味では間違いではないか

512 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:18:07.67 ID:I1aFEzxm.net]
>>506
むしろググってnkmkが上のほうにないときに絶望する
残ったゴミとカスからしゃーなしマシな記事をあさるしかない

513 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:55:19.81 ID:5ILzfDiM.net]
>>511
にんげんさまはアルクセキュリティホールやでぇ

514 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 20:52:11.02 ID:k6Jk8aeh.net]
#define sqr(a) (a*a)

sqr=lambda a:a*a

515 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 21:53:27.56 ID:wJqWCA2o.net]
>>513
アルクに謝れ!

516 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 23:49:31.85 .net]
一週間ほど前にPython にバッファオーバーフローの脆弱性(CVE-2021-3177)が発表されましたが、パッチ同時リリースではありませんでした
その後、パッチは出たのでしょうか? この問題は解決済みですか?

517 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 00:24:39.78 ID:bVZY0HXF.net]
testDict = {"test1Key":"test1","test2Key":"test2","test1Key":"test1.5"}
こんな感じで、重複のkeyがある辞書から、重複要素をprintするにはどうしたら良いですか?

518 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 00:36:14.72 ID:Jl6Y5s68.net]
辞書はキーが重複することはありません

519 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 01:38:43.41 ID:doIMb1ii.net]
bound methodの中身を出力したいときってどうすればいいですか?



520 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 07:39:49.62 ID:x4VL8oQa.net]
>>515
わ、わるいのはM$IMEでっす!!!

521 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:32:59.59 ID:HtPzSKw3.net]
seleniumでchromedriverを使ってスクレイピングするとき、
長時間続けているとキャッシュが肥大化してきます
これをコードの中でクリアする方法はありますでしょうか?

522 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:55:43.22 ID:LUOktb/o.net]
別のスクリプトからsubprocessで間接的に起動しておいて、定期的に起動し直すとかかなあ

523 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:59:16.82 .net]
どうしてもseleniumでというならドライバ再実行でどうにかなったと思うけど
windowも閉じてしまうからそれが嫌だっていうなら
素直にscrapy使ってスクレイピングするのがいいかも >>521

524 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 14:35:17.03 ID:Jl6Y5s68.net]
chrome://settings/clearBrowserDataを開いて操作する方法もあるみたいだけど今のchromeだとShadow DOM使っててめんどくさいから
options = webdriver.ChromeOptions
options.add_argument("--disk-cache-size=バイト数")
driver = webdriver.Chrome(chrome_options=options)
みたいにしてキャッシュサイズ制限かけるとか

525 名前:520 mailto:sage [2021/02/15(月) 17:14:22.91 ID:HtPzSKw3.net]
やっぱり起動しなおすしかない感じですね
optionsでキャッシュサイズの指定は試してみたんですけど、効果ナシでした
例えば数十分おきとかでドライバ再実行する仕組みで試してみようかな

scrapy、初耳だったので調べてみましたがちょっと難しそうでした
少し勉強してみます

526 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 18:33:57.06 ID:rGrJfJAw.net]
こういうの
https://intoli.com/blog/clear-the-chrome-browser-cache/

527 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 14:05:18.83 ID:ipEDtskL.net]
Atomでコンソールから実行していて、無限ループになったりしてタスクマネージャで強制終了頻繁にしてるのですが、
見えないプロセスが残ったり、メモリーが変に残ったりすることはあるのでしょうか?

528 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 17:21:05.75 ID:tjl7Fm3+.net]
マルチスレッドとか使ってて全てのプロセスが殺せてないとか

529 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 17:49:43.59 .net]
Atom はプラグインのインストールに失敗する度に、そのNodeプロセスがゾンビ化する不具合があるゴミなのでVSCodeを使いましょう



530 名前:デフォルトの名無しさん [2021/02/17(水) 03:51:59.84 ID:zEY0Zwgw.net]
10万馬力も電気使っちゃうの?

531 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:17:14.64 ID:d05tkeIJ.net]
matplotでグラフタイトルを下部に表示したいです。

plt.title('x-latency graph', fontname='Times New Roman', y=-0.15)

とy設定をすることで一応下部に表示はされるのですが、
ウインドの大きさによってxラベルと重なってしまい、
上部に表示したときのようにきれいにはいきません。

なにかうまい方法ないでしょうか?

532 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:37:46.06 ID:ywbkeJkd.net]
pad=20みたいなのを追加してみるとか

533 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:42:46.98 ID:ywbkeJkd.net]
下ならpad=-10みたいにマイナスか

534 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:57:13.47 ID:d05tkeIJ.net]
pad試してみたのですが、ウインドウ小さくするとそうそうにXラベルと重なってしまいますね。
デフォルトの上部にしているとウインドウ小さくしても重ならないのですが、
こんなものなのでしょうか・・・。

でも、論文って下にタイトルって指定されるのに、なんでデフォルトが上になっているんだろう・・。

535 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:59:25.13 ID:ywbkeJkd.net]
plt.tight_layout()なら?

536 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:01:50.01 ID:ywbkeJkd.net]
論文の図のキャプションは図をレイアウトした先で図の外側に作るものでグラフの中には作らないから、余り気にしたことないな

537 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:09:20.61 ID:d05tkeIJ.net]
>>535
ありがとうございます。
さっきまでよりはだいぶ見やすくなりました。
でも、やっぱりウインドウ小さくすると破綻するのは上部より下部の方が早いですね。

上部にしといて、タイトルは割り切って別で入れるようにしたほうがいいのかな。

538 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:10:30.71 ID:d05tkeIJ.net]
実用上それで問題ないんですけど、
論文で下って教育されてると、上部タイトルがきてるといけないことをしているかのような強迫観念が・・・

539 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:09:43.11 ID:IAd8iDhz.net]
そこまでこだわりがあるならsubplotで2段にして下のプロット軸とか背景を不可視にしてタイトルを下のプロットのタイトルとして描く関数を作っとくとか



540 名前:デフォルトの名無しさん [2021/02/18(木) 10:25:28.59 ID:64/LOwh9.net]
>>531
https://qiita.com/renesisu727/items/24fc4cd8fa2635b00a0d
https://qiita.com/0NE_shoT_/items/31a77b6228159d6feb2e
https://qiita.com/nkay/items/d1eb91e33b9d6469ef51
https://qiita.com/skotaro/items/08dc0b8c5704c94eafb9
https://qiita.com/KntKnk0328/items/5ef40d9e77308dd0d0a4

541 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 18:54:08.48 ID:wTfx2HE+.net]
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な ことはよーくわかったよ。 ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw

542 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:54:32.87 ID:cqSbk4Yx.net]
等差数列的な1次元行列で転置を行いたい

(1)
a = np.array([[i for i in range(2, 5, 1)]])
a.T

(2)a.T表記ではない(and ディープコピーではない)
a = np.arange(2,5,1)
a.shape = (1,3)

(3)ワンクッション多い
a = np.arange(2,5,1)
a.shape = (3,1)
a.T

(4)
a = np.array([np.arange(2,5,1)])
a.T


(本音)
a = np.arange(2,5,1).T

543 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:14:50.29 ID:f56ThaA4.net]
np使わないとまともに配列扱えない欠陥言語だから仕方ない。

544 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:38:10.75 ID:vU7qRJsP.net]
はやくjuliaが主流になるといいよね

545 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:48:59.15 ID:bEmrZ2Tw.net]
542認定言語
julia
r

以下欠陥言語。使ってる奴も三流
python
c++
java
c#
rust
swift
js

546 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:16:09.86 ID:vQ0bM4Ab.net]
>>542
reshape

547 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:58:49.68 ID:cqSbk4Yx.net]
>>546
reshapeという文字自体が長いというのはあるけど、まさにこれって感じのやつだったd

548 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 01:03:54.01 ID:byh433rL.net]
juliaはたしかに良言語だと思う
使ったこと無いけど

549 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 02:56:37.19 ID:h/t0+GoU.net]
言語には二種類ある(ry



550 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 05:34:23.41 ID:473cJTkx.net]
lispみたいなガイジが好むけど実用されない言語と
pythonみたいな実用されるけどガイジから非難される言語だ

551 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 07:19:35.87 ID:dkFXvWzJ.net]
>>545
配列っていうか、行列だな。
Mコード(MATLAB)やFORTRANも行列扱えるよ。
確かにnp面倒くさい。

552 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 07:19:58.87 ID:ho6TCH2V.net]
行列使うならMATLAB系
numpyじゃあ全く代わりにならんしうんざりする

計算だけで済む話にpython使うのはアホらしい

553 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 19:22:35.73 ID:UVFRc2z2.net]
if 条件A:
真ならなんか処理して(if文グループの終わり)に行く
if 条件B:
真ならなんか処理して(if文グループの終わり)に行く
if 条件C:
真ならなんか処理して(if文グループの終わり)に行く

(if文グループの終わり)

ていうようなことをしたい。
elseで次のifを書いていくとインデントがどんどん右に行くんだがなんかいい方法ない?
考えたのはfor文の中にいれて真ならbreakてやったんだが、普通はどうかくの?

554 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 19:26:56.94 ID:8rw3YsL8.net]
>>553
elif

555 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:00:13.10 ID:UVFRc2z2.net]
>>554
レスサンクス。
if文の前に前処理があるやつだとどうする?

(if文グループの始まり

条件Aの前処理
if 条件A:
真ならなんか処理して(if文グループの終わり)に行く
条件Bの前処理
if 条件B:
真ならなんか処理して(if文グループの終わり)に行く
条件Cの前処理
if 条件C:
真ならなんか処理して(if文グループの終わり)に行く

(if文グループの終わり)

goto文でできるが、gotoてどの言語でも推奨じゃないよね?
なんかif文グループの入れ子を作って、入れ子を抜けるようなことてforでやるしかない?

556 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:19:47.88 ID:yv2d5Olu.net]
インデントがわからないからはっきり分からないが
並列なifなら関数化してearly return

557 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:24:45.22 ID:dkFXvWzJ.net]
>>555
何もないコードブロックって作れないよね?

無理やりifでコードブロックにして
if True:
  前処理A
  if 条件A:
    処理A
    break
  前処理B
  if 条件B
とかやれば出来なくもない。

558 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:27:13.31 ID:yv2d5Olu.net]
breakできるのはloop内だけじゃないかな

559 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:28:47.87 ID:8rw3YsL8.net]
>>555
while True:で始めてbreakで抜けるのが良いだろうけど、
本質的には処理はネストしてる(前処理Cは前処理A,Bを前提としている)ことを考えると、
if文をネストさせるかもしれないな。
それか前処理がエラーチェックだったらdefで切り出してreturnするか。
Cでリソース解放を必ずしたい場合とかはgoto使うこともあるけど、定石はないというか、ケースバイケースでif文使ったりgoto使ったりしてるな。
try/catchとかも制限付きgotoみたいなものだから、濫用しなければgoto使ってもいいと思うけどね。



560 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:29:07.83 ID:dkFXvWzJ.net]
>>558
for i in range(1):
とかしないとだめ?

561 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:37.71 ID:fFbWPHDZ.net]
if func1:
if func2:
if func3:
if func4:

562 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:06:38.25 ID:yv2d5Olu.net]
↓これでよくない?

def if_group():
__条件Aの前処理
__if 条件A:
____do_somethingA()
____return

__条件Bの前処理
__if 条件B:
____do_somethingB()
____return

__条件Cの前処理
__if 条件C:
____do_somethingC()
____return

563 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:02:39.45 ID:/remXlTv.net]
if_group() 呼ばないと。

564 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:22:00.93 ID:N/y0hS3O.net]
即席で関数定義する方がセンスよさげだが自分なら完了済みフラグ設けて済ませたな

565 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:49:34.69 ID:1Y17sdX3.net]
こういうんじゃあかんのけ?
a = 4
if (lambda: [print("hello"), print("world")])() and a == 3:
__print("foobar")
elif (lambda: [print("kon"), print("nichiwa")])() and a == 4:
__print("hogefuga")

566 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 02:07:34.86 ID:nciJ6+jd.net]
>>560
552だけどオレが思いついたのはその方法。
この手の処理て模範解答的にはどうやってやるんだろう?
フラグ立ててフラグが真じゃなければ次のifブロックに行かないとかやってたけど。
関数にするとコードが見にくくなるし、一回しか通らない処理を関数にするのも無駄なような。
オレが新入社員のときにやったCOBOLもどきのIDL2にはblock文てのはあって一回だけ実行するfor文みたいなものがあった。

567 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 02:40:31.51 ID:56yjs2OO.net]
>>565
コードから意図が全く読めんからあかん

568 名前:デフォルトの名無しさん [2021/02/20(土) 08:48:49.94 ID:Y+RPXUXT.net]
自分なら>>562にするな
アーリーリターン

569 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:49:50.45 ID:/remXlTv.net]
>>566
前処理とifがあるなら関数にまとめてもいいかも。
def processA():
  前処理A
  if 条件A:
    処理A
:
processA()
processB()
processC()

せっかくgoto追加してくれたんだから使えばいいか。



570 名前:デフォルトの名無しさん [2021/02/20(土) 09:25:41.17 ID:Y+RPXUXT.net]
>>555のいう前処理がわからんけど
それぞれでif文書いて、条件に早めにFalse返す関数使えば、別にネストもする必要ないじゃん

前処理って何やってんだよ
どうしても各分岐の前にがっつり処理しないとだめなんか?

571 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:42:23.67 ID:lyTdLi7+.net]
>>570
コードを晒すとこういうことをやってる。
これだとif elif elseじゃ書けないよな。
関数にするにしてもそれぞれやってることが違う。
559みたいにforを使ってみた例。

#ifグループの始まり

for i in range(1):
--o_btn=driver.find_elements_by_xpath('//input[@class="button"]')
--if len(o_btn)>0:
----f_x=f_x+1
----break


--o_btn=driver.find_elements_by_css_selector('div.btn_set>input')
--if len(o_btn)>0:
----f_y=f_y+1
----break


--o_btn=driver.find_elements_by_css_selector('div.btn_back>input')
--if len(o_btn)>0:
----f_z=f_z+1
----break


#ifが真だったらここに飛びたい。

572 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:57:26.42 ID:AfgxbbrB.net]
最初から変数3つ並べてif-elseでいいじゃん

573 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:58:54.20 ID:QmInm3o3.net]
同時成立でも問題なさそうだけど。

574 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 13:14:35.97 ID:QO6ABfSl.net]
インデントが2つだったり、3つだったりばらばらで作ってしまったんですけど、コレを自動で整形する方法ってありますか??

575 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 13:28:03.26 ID:EQ4Fmj1U.net]
>>574
ある程度の行数をまとめて選択して置いて「インデントをひとつ浅くする」なら
けっこう色んなエディタでできるとおもうんだが
虎刈りになってるならあきらめろん

576 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:29:20.46 ID:56yjs2OO.net]
>>574
autopep8かblackで自動整形できるよ

577 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:32:57.68 ID:TBTHb+Gp.net]
black使ってるけど1行あたりの文字数だけは弄って150にしてるわ
デフォだとキツすぎディスプレイ縦置き専用かよと

578 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 18:32:17.48 ID:56yjs2OO.net]
>>571
“ifグループ”と呼んでるものに名前をつけて関数化するほうがベターだと思うけどif-elseでも書けるよ

579 名前:デフォルトの名無しさん [2021/02/21(日) 00:57:40.63 ID:aCzr4+Gv.net]
君たち>>571みたとたん明らかにやる気なくしてるよね



580 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:09:16.38 ID:f0EcfH0m.net]
if len(o_btn := driver.find...) > 0:
elif ...
3.8以上限定

581 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 02:40:07.07 ID:G4m9GHw4.net]
blackはやりすぎだなと思うことあるわ。
コードを見やすくするためのコードフォーマットなのに逆に見辛くなるとか本末転倒すぎる。

582 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:56:32.45 ID:XsukC5HX.net]
そうだよなblack lives matterはやりすぎニガーは調子に乗るな!

583 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 08:27:14.13 ID:YmTCK60y.net]
構造体データて扱えるの?
こういうやつ。
01 従業員.
----05 従業員番号 PIC 9(7).
----05 従業員名 PIC X(30).
----05 入社年月日.
--------10 入社年 PIC 9999.
--------10 入社月 PIC 99.
--------10 入社日 PIC 99.

584 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 09:35:10.61 ID:VYudgr0a.net]
>>583
無論おk

585 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:28:26.05 ID:/Mh4iWCM.net]
>>583
年月日に20210221突っ込んで
年で2021だけ取り出すには工夫がいるかな

586 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:31:13.67 ID:UiySRn99.net]
わざわざ分けなくても datatime で持てば良くない?

587 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:36:40.26 ID:9qukVfwV.net]
>>583
COBOLの知識は完全に全て忘れろ。今すぐに。
Pythonでは固定長レコードは一切使わない。CSVやJSONのような可変長データを使う。

588 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 16:54:13.00 ID:3wKXGD51.net]
>>583
プログラム内の表現として扱うという意味なら自分でクラスを定義するだけ

文字列、数値、日付みたいな型は標準であるけど「30文字以内の文字列」みたいな型はないので
従業員クラスに自分でバリデーションを追加するか独自の型を定義するか

COBOLで書き出した構造化ファイルのデータをPythonから扱えるかという意味なら
ファイルフォーマット次第だけど簡単には扱えない
CSVとかのテキストフォーマットに書き出したものをPythonで読み込むほうが桁違いに簡単

589 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:11:56.12 ID:uJ/bSXez.net]
pythonのデバックでプログラムが何行目を通過したかて知る方法てあるの?
visual studio 2019を使っててF11でスッテプ実行てのが出来るんだけど、
1万行あったら1万行回F11叩くのか?てことになる。



590 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:34:50.69 ID:ckzMPuES.net]
>>589
F11連打しかしないとそうなるな
取説嫁

591 名前:デフォルトの名無しさん [2021/02/22(月) 10:21:35.37 ID:5/ri8a+l.net]
>>589
ifの質問してるのと同じ人?

592 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:43:27.55 ID:PW7vHVeo.net]
フレイクホイントを使ってテハックするのじゃ

593 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:55:31.74 ID:pI5eidjw.net]
何行目を通過したか知りたいって考え方をするのはプログラムの構造に問題があるから

594 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:05:19.36 ID:RHKTrh3L.net]
pythonじゃなくても普通bp貼るだろ。

595 名前:デフォルトの名無しさん [2021/02/22(月) 13:28:34.74 ID:zcTtu3Zr.net]
フレイクホイントが
フロントホックに見えてしまった(´・ω・`)

596 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:07:23.81 ID:aMOGcJaK.net]
>>589
ストップポイント指定するんだよ

んで次のステップポイントに飛ぶってのがある

597 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:07:41.17 ID:aMOGcJaK.net]
ブレイクポイントかw

598 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:37:49.37 ID:tvUSsQ8P.net]
3行のコードでも1万回ループしてたら
ステップオーバーを3万回叩かないと抜けられない

F11はステップインなのでどんどん潜る

599 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:45:11.64 ID:Ag9nXfNi.net]
VBAしかやったことないニワカだから、同じ疑問をずっと持ってた
自分の書いたコードの動作を一つずつ確認するために1行ずつ実行することがよくあったんだけど
pythonだと、極端なこと言えば1行ごとにブレイクポイントを挟まないといけないってこと?



600 名前:デフォルトの名無しさん [2021/02/22(月) 14:59:58.20 ID:DIDXVj1p.net]
標準添付のデバッガ(PDB)やIDE(VSCodeなど)でも普通にできる。

601 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:25:22.70 ID:nmugGdcj.net]
>>599
んなわけない

602 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:31:46.21 ID:PGV0X2RH.net]
デバッガの使い方なんてどの言語でも一緒

ブレイクポイントの設定
ステップオーバー
ステップイン
ステップアウト
コンティニュー

この5つを理解すればいいだけ
プログラミング学習の初日に習う内容

603 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:42:31.40 ID:uJ/bSXez.net]
新入社員でcobolやったときは最初から最後までトレースとったぞ。
人は意図的にバグを作り込むわけじゃないから、ストップポイント指定なんてナンセンス。
事前に指定しても、それ以外のところでエラーするのが当たり前。
事前にストップポイントやらブレイクポイントを指定なんて無駄だよ。

604 名前:デフォルトの名無しさん [2021/02/22(月) 15:47:47.63 ID:DIDXVj1p.net]
なんだろう。
COBOLだってプログラミング言語のはずなんだが、こうも考え方のピントがズレるもんかね。

605 名前:デフォルトの名無しさん [2021/02/22(月) 15:49:02.61 ID:65ZJFDMb.net]
Python関係ないよね
デバッグのやり方教えて終わりでいいでしょ

606 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:54:55.08 ID:AYpKHnjf.net]
>>603
よく分からんけど普通デバッグって
・エラー出た個所とエラーメッセージを確認する
・エラー出た個所にブレイクポイント設定しつつ、関連して怪しそうな所にもブレイクポイントを再度動作させる
・後はデバッガで変数値とか確認しながら原因付き留める

動かす度に止まる場所が変わる、とかでもない限りこれで十分じゃね?
あと何行目を通過したか?っていう質問の時点で
トレースされたエラーメッセージ見てないのか?っていう気はしてるけど……

607 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:55:51.44 ID:Xis0SD1d.net]
>>604
COBOLはデータ処理のフローを小さなステップに分割して、そのステップ毎にプログラムを分割するのが普通で、
一つ一つのステップは構造化もクソもなくただ命令を平べったく羅列するだけ、というのが一般的
Pythonでいう数行から百行程度の関数一つ一つがCOBOLでは1000行くらいに膨れ上がって、それぞれが別個のプログラムになってるのを想像すれば、彼の気持ちを理解できるだろう

608 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:42:38.45 ID:hC2BZM1+.net]
COBOLだってデバッガの基本的な使い方はPythonと全く同じ

プログラム全体をステップ実行したいならエントリポイントにブレークポイント置いてステップ実行して行くだけ
学習目的以外では普通やらないけど

Pythonでもトレースはとれる
それも時間の無駄なのでまずやらない

609 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:14:24.97 ID:ckzMPuES.net]
>>595
もるだーつかれてるネー



610 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:15:37.44 ID:ckzMPuES.net]
>>602
それプログラミング基礎ちゃう
デバッグ基礎や

>>604
コボルドって基本犬頭だからね

611 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 18:24:34.17 ID:KlgM0RdP.net]
COBOL奴か

612 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 18:30:34.39 ID:5xkEJHnL.net]
コボおじw

613 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:53:28.96 ID:G30bzgiW.net]
デバッグとかprint文挿入でいいんじゃ

614 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 22:09:55.16 ID:sB1O4QV3.net]
手軽なテキストエディタでprint()利用のデバッグはあなどれない

615 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 22:55:29.56 ID:sQpMvYPW.net]
ある程度はprintデバッグで問題の発生する範囲を絞り込むよね。
データが20種10ループの処理を受けるときに200回とかステップ実行やってられないもの

616 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:07:05.13 ID:uJ/bSXez.net]
>>606
これはVS2019の問題かもしれんが、関数の中で止まると何行目で止まったか表示してくれない。
だからエラーが出た個所にブレイクポイントを設定することがまず大変。
F11で追わないとどこで止まったかわからない。

617 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:08:26.38 ID:UEjjQNjA.net]
エラーに行番号出てるでしょ

618 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:20:25.34 ID:uJ/bSXez.net]
>>617
関数を呼び出したところしか出てこない

619 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:00:43.61 ID:cTQNOv+R.net]
>>615
そういうのは条件付きのブレイクポイントを使う



620 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:03:58.11 ID:cTQNOv+R.net]
>>618
VS使わずコマンドラインから実行してエラーメッセージを確認

VS2019の問題だと思うならまず切り分けすべき

621 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 02:07:51.55 ID:fia5nfNQ.net]
関数の切り分けがそもそも糞なんだろ。
pythonでデバッガが必要なことなんてあんまりないぞ。cみたいなメモリがぶっ壊れるものならともかく。

622 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 06:54:54.23 ID:VpyuW4/O.net]
git bisectの使い方は覚えとくと便利やぞ

623 名前:デフォルトの名無しさん [2021/02/23(火) 08:54:05.78 ID:NUvCbrOs.net]
ハナから全部に、「今何行目」って表示出しとけw

624 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:56:11.05 ID:P6BTUA4m.net]
スレタイ嫁

625 名前:デフォルトの名無しさん [2021/02/23(火) 11:49:45.49 ID:XvdT4dfh.net]
python最大の特徴はC言語やってても余り使わない__main__など特殊変数を大量に見かけることだ
この奥深さはperlを超えてるが見た目の分かり易さは当然pythonに軍配が上がる

626 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:56:56.18 ID:wfTpwfxG.net]
清水の舞台から飛び降りるつもりでVS2019からpycharmに変えてみた。
pycharmてどこでエラーしたかわかるんだな。
VS2019はどこでエラーしたか不明な場合がたたある。
今までの苦労は何だったのだ?

627 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:25:37.67 ID:IRMSQgrY.net]
修行

628 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:33:34.02 ID:eeQBUcpI.net]
>>625
perlを超えてはいないだろ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<173KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef