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

■ このスレッドは過去ログ倉庫に格納されています
2021/01/09(土) 05:22:25.24ID:IpHIsox4
当スレに★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公式サイト◇ http://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 ###
2021/02/21(日) 14:31:13.67ID:UiySRn99
わざわざ分けなくても datatime で持てば良くない?
2021/02/21(日) 14:36:40.26ID:9qukVfwV
>>582
COBOLの知識は完全に全て忘れろ。今すぐに。
Pythonでは固定長レコードは一切使わない。CSVやJSONのような可変長データを使う。
2021/02/21(日) 16:54:13.00ID:3wKXGD51
>>582
プログラム内の表現として扱うという意味なら自分でクラスを定義するだけ

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

COBOLで書き出した構造化ファイルのデータをPythonから扱えるかという意味なら
ファイルフォーマット次第だけど簡単には扱えない
CSVとかのテキストフォーマットに書き出したものをPythonで読み込むほうが桁違いに簡単
2021/02/22(月) 08:11:56.12ID:uJ/bSXez
pythonのデバックでプログラムが何行目を通過したかて知る方法てあるの?
visual studio 2019を使っててF11でスッテプ実行てのが出来るんだけど、
1万行あったら1万行回F11叩くのか?てことになる。
2021/02/22(月) 08:34:50.69ID:ckzMPuES
>>588
F11連打しかしないとそうなるな
取説嫁
590デフォルトの名無しさん
垢版 |
2021/02/22(月) 10:21:35.37ID:5/ri8a+l
>>588
ifの質問してるのと同じ人?
2021/02/22(月) 10:43:27.55ID:PW7vHVeo
フレイクホイントを使ってテハックするのじゃ
2021/02/22(月) 10:55:31.74ID:pI5eidjw
何行目を通過したか知りたいって考え方をするのはプログラムの構造に問題があるから
2021/02/22(月) 11:05:19.36ID:RHKTrh3L
pythonじゃなくても普通bp貼るだろ。
594デフォルトの名無しさん
垢版 |
2021/02/22(月) 13:28:34.74ID:zcTtu3Zr
フレイクホイントが
フロントホックに見えてしまった(´・ω・`)
2021/02/22(月) 14:07:23.81ID:aMOGcJaK
>>588
ストップポイント指定するんだよ

んで次のステップポイントに飛ぶってのがある
2021/02/22(月) 14:07:41.17ID:aMOGcJaK
ブレイクポイントかw
2021/02/22(月) 14:37:49.37ID:tvUSsQ8P
3行のコードでも1万回ループしてたら
ステップオーバーを3万回叩かないと抜けられない

F11はステップインなのでどんどん潜る
2021/02/22(月) 14:45:11.64ID:Ag9nXfNi
VBAしかやったことないニワカだから、同じ疑問をずっと持ってた
自分の書いたコードの動作を一つずつ確認するために1行ずつ実行することがよくあったんだけど
pythonだと、極端なこと言えば1行ごとにブレイクポイントを挟まないといけないってこと?
599デフォルトの名無しさん
垢版 |
2021/02/22(月) 14:59:58.20ID:DIDXVj1p
標準添付のデバッガ(PDB)やIDE(VSCodeなど)でも普通にできる。
2021/02/22(月) 15:25:22.70ID:nmugGdcj
>>598
んなわけない
2021/02/22(月) 15:31:46.21ID:PGV0X2RH
デバッガの使い方なんてどの言語でも一緒

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

この5つを理解すればいいだけ
プログラミング学習の初日に習う内容
2021/02/22(月) 15:42:31.40ID:uJ/bSXez
新入社員でcobolやったときは最初から最後までトレースとったぞ。
人は意図的にバグを作り込むわけじゃないから、ストップポイント指定なんてナンセンス。
事前に指定しても、それ以外のところでエラーするのが当たり前。
事前にストップポイントやらブレイクポイントを指定なんて無駄だよ。
603デフォルトの名無しさん
垢版 |
2021/02/22(月) 15:47:47.63ID:DIDXVj1p
なんだろう。
COBOLだってプログラミング言語のはずなんだが、こうも考え方のピントがズレるもんかね。
604デフォルトの名無しさん
垢版 |
2021/02/22(月) 15:49:02.61ID:65ZJFDMb
Python関係ないよね
デバッグのやり方教えて終わりでいいでしょ
2021/02/22(月) 15:54:55.08ID:AYpKHnjf
>>602
よく分からんけど普通デバッグって
・エラー出た個所とエラーメッセージを確認する
・エラー出た個所にブレイクポイント設定しつつ、関連して怪しそうな所にもブレイクポイントを再度動作させる
・後はデバッガで変数値とか確認しながら原因付き留める

動かす度に止まる場所が変わる、とかでもない限りこれで十分じゃね?
あと何行目を通過したか?っていう質問の時点で
トレースされたエラーメッセージ見てないのか?っていう気はしてるけど……
2021/02/22(月) 15:55:51.44ID:Xis0SD1d
>>603
COBOLはデータ処理のフローを小さなステップに分割して、そのステップ毎にプログラムを分割するのが普通で、
一つ一つのステップは構造化もクソもなくただ命令を平べったく羅列するだけ、というのが一般的
Pythonでいう数行から百行程度の関数一つ一つがCOBOLでは1000行くらいに膨れ上がって、それぞれが別個のプログラムになってるのを想像すれば、彼の気持ちを理解できるだろう
2021/02/22(月) 16:42:38.45ID:hC2BZM1+
COBOLだってデバッガの基本的な使い方はPythonと全く同じ

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

Pythonでもトレースはとれる
それも時間の無駄なのでまずやらない
2021/02/22(月) 17:14:24.97ID:ckzMPuES
>>594
もるだーつかれてるネー
2021/02/22(月) 17:15:37.44ID:ckzMPuES
>>601
それプログラミング基礎ちゃう
デバッグ基礎や

>>603
コボルドって基本犬頭だからね
2021/02/22(月) 18:24:34.17ID:KlgM0RdP
COBOL奴か
2021/02/22(月) 18:30:34.39ID:5xkEJHnL
コボおじw
2021/02/22(月) 21:53:28.96ID:G30bzgiW
デバッグとかprint文挿入でいいんじゃ
2021/02/22(月) 22:09:55.16ID:sB1O4QV3
手軽なテキストエディタでprint()利用のデバッグはあなどれない
2021/02/22(月) 22:55:29.56ID:sQpMvYPW
ある程度はprintデバッグで問題の発生する範囲を絞り込むよね。
データが20種10ループの処理を受けるときに200回とかステップ実行やってられないもの
2021/02/22(月) 23:07:05.13ID:uJ/bSXez
>>605
これはVS2019の問題かもしれんが、関数の中で止まると何行目で止まったか表示してくれない。
だからエラーが出た個所にブレイクポイントを設定することがまず大変。
F11で追わないとどこで止まったかわからない。
2021/02/22(月) 23:08:26.38ID:UEjjQNjA
エラーに行番号出てるでしょ
2021/02/22(月) 23:20:25.34ID:uJ/bSXez
>>616
関数を呼び出したところしか出てこない
2021/02/23(火) 00:00:43.61ID:cTQNOv+R
>>614
そういうのは条件付きのブレイクポイントを使う
2021/02/23(火) 00:03:58.11ID:cTQNOv+R
>>617
VS使わずコマンドラインから実行してエラーメッセージを確認

VS2019の問題だと思うならまず切り分けすべき
2021/02/23(火) 02:07:51.55ID:fia5nfNQ
関数の切り分けがそもそも糞なんだろ。
pythonでデバッガが必要なことなんてあんまりないぞ。cみたいなメモリがぶっ壊れるものならともかく。
2021/02/23(火) 06:54:54.23ID:VpyuW4/O
git bisectの使い方は覚えとくと便利やぞ
622デフォルトの名無しさん
垢版 |
2021/02/23(火) 08:54:05.78ID:NUvCbrOs
ハナから全部に、「今何行目」って表示出しとけw
2021/02/23(火) 08:56:11.05ID:P6BTUA4m
スレタイ嫁
624デフォルトの名無しさん
垢版 |
2021/02/23(火) 11:49:45.49ID:XvdT4dfh
python最大の特徴はC言語やってても余り使わない__main__など特殊変数を大量に見かけることだ
この奥深さはperlを超えてるが見た目の分かり易さは当然pythonに軍配が上がる
2021/02/23(火) 11:56:56.18ID:wfTpwfxG
清水の舞台から飛び降りるつもりでVS2019からpycharmに変えてみた。
pycharmてどこでエラーしたかわかるんだな。
VS2019はどこでエラーしたか不明な場合がたたある。
今までの苦労は何だったのだ?
2021/02/23(火) 12:25:37.67ID:IRMSQgrY
修行
2021/02/23(火) 12:33:34.02ID:eeQBUcpI
>>624
perlを超えてはいないだろ。
2021/02/23(火) 15:14:47.37
19日に公開された Python 3.9.2 および 3.8.8 で >>515 の脆弱性が塞がれたんですね
修正かくにん!

   よかった
2021/02/23(火) 15:51:15.44ID:UCRFxBi6
ThreadPoolExecuterを使って画面の表示を更新しているのですが、
5つくらいスレッドを並行していると処理が重くなってきます。
ThreadPoolExecuterで実行しているスレッド数で、更新の頻度を変えるにはどういう実装をしたら良いでしょうか。
ThreadPoolExecuterは実行中のスレッド数は見ることが出来なかったです。
2021/02/23(火) 17:20:54.21ID:dRf/T0UJ
max_workersオプションを5以下にすれば良いのでは
2021/02/23(火) 17:35:39.23ID:UCRFxBi6
ありがとうございます、
ただ、画面更新とか裏での計算に使っているので、、それぞれが必要なスレッドなのです。。
2021/02/23(火) 19:21:56.48ID:heAX5esq
そうは言ってもCPUが足りてないのだろうから
重くなるのはどうしようもない
画面処理とかOSがCPUを使えるようにスレッド数を制限すれば
軽く感じる可能性はあるんじゃ
2021/02/23(火) 21:00:20.33ID:dRf/T0UJ
スレッドじゃなくてプロセスにしちゃうとか
2021/02/24(水) 02:16:24.82ID:CQQJwOCp
パイチャームの方がいいの?
2021/02/24(水) 07:05:02.19ID:LMkBx6gV
pythonのエラー処理てどのページもtry-exceptを使えて書いてあるけど、
try節以外で発生したエラーはどうするの?
エラーは作り手がtryの中に入れなかったところ以外でも発生するものだよね?
pythonてtryの中以外では絶対にエラーが発生しないものなの?
エラーが発生したらここに飛べてできないの?
2021/02/24(水) 07:16:58.73ID:DnTJTT30
最初から最後までtry-exceptの中に入れろ
2021/02/24(水) 08:50:21.17ID:Aqfq6kO9
チャレンジ
638デフォルトの名無しさん
垢版 |
2021/02/24(水) 10:01:18.51ID:9y8r/1OE
>>635
エラーがおきたらそれより先は進まずに、どこでどんなエラーが起きたか教えてくれるように出来てるので安心してください
2021/02/24(水) 10:14:31.53ID:a2nKO+B9
言語に関係ないプログラミングの基礎を理解してないにもかかわらず
「pythonでは〜できないの?」と毎日聞くやつは学習方法が間違ってると思うぞ
640デフォルトの名無しさん
垢版 |
2021/02/24(水) 11:26:58.48ID:cfx9fHIS
>>639
毎日同じこと聞くのは
○国人の習性だからwww.
2021/02/24(水) 11:31:22.80ID:SnbZdOj2
プログラミングの入門として使われることも多いpythonの、
それも超初心者用のスレで、それを言うのは野暮ではないかね
2021/02/24(水) 11:43:39.32ID:EH/DbHjP
python以外の言語を習得しているかのような質問の仕方がダメなんだろ
基礎を理解してないということを理解してないのが問題
643デフォルトの名無しさん
垢版 |
2021/02/24(水) 11:55:02.38ID:aiTBro5g
>>635
try節以外でエラーが発生したらプログラムが停止する
エラー発生の可能性があって、特に対処したい部分にtry節を使う
python特有の話じゃないが
2021/02/24(水) 11:55:06.93ID:jCbAP6tB
初心者スレでそれ言ってもしょうがない
2021/02/24(水) 12:24:45.37ID:clp8d1Sx
コボおじは戻り値だけで判定してきたから例外が何かを知らないってことだよ
気持ちを汲んでやれ
2021/02/24(水) 12:30:33.09ID:CLu4HI+L
Goおじ「・・・」
2021/02/24(水) 13:07:22.50ID:LMkBx6gV
>>643
いまseleniumでchromeを動かしてスクレイピングをするプログラムを作ってるんだが、
スクレイピングだからネットの状態によってはすべての箇所でエラーが発生する。
てことはすべての行をtry節に入れるてことになるの?
エラーが起きたらchromeを閉じて次のプログラムを走らせたいんだが、
エラーが起きて止まったら困る。
on errorみたいなやつがあれば助かるんだが。
2021/02/24(水) 13:17:56.15ID:Xj3zAfy1
>>647
そもそも初心者はスクレイピングするもんじゃない
やめとけ
649デフォルトの名無しさん
垢版 |
2021/02/24(水) 13:35:57.65ID:jCbAP6tB
>>647

import スーパーすごいぼくのseleniumモジュール

try:
____スーパーすごいぼくのseleniumモジュールを実行
except 例外1:
____例外1の処理
except 例外2:
____例外1の処理
except:
____ほかの例外全部の処理

こんだけだよ
ちょっと頭かたすぎなんじゃねーかと
2021/02/24(水) 14:04:57.70ID:2cGpZtVv
みえる
みえるぞ…
>>647がタイーホされるみらいが…!
2021/02/24(水) 14:49:12.40ID:0d7ZIMo6
pythonの例外処理は
elseとfinallyが地味に便利だったりする
2021/02/24(水) 14:57:15.43ID:7Ynmy8c9
finallyは他の言語でも見るけどelseは見たことないな
他の言語でも取り入れて欲しいわ
2021/02/24(水) 15:22:24.12ID:2cGpZtVv
>>652
VBスクリプト・・・
654デフォルトの名無しさん
垢版 |
2021/02/24(水) 17:09:14.43ID:1iaQM7ct
tryのelseは、流れが分かり易くなるよね。正常系なのにelseという名前に若干引っ掛かるが。
whileのelseは、使わないけどあってもいいか。もともとBooleanで判定しているからね。
forのelseは、初見では絶対にわからないだろこれ、思考の妨げになるだけで邪魔。
655デフォルトの名無しさん
垢版 |
2021/02/24(水) 17:09:51.85ID:aiTBro5g
for〜elseが何気に使えるから他言語にも取り入れられて欲しい
2021/02/24(水) 17:17:33.14ID:1BXBrSOO
for else嫌いだな
フラグ立てた方が明確
657デフォルトの名無しさん
垢版 |
2021/02/24(水) 18:12:35.29ID:FNeBH8xI
在日が知らないだけだろ
2021/02/24(水) 18:21:58.41ID:9gaCPeun
tryのelseもwhile/forのelseも意義を見いだせないな

Effectiee Pythonではwhileとforのelseは使うな
tryのelseは活用しろとあったがtry/elseの例はすげー微妙なコードだった
2021/02/24(水) 18:40:11.47ID:7Ynmy8c9
for〜else使えるのにフラグとかないし思考の妨げとか単に慣れてねーだけだろ
2021/02/24(水) 19:38:52.19ID:OePWDmP0
コロナ対策と同じで自分以外の人の
ために使わないでほしい
661デフォルトの名無しさん
垢版 |
2021/02/24(水) 20:08:35.09ID:FNeBH8xI
在日クソチョン乙
2021/02/24(水) 20:16:04.49ID:CLu4HI+L
俺が理解できないから他の奴も使うな!
俺が馬鹿みたいに見えるだろ!!
2021/02/24(水) 20:29:16.98ID:RQHABlQe
elseもfinallyも使いどころがわからん
elseはtry内に書けばいいしfinallyはただ最後に付け足せば両方通る
2021/02/24(水) 20:34:52.22ID:RutGemqn
>>663
俺もそう思う。
2021/02/24(水) 20:39:23.92ID:lUgQ+/6Y
>>663
こーゆーの初学者にはありがたい
2021/02/24(水) 20:45:52.10ID:lUgQ+/6Y
日本語化されてなくても良いのですが、muエディタのように一行ずつ添削してくれるやつでオススメってあります?
2021/02/24(水) 20:49:56.05ID:1BXBrSOO
>>659
慣れてないっていうか他の言語も当然使うからPythonに戻って来た時混乱するのよ
混乱するならそもそも使わない方が良い
Pythonしか使わないならそれで良いんだろうけどね
2021/02/24(水) 21:00:34.63ID:CQQJwOCp
>>663
エラーでメッセージ出ても止まらないようにするんじゃなかったけ?
サーバーからデータ取れなくても空白文字入れたり
無理やり戻ったり
2021/02/24(水) 21:24:17.14ID:9gaCPeun
>>663
finallyは最後に付け足しても両方通らないよ
2021/02/24(水) 21:51:54.78ID:jNf+xxX4
try内でreturnやbreakした時もelse/finallyは実行される
2021/02/24(水) 21:57:40.34ID:2cGpZtVv
>>667
> 戻って来た時混乱するのよ
> 混乱するならそもそも使わない方が良い
「英語話すと日本語に戻ってきたとき混乱するから
英語使いません!」とおなじこといってるぞ
あふぉ自慢はあったまさらにわるくみえるぞ
2021/02/24(水) 22:10:30.68ID:CLu4HI+L
喩えうまいなw
2021/02/24(水) 22:22:28.79ID:HJ50OjUD
>>669
「両方通らないよ」は
「片方しか通らない」なのか
「全く通らない」なのか分からないよ。
2021/02/24(水) 22:24:22.09ID:7Ynmy8c9
>>663
そりゃそんな理解力だとfinallyもelseも使いどころかわからんわな
てか、例外使っちゃダメレベル
2021/02/24(水) 22:25:50.95ID:9gaCPeun
これはelse使ったほうがいいだろっていうtry/elseのコードない?

Effective Pythonの「Item 65: Take Advantage of Each Block in try/except /else/finally」に書いてあったサンプルコードはこれ
https://www.techiedelight.com/compiler/?VLdi
これ見てもelseを使いたくはならない
2021/02/24(水) 22:28:26.74ID:7Ynmy8c9
>>667
まあ一瞬混乱したりなんでこの機能ねーんだよとかはあるけどそんなの言い出したらキリなくね?
言語や環境によってライブラリなんかも違うし
2021/02/24(水) 22:31:11.53ID:avHANqSb
混乱しないように全部の行にセミコロンをつけなきゃ!
2021/02/24(水) 22:42:05.45ID:9gaCPeun
Pythonだけでも
if-else、while/for-else、try-elseのそれぞれのelseで
んん?ってなる

loopのelseはbreak-or-elseのelse
tryのelseはexcept-or-elseのelse
と理解すれば意味はわかるがif-elseと違い過ぎるから
よほどのメリットがある場合じゃなければ使おうとは思わない
2021/02/24(水) 22:49:17.28ID:GQvsnMXY
>>632さん、>>633さん
ありがとうございます、もう少し調べてみます。
プロセスとスレッドの違いがいまいちわかってないですが、コレも日々勉強ですね
2021/02/24(水) 23:53:39.31ID:2cGpZtVv
>>672
ありがとーん

>>677
おもたおもた、最初おもた!www
681デフォルトの名無しさん
垢版 |
2021/02/25(木) 02:12:11.24ID:291z1RhV
質問です。

jupiter (旧jupiter notebook)上でpythonを動かす際、処理が飛ばされることがあるのですが、これと同じ状況になられた方はいらっしゃいますでしょうか? また、このようなことはありえるのでしょうか?

ご回答お願い致します
2021/02/25(木) 03:15:47.41ID:PF1Nn8ga
「ノートブックには数え切れないほどの隠された状態があり、簡単にめちゃくちゃになってしまい、論理的に考えるの難しい。」by Joel Grus

I Don't Like Notebooks
https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/mobilepresent?slide=id.g362da58057_0_1
2021/02/25(木) 09:39:32.72ID:HDmJbLoC
ウィンドウのキャプチャーを撮って、動画にするアプリを作っているのですが、
下記部分で特定の回数実行すると9969回目で下記エラーとなります。
エラーメッセージで検索すると、DeleteDCの前に古いビットマップを戻すようなアドバイスがあったのですが、
意味がよくわからず、どなたかお助けお願いできませんでしょうか。
こちらの環境は3.8で、9969回目にエラーが出ました。

エラーメッセージ
   CreateCompatibleDC failed

ソースコード
for Z in range(10000):

print(Z)
# ウィンドウのデバイスコンテキスト取得
windc = win32gui.GetWindowDC(hnd)
srcdc = win32ui.CreateDCFromHandle(windc)
memdc = srcdc.CreateCompatibleDC()
# デバイスコンテキストからピクセル情報コピー, bmp化
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, 100, 200)

memdc.SelectObject(bmp)
memdc.BitBlt((0,0), (100, 200), srcdc, (0, 0), win32con.SRCCOPY)
# 後片付け
# srcdc.DeleteDC()
memdc.DeleteDC()
# win32gui.ReleaseDC(hnd, windc)
win32gui.DeleteObject(bmp.GetHandle())
2021/02/25(木) 11:19:59.37ID:wUmGW86/
9969ってのは、GDIオブジェクトの最大数にひっかかってるような気がする
リリースしてないハンドルとかがないかチェックしてみては?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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