[表示 : 全て 最新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 ###

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